diff --git a/types/index.ts b/types/index.ts index d755396..7fe8079 100644 --- a/types/index.ts +++ b/types/index.ts @@ -5,24 +5,16 @@ interface WakatimeData { export interface Stats { coding: { - data: { - grand_total: { - total_seconds_including_other_language: number - } - range: { - start: string - } + grand_total: { + total_seconds_including_other_language: number + } + range: { + start: string } } - editors: { - data: WakatimeData[] - } - os: { - data: WakatimeData[] - } - languages: { - data: WakatimeData[] - } + editors: WakatimeData[] + os: WakatimeData[] + languages: WakatimeData[] } interface LanyardActivity { @@ -51,78 +43,6 @@ export const IDEs = [ { name: 'Cursor', icon: 'i-vscode-icons-file-type-cursorrules' } ] as const -type TimeUnit = (n: number, past?: boolean) => string -type TimeFormatter = (n: string) => string - -interface ActivityMessages { - justNow: string - past: TimeFormatter - future: TimeFormatter - month: TimeUnit - year: TimeUnit - day: TimeUnit - week: TimeUnit - hour: TimeUnit - minute: TimeUnit - second: TimeUnit - invalid: string -} - -function createTimeUnit(singular: string, plural: string, pastSingular?: string, futureSingular?: string): TimeUnit { - return (n: number, past = true) => { - if (n === 1) { - return past ? (pastSingular || `last ${singular}`) : (futureSingular || `next ${singular}`) - } - return `${n} ${plural}` - } -} - -function createSimpleTimeUnit(unit: string): TimeUnit { - return (n: number) => `${n} ${unit}${n > 1 ? 's' : ''}` -} - -export const activityMessages: Record<'en' | 'fr' | 'es', ActivityMessages> = { - en: { - justNow: 'just now', - past: (n: string) => n.match(/\d/) ? `${n} ago` : n, - future: (n: string) => n.match(/\d/) ? `in ${n}` : n, - month: createTimeUnit('month', 'months'), - year: createTimeUnit('year', 'years'), - day: createTimeUnit('day', 'days', 'yesterday', 'tomorrow'), - week: createTimeUnit('week', 'weeks'), - hour: createSimpleTimeUnit('hour'), - minute: createSimpleTimeUnit('minute'), - second: createSimpleTimeUnit('second'), - invalid: '' - }, - fr: { - justNow: 'à l\'instant', - past: (n: string) => n.match(/\d/) ? `il y a ${n}` : n, - future: (n: string) => n.match(/\d/) ? `dans ${n}` : n, - month: (n: number, past = true) => n === 1 ? (past ? 'le mois dernier' : 'le mois prochain') : `${n} mois`, - year: (n: number, past = true) => n === 1 ? (past ? 'l\'année dernière' : 'l\'année prochaine') : `${n} ans`, - day: (n: number, past = true) => n === 1 ? (past ? 'hier' : 'demain') : `${n} jours`, - week: (n: number, past = true) => n === 1 ? (past ? 'la semaine dernière' : 'la semaine prochaine') : `${n} semaines`, - hour: createSimpleTimeUnit('heure'), - minute: createSimpleTimeUnit('minute'), - second: createSimpleTimeUnit('seconde'), - 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 = true) => n === 1 ? (past ? 'el mes pasado' : 'el próximo mes') : `${n} meses`, - year: (n: number, past = true) => n === 1 ? (past ? 'el año pasado' : 'el próximo año') : `${n} años`, - day: (n: number, past = true) => n === 1 ? (past ? 'ayer' : 'mañana') : `${n} días`, - week: (n: number, past = true) => n === 1 ? (past ? 'la semana pasada' : 'la próxima semana') : `${n} semanas`, - hour: createSimpleTimeUnit('hora'), - minute: createSimpleTimeUnit('minuto'), - second: createSimpleTimeUnit('segundo'), - invalid: '' - } -} - export const socials = [ { icon: 'i-ph-x-logo-duotone', label: 'Twitter', to: 'https://go.arthurdanjou.fr/twitter' }, { icon: 'i-ph-github-logo-duotone', label: 'GitHub', to: 'https://go.arthurdanjou.fr/github' }, @@ -130,22 +50,21 @@ export const socials = [ { icon: 'i-ph-discord-logo-duotone', label: 'Discord', to: 'https://go.arthurdanjou.fr/discord' } ] as const -type Locale = 'en' | 'fr' | 'es' - interface Nav { - label: Record + label: string to: string icon?: string target?: string } export const navs: readonly Nav[] = [ - { label: { en: 'home', fr: 'accueil', es: 'inicio' }, to: '/', icon: 'house-duotone' }, - { label: { en: 'chat', fr: 'chat', es: 'chat' }, to: '/chat', icon: 'chat-circle-dots-duotone' }, + { label: 'home', to: '/', icon: 'house-duotone' }, + { label: 'projects', to: '/projects', icon: 'folder-duotone' }, + { label: 'stats', to: '/stats', icon: 'chart-bar-duotone' }, { - label: { en: 'resume', fr: 'cv', es: 'currículum' }, + label: 'resume', icon: 'address-book-duotone', - to: 'https://api.arthurdanjou.fr/api/resumes/en', + to: 'resumes/en', target: '_blank' } ] as const