Files
artsite/types.ts
Arthur DANJOU bbc573e290 Refactor: Split portfolio to projects and writings sections, and update content structure
- Renamed 'portfolio' collection to 'projects' in content configuration.
- Introduced a new 'writings' collection with corresponding schema.
- Updated README to reflect changes in content structure and navigation.
- Removed the old portfolio page and added new pages for projects and writings.
- Added multiple new project and writing markdown files with relevant content.
- Updated license year to 2025.
- Enhanced AppHeader for new navigation links.
- Improved ProseImg component styling.
2025-04-06 19:16:28 +02:00

173 lines
4.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
interface WakatimeData {
name: string
percent: number
}
export interface Stats {
coding: {
data: {
grand_total: {
total_seconds_including_other_language: number
}
range: {
start: string
}
}
}
editors: {
data: Array<WakatimeData>
}
os: {
data: Array<WakatimeData>
}
languages: {
data: Array<WakatimeData>
}
}
interface LanyardActivity {
name: string
state: string
details: string
timestamps: {
start: number
}
}
export interface Activity {
data: {
activities: Array<LanyardActivity>
}
}
export const IDEs = [
{ name: 'Visual Studio Code', icon: 'i-logos:visual-studio-code' },
{ name: 'IntelliJ IDEA Ultimate', icon: 'i-logos:intellij-idea' },
{ name: 'WebStorm', icon: 'i-logos:webstorm' },
{ name: 'PyCharm Professional', icon: 'i-logos:pycharm' },
]
export const activityMessages = {
en: {
justNow: 'just now',
past: (n: string) => (n.match(/\d/) ? `${n} ago` : n),
future: (n: string) => (n.match(/\d/) ? `in ${n}` : n),
month: (n: number, past: boolean) =>
n === 1 ? (past ? 'last month' : 'next month') : `${n} month${n > 1 ? 's' : ''}`,
year: (n: number, past: boolean) =>
n === 1 ? (past ? 'last year' : 'next year') : `${n} year${n > 1 ? 's' : ''}`,
day: (n: number, past: boolean) =>
n === 1 ? (past ? 'yesterday' : 'tomorrow') : `${n} day${n > 1 ? 's' : ''}`,
week: (n: number, past: boolean) =>
n === 1 ? (past ? 'last week' : 'next week') : `${n} week${n > 1 ? 's' : ''}`,
hour: (n: number) => `${n} hour${n > 1 ? 's' : ''}`,
minute: (n: number) => `${n} minute${n > 1 ? 's' : ''}`,
second: (n: number) => `${n} second${n > 1 ? 's' : ''}`,
invalid: '',
},
fr: {
justNow: 'à linstant',
past: (n: string) => (n.match(/\d/) ? `il y a ${n}` : n),
future: (n: string) => (n.match(/\d/) ? `dans ${n}` : n),
month: (n: number, past: boolean) =>
n === 1 ? (past ? 'le mois dernier' : 'le mois prochain') : `${n} mois`,
year: (n: number, past: boolean) =>
n === 1 ? (past ? 'lannée dernière' : 'lannée prochaine') : `${n} ans`,
day: (n: number, past: boolean) =>
n === 1 ? (past ? 'hier' : 'demain') : `${n} jours`,
week: (n: number, past: boolean) =>
n === 1 ? (past ? 'la semaine dernière' : 'la semaine prochaine') : `${n} semaines`,
hour: (n: number) => `${n} heure${n > 1 ? 's' : ''}`,
minute: (n: number) => `${n} minute${n > 1 ? 's' : ''}`,
second: (n: number) => `${n} seconde${n > 1 ? 's' : ''}`,
invalid: '',
},
es: {
justNow: 'justo ahora',
past: (n: string) => (n.match(/\d/) ? `hace ${n}` : n),
future: (n: string) => (n.match(/\d/) ? `dentro de ${n}` : n),
month: (n: number, past: boolean) =>
n === 1 ? (past ? 'el mes pasado' : 'el próximo mes') : `${n} meses`,
year: (n: number, past: boolean) =>
n === 1 ? (past ? 'el año pasado' : 'el próximo año') : `${n} años`,
day: (n: number, past: boolean) =>
n === 1 ? (past ? 'ayer' : 'mañana') : `${n} días`,
week: (n: number, past: boolean) =>
n === 1 ? (past ? 'la semana pasada' : 'la próxima semana') : `${n} semanas`,
hour: (n: number) => `${n} hora${n > 1 ? 's' : ''}`,
minute: (n: number) => `${n} minuto${n > 1 ? 's' : ''}`,
second: (n: number) => `${n} segundo${n > 1 ? 's' : ''}`,
invalid: '',
},
}
export interface Tag {
label: string
icon: string
color: string
title?: string
translation: string
}
export const TAGS: Array<Tag> = [
{
label: 'R',
icon: 'i-vscode-icons-file-type-r',
color: 'orange',
translation: 'tags.r',
},
{
label: 'AI',
icon: 'i-ph-brain-duotone',
color: 'green',
translation: 'tags.ai',
},
{
label: 'Data',
icon: 'i-ph-database-duotone',
color: 'purple',
translation: 'tags.data',
},
{
label: 'Web',
icon: 'i-ph-globe-duotone',
color: 'cyan',
translation: 'tags.web',
},
{
label: 'Python',
icon: 'i-vscode-icons-file-type-python',
color: 'amber',
translation: 'tags.python',
},
{
label: 'Maths',
icon: 'i-ph-calculator-duotone',
color: 'pink',
translation: 'tags.maths',
},
]
export const socials = [
{
icon: 'i-ph:x-logo-duotone',
label: 'Twitter',
to: 'https://twitter.com/ArthurDanj',
},
{
icon: 'i-ph:github-logo-duotone',
label: 'GitHub',
to: 'https://github.com/ArthurDanjou',
},
{
icon: 'i-ph:linkedin-logo-duotone',
label: 'LinkedIn',
to: 'https://www.linkedin.com/in/arthurdanjou/',
},
{
icon: 'i-ph:discord-logo-duotone',
label: 'Discord',
to: 'https://discordapp.com/users/179635349100691456',
},
]