@getdashfy/themes 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/googleFont.ts","../src/lib/fonts.ts","../src/themes/default.ts","../src/themes/kodamaGrove.ts","../src/themes/midnightBlue.ts","../src/themes/minimal.ts","../src/themes/nord.ts","../src/themes/index.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { ThemeFonts } from '@/types'\n\nexport const DEFAULT_FONTS_FALLBACK: Record<string, string> = {\n sans: 'ui-sans-serif, system-ui, sans-serif',\n serif: 'ui-serif, Georgia, serif',\n mono: 'ui-monospace, SFMono-Regular, monospace',\n}\n\nconst GOOGLE_FONTS_BASE = 'https://fonts.googleapis.com/css2'\n\nexport interface GoogleFontEntry {\n /** Font family name exactly as it appears on fonts.google.com (e.g. `'Source Serif 4'`). */\n family: string\n /** Numeric weights to load (default: `[400]`). */\n weights?: number[]\n /** Override the default fallback stack (e.g. `'serif'`). */\n fallback?: string\n}\n\nexport interface GoogleFontConfig {\n sans: GoogleFontEntry\n serif?: GoogleFontEntry\n mono: GoogleFontEntry\n}\n\n/**\n * Build a {@link ThemeFonts} object from a declarative config, so you never\n * have to hand-craft Google Fonts URLs or CSS variable fallback stacks.\n *\n * @example\n * ```ts\n * import { googleFont } from '@getdashfy/themes'\n *\n * const fonts = googleFont({\n * sans: { family: 'Merriweather', weights: [400, 500, 600, 700], fallback: 'serif' },\n * serif: { family: 'Source Serif 4', weights: [400, 500, 600, 700], fallback: 'serif' },\n * mono: { family: 'JetBrains Mono', weights: [400, 500, 600, 700] },\n * })\n * ```\n */\nexport function googleFont(config: GoogleFontConfig): ThemeFonts {\n const entries = Object.entries(config) as [keyof GoogleFontConfig, GoogleFontEntry][]\n\n const familyParams = entries\n .map(([, entry]) => {\n const encoded = entry.family.replace(/ /g, '+')\n const weights = entry.weights ?? [400]\n return `family=${encoded}:wght@${weights.join(';')}`\n })\n .join('&')\n\n const importHref = `${GOOGLE_FONTS_BASE}?${familyParams}&display=swap`\n\n const cssVar = (role: keyof GoogleFontConfig, entry: GoogleFontEntry) =>\n `\"${entry.family}\", ${entry.fallback ?? DEFAULT_FONTS_FALLBACK[role]}`\n\n const cssVariables: ThemeFonts['cssVariables'] = {\n '--font-sans': cssVar('sans', config.sans),\n '--font-mono': cssVar('mono', config.mono),\n }\n\n if (config.serif) {\n cssVariables['--font-serif'] = cssVar('serif', config.serif)\n }\n\n return { importHref, cssVariables }\n}\n","import { DEFAULT_FONTS_FALLBACK, googleFont } from './googleFont'\n\n/**\n * [Geist](https://fonts.google.com/specimen/Geist) + [Geist Mono](https://fonts.google.com/specimen/Geist+Mono) via the [Google Fonts CSS API](https://developers.google.com/fonts/docs/css2).\n * `applyTheme` injects `importHref` as `<link rel=\"stylesheet\">` on the document.\n */\nexport const DEFAULT_FONT = googleFont({\n sans: { family: 'Geist', weights: [400, 500, 600, 700] },\n mono: { family: 'Geist Mono', weights: [400, 500, 600, 700] },\n})\n\n/**\n * Geist Mono ([Google Fonts](https://fonts.google.com/specimen/Geist+Mono)).\n */\nexport const DEFAULT_FONT_MONO = googleFont({\n sans: {\n family: 'Geist Mono',\n weights: [400, 500, 600, 700],\n fallback: DEFAULT_FONTS_FALLBACK.mono,\n },\n mono: { family: 'Geist Mono', weights: [400, 500, 600, 700] },\n})\n","import { DEFAULT_FONT } from '@/lib/fonts'\nimport type { Theme } from '@/types'\n\n/**\n * Default theme for Dashfy (shadcn/ui default).\n */\nexport const defaultTheme: Theme = {\n id: 'default',\n name: 'default',\n displayName: 'Default',\n fonts: DEFAULT_FONT,\n light: {\n colors: {\n background: 'hsl(0 0% 100%)',\n foreground: 'hsl(240 10% 3.9%)',\n card: 'hsl(0 0% 100%)',\n cardForeground: 'hsl(240 10% 3.9%)',\n popover: 'hsl(0 0% 100%)',\n popoverForeground: 'hsl(240 10% 3.9%)',\n primary: 'hsl(240 5.9% 10%)',\n primaryForeground: 'hsl(0 0% 98%)',\n secondary: 'hsl(240 4.8% 95.9%)',\n secondaryForeground: 'hsl(240 5.9% 10%)',\n muted: 'hsl(240 4.8% 95.9%)',\n mutedForeground: 'hsl(240 3.8% 46.1%)',\n accent: 'hsl(240 4.8% 95.9%)',\n accentForeground: 'hsl(240 5.9% 10%)',\n destructive: 'hsl(0 84.2% 60.2%)',\n destructiveForeground: 'hsl(0 0% 98%)',\n success: 'hsl(142.1 76.2% 36.3%)',\n successForeground: 'hsl(0 0% 98%)',\n warning: 'hsl(38 92% 50%)',\n warningForeground: 'hsl(0 0% 98%)',\n error: 'hsl(0 84.2% 60.2%)',\n errorForeground: 'hsl(0 0% 98%)',\n info: 'hsl(199 89% 48%)',\n infoForeground: 'hsl(0 0% 98%)',\n border: 'hsl(240 5.9% 90%)',\n input: 'hsl(240 5.9% 90%)',\n ring: 'hsl(240 5.9% 10%)',\n chart1: 'hsl(12 76% 61%)',\n chart2: 'hsl(173 58% 39%)',\n chart3: 'hsl(197 37% 24%)',\n chart4: 'hsl(43 74% 66%)',\n chart5: 'hsl(27 87% 67%)',\n },\n cssVariables: {\n '--background': '0 0% 100%',\n '--foreground': '240 10% 3.9%',\n '--card': '0 0% 100%',\n '--card-foreground': '240 10% 3.9%',\n '--popover': '0 0% 100%',\n '--popover-foreground': '240 10% 3.9%',\n '--primary': '240 5.9% 10%',\n '--primary-foreground': '0 0% 98%',\n '--secondary': '240 4.8% 95.9%',\n '--secondary-foreground': '240 5.9% 10%',\n '--muted': '240 4.8% 95.9%',\n '--muted-foreground': '240 3.8% 46.1%',\n '--accent': '240 4.8% 95.9%',\n '--accent-foreground': '240 5.9% 10%',\n '--destructive': '0 84.2% 60.2%',\n '--destructive-foreground': '0 0% 98%',\n '--success': '142.1 76.2% 36.3%',\n '--success-foreground': '0 0% 98%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '0 0% 98%',\n '--error': '0 84.2% 60.2%',\n '--error-foreground': '0 0% 98%',\n '--info': '199 89% 48%',\n '--info-foreground': '0 0% 98%',\n '--border': '240 5.9% 90%',\n '--input': '240 5.9% 90%',\n '--ring': '240 5.9% 10%',\n '--radius': '0.5rem',\n '--chart-1': '12 76% 61%',\n '--chart-2': '173 58% 39%',\n '--chart-3': '197 37% 24%',\n '--chart-4': '43 74% 66%',\n '--chart-5': '27 87% 67%',\n },\n },\n dark: {\n colors: {\n background: 'hsl(240 10% 3.9%)',\n foreground: 'hsl(0 0% 98%)',\n card: 'hsl(240 10% 3.9%)',\n cardForeground: 'hsl(0 0% 98%)',\n popover: 'hsl(240 10% 3.9%)',\n popoverForeground: 'hsl(0 0% 98%)',\n primary: 'hsl(0 0% 98%)',\n primaryForeground: 'hsl(240 5.9% 10%)',\n secondary: 'hsl(240 3.7% 15.9%)',\n secondaryForeground: 'hsl(0 0% 98%)',\n muted: 'hsl(240 3.7% 15.9%)',\n mutedForeground: 'hsl(240 5% 64.9%)',\n accent: 'hsl(240 3.7% 15.9%)',\n accentForeground: 'hsl(0 0% 98%)',\n destructive: 'hsl(0 62.8% 30.6%)',\n destructiveForeground: 'hsl(0 0% 98%)',\n success: 'hsl(142.1 70.6% 45.3%)',\n successForeground: 'hsl(0 0% 10%)',\n warning: 'hsl(38 92% 50%)',\n warningForeground: 'hsl(0 0% 10%)',\n error: 'hsl(0 62.8% 30.6%)',\n errorForeground: 'hsl(0 0% 98%)',\n info: 'hsl(199 89% 48%)',\n infoForeground: 'hsl(0 0% 10%)',\n border: 'hsl(240 3.7% 15.9%)',\n input: 'hsl(240 3.7% 15.9%)',\n ring: 'hsl(240 4.9% 83.9%)',\n chart1: 'hsl(220 70% 50%)',\n chart2: 'hsl(160 60% 45%)',\n chart3: 'hsl(30 80% 55%)',\n chart4: 'hsl(280 65% 60%)',\n chart5: 'hsl(340 75% 55%)',\n },\n cssVariables: {\n '--background': '240 10% 3.9%',\n '--foreground': '0 0% 98%',\n '--card': '240 10% 3.9%',\n '--card-foreground': '0 0% 98%',\n '--popover': '240 10% 3.9%',\n '--popover-foreground': '0 0% 98%',\n '--primary': '0 0% 98%',\n '--primary-foreground': '240 5.9% 10%',\n '--secondary': '240 3.7% 15.9%',\n '--secondary-foreground': '0 0% 98%',\n '--muted': '240 3.7% 15.9%',\n '--muted-foreground': '240 5% 64.9%',\n '--accent': '240 3.7% 15.9%',\n '--accent-foreground': '0 0% 98%',\n '--destructive': '0 62.8% 30.6%',\n '--destructive-foreground': '0 0% 98%',\n '--success': '142.1 70.6% 45.3%',\n '--success-foreground': '0 0% 10%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '0 0% 10%',\n '--error': '0 62.8% 30.6%',\n '--error-foreground': '0 0% 98%',\n '--info': '199 89% 48%',\n '--info-foreground': '0 0% 10%',\n '--border': '240 3.7% 15.9%',\n '--input': '240 3.7% 15.9%',\n '--ring': '240 4.9% 83.9%',\n '--radius': '0.5rem',\n '--chart-1': '220 70% 50%',\n '--chart-2': '160 60% 45%',\n '--chart-3': '30 80% 55%',\n '--chart-4': '280 65% 60%',\n '--chart-5': '340 75% 55%',\n },\n },\n}\n","import { DEFAULT_FONTS_FALLBACK, googleFont } from '@/lib/googleFont'\nimport type { Theme } from '@/types'\n\nconst FONTS = googleFont({\n sans: {\n family: 'Merriweather',\n weights: [400, 500, 600, 700],\n fallback: DEFAULT_FONTS_FALLBACK.serif,\n },\n serif: {\n family: 'Source Serif 4',\n weights: [400, 500, 600, 700],\n fallback: DEFAULT_FONTS_FALLBACK.serif,\n },\n mono: { family: 'JetBrains Mono', weights: [400, 500, 600, 700] },\n})\n\n/**\n * Kodama Grove theme for Dashfy.\n *\n * @link https://tweakcn.com/editor/theme?theme=kodama-grove\n */\nexport const kodamaGroveTheme: Theme = {\n id: 'kodamaGrove',\n name: 'kodamaGrove',\n displayName: 'Kodama Grove',\n fonts: FONTS,\n light: {\n colors: {\n background: 'hsl(45 49.0566% 79.2157%)',\n foreground: 'hsl(26 19.4805% 30.1961%)',\n card: 'hsl(42 45.4545% 82.7451%)',\n cardForeground: 'hsl(26 19.4805% 30.1961%)',\n popover: 'hsl(43.6364 57.8947% 88.8235%)',\n popoverForeground: 'hsl(26 19.4805% 30.1961%)',\n primary: 'hsl(72.3077 33.0508% 46.2745%)',\n primaryForeground: 'hsl(42.8571 63.6364% 97.8431%)',\n secondary: 'hsl(44.5161 48.4375% 74.902%)',\n secondaryForeground: 'hsl(26 19.4805% 30.1961%)',\n muted: 'hsl(44.5161 48.4375% 74.902%)',\n mutedForeground: 'hsl(26.6667 11.2971% 46.8627%)',\n accent: 'hsl(43.9437 49.6503% 71.9608%)',\n accentForeground: 'hsl(26 19.4805% 30.1961%)',\n destructive: 'hsl(8.5714 54.491% 67.2549%)',\n destructiveForeground: 'hsl(45 44.4444% 96.4706%)',\n success: 'hsl(104.4444 11.2971% 46.8627%)',\n successForeground: 'hsl(42.8571 63.6364% 97.8431%)',\n warning: 'hsl(38 50% 55%)',\n warningForeground: 'hsl(26 19.4805% 30.1961%)',\n error: 'hsl(8.5714 54.491% 67.2549%)',\n errorForeground: 'hsl(45 44.4444% 96.4706%)',\n info: 'hsl(199 30% 55%)',\n infoForeground: 'hsl(42.8571 63.6364% 97.8431%)',\n border: 'hsl(26.25 23.5294% 60%)',\n input: 'hsl(43.9437 49.6503% 71.9608%)',\n ring: 'hsl(92.4324 19.171% 62.1569%)',\n chart1: 'hsl(92.4324 19.171% 62.1569%)',\n chart2: 'hsl(95 15.7895% 55.2941%)',\n chart3: 'hsl(102.8571 16.2791% 74.7059%)',\n chart4: 'hsl(104.4444 11.2971% 46.8627%)',\n chart5: 'hsl(103.6364 11.1111% 38.8235%)',\n },\n cssVariables: {\n '--background': '45 49.0566% 79.2157%',\n '--foreground': '26 19.4805% 30.1961%',\n '--card': '42 45.4545% 82.7451%',\n '--card-foreground': '26 19.4805% 30.1961%',\n '--popover': '43.6364 57.8947% 88.8235%',\n '--popover-foreground': '26 19.4805% 30.1961%',\n '--primary': '72.3077 33.0508% 46.2745%',\n '--primary-foreground': '42.8571 63.6364% 97.8431%',\n '--secondary': '44.5161 48.4375% 74.902%',\n '--secondary-foreground': '26 19.4805% 30.1961%',\n '--muted': '44.5161 48.4375% 74.902%',\n '--muted-foreground': '26.6667 11.2971% 46.8627%',\n '--accent': '43.9437 49.6503% 71.9608%',\n '--accent-foreground': '26 19.4805% 30.1961%',\n '--destructive': '8.5714 54.491% 67.2549%',\n '--destructive-foreground': '45 44.4444% 96.4706%',\n '--success': '104.4444 11.2971% 46.8627%',\n '--success-foreground': '42.8571 63.6364% 97.8431%',\n '--warning': '38 50% 55%',\n '--warning-foreground': '26 19.4805% 30.1961%',\n '--error': '8.5714 54.491% 67.2549%',\n '--error-foreground': '45 44.4444% 96.4706%',\n '--info': '199 30% 55%',\n '--info-foreground': '42.8571 63.6364% 97.8431%',\n '--border': '26.25 23.5294% 60%',\n '--input': '43.9437 49.6503% 71.9608%',\n '--ring': '92.4324 19.171% 62.1569%',\n '--radius': '0.425rem',\n '--chart-1': '92.4324 19.171% 62.1569%',\n '--chart-2': '95 15.7895% 55.2941%',\n '--chart-3': '102.8571 16.2791% 74.7059%',\n '--chart-4': '104.4444 11.2971% 46.8627%',\n '--chart-5': '103.6364 11.1111% 38.8235%',\n '--spacing': '0.25rem',\n '--tracking-normal': '0em',\n '--shadow-color': 'hsl(88 22% 35% / 0.15)',\n '--shadow-2xs': '3px 3px 2px 0px hsl(88 22% 35% / 0.07)',\n '--shadow-xs': '3px 3px 2px 0px hsl(88 22% 35% / 0.07)',\n '--shadow-sm':\n '3px 3px 2px 0px hsl(88 22% 35% / 0.15), 3px 1px 2px -1px hsl(88 22% 35% / 0.15)',\n '--shadow': '3px 3px 2px 0px hsl(88 22% 35% / 0.15), 3px 1px 2px -1px hsl(88 22% 35% / 0.15)',\n '--shadow-md':\n '3px 3px 2px 0px hsl(88 22% 35% / 0.15), 3px 2px 4px -1px hsl(88 22% 35% / 0.15)',\n '--shadow-lg':\n '3px 3px 2px 0px hsl(88 22% 35% / 0.15), 3px 4px 6px -1px hsl(88 22% 35% / 0.15)',\n '--shadow-xl':\n '3px 3px 2px 0px hsl(88 22% 35% / 0.15), 3px 8px 10px -1px hsl(88 22% 35% / 0.15)',\n '--shadow-2xl': '3px 3px 2px 0px hsl(88 22% 35% / 0.38)',\n },\n },\n dark: {\n colors: {\n background: 'hsl(42.3529 17.1717% 19.4118%)',\n foreground: 'hsl(38.4 40.9836% 88.0392%)',\n card: 'hsl(38.5714 12.069% 22.7451%)',\n cardForeground: 'hsl(38.4 40.9836% 88.0392%)',\n popover: 'hsl(38.5714 12.069% 22.7451%)',\n popoverForeground: 'hsl(38.4 40.9836% 88.0392%)',\n primary: 'hsl(95 15.7895% 55.2941%)',\n primaryForeground: 'hsl(26.6667 12% 14.7059%)',\n secondary: 'hsl(40 13.2075% 31.1765%)',\n secondaryForeground: 'hsl(38.4 40.9836% 88.0392%)',\n muted: 'hsl(38.8235 12.9771% 25.6863%)',\n mutedForeground: 'hsl(33.3333 9.375% 62.3529%)',\n accent: 'hsl(44.3478 27.2727% 49.6078%)',\n accentForeground: 'hsl(26.6667 12% 14.7059%)',\n destructive: 'hsl(9.6 33.6323% 56.2745%)',\n destructiveForeground: 'hsl(40 41.1765% 90%)',\n success: 'hsl(95 15.7895% 55.2941%)',\n successForeground: 'hsl(26.6667 12% 14.7059%)',\n warning: 'hsl(44.3478 27.2727% 49.6078%)',\n warningForeground: 'hsl(26.6667 12% 14.7059%)',\n error: 'hsl(9.6 33.6323% 56.2745%)',\n errorForeground: 'hsl(40 41.1765% 90%)',\n info: 'hsl(199 25% 48%)',\n infoForeground: 'hsl(40 41.1765% 90%)',\n border: 'hsl(40 13.2075% 31.1765%)',\n input: 'hsl(40 13.2075% 31.1765%)',\n ring: 'hsl(95 15.7895% 55.2941%)',\n chart1: 'hsl(95 15.7895% 55.2941%)',\n chart2: 'hsl(92.4324 19.171% 62.1569%)',\n chart3: 'hsl(104.4444 11.2971% 46.8627%)',\n chart4: 'hsl(44.3478 27.2727% 49.6078%)',\n chart5: 'hsl(103.6364 11.1111% 38.8235%)',\n },\n cssVariables: {\n '--background': '42.3529 17.1717% 19.4118%',\n '--foreground': '38.4 40.9836% 88.0392%',\n '--card': '38.5714 12.069% 22.7451%',\n '--card-foreground': '38.4 40.9836% 88.0392%',\n '--popover': '38.5714 12.069% 22.7451%',\n '--popover-foreground': '38.4 40.9836% 88.0392%',\n '--primary': '95 15.7895% 55.2941%',\n '--primary-foreground': '26.6667 12% 14.7059%',\n '--secondary': '40 13.2075% 31.1765%',\n '--secondary-foreground': '38.4 40.9836% 88.0392%',\n '--muted': '38.8235 12.9771% 25.6863%',\n '--muted-foreground': '33.3333 9.375% 62.3529%',\n '--accent': '44.3478 27.2727% 49.6078%',\n '--accent-foreground': '26.6667 12% 14.7059%',\n '--destructive': '9.6 33.6323% 56.2745%',\n '--destructive-foreground': '40 41.1765% 90%',\n '--success': '95 15.7895% 55.2941%',\n '--success-foreground': '26.6667 12% 14.7059%',\n '--warning': '44.3478 27.2727% 49.6078%',\n '--warning-foreground': '26.6667 12% 14.7059%',\n '--error': '9.6 33.6323% 56.2745%',\n '--error-foreground': '40 41.1765% 90%',\n '--info': '199 25% 48%',\n '--info-foreground': '40 41.1765% 90%',\n '--border': '40 13.2075% 31.1765%',\n '--input': '40 13.2075% 31.1765%',\n '--ring': '95 15.7895% 55.2941%',\n '--radius': '0.425rem',\n '--chart-1': '95 15.7895% 55.2941%',\n '--chart-2': '92.4324 19.171% 62.1569%',\n '--chart-3': '104.4444 11.2971% 46.8627%',\n '--chart-4': '44.3478 27.2727% 49.6078%',\n '--chart-5': '103.6364 11.1111% 38.8235%',\n '--spacing': '0.25rem',\n '--tracking-normal': '0em',\n '--shadow-color': 'hsl(88 22% 35% / 0.15)',\n '--shadow-2xs': '3px 3px 2px 0px hsl(88 22% 35% / 0.07)',\n '--shadow-xs': '3px 3px 2px 0px hsl(88 22% 35% / 0.07)',\n '--shadow-sm':\n '3px 3px 2px 0px hsl(88 22% 35% / 0.15), 3px 1px 2px -1px hsl(88 22% 35% / 0.15)',\n '--shadow': '3px 3px 2px 0px hsl(88 22% 35% / 0.15), 3px 1px 2px -1px hsl(88 22% 35% / 0.15)',\n '--shadow-md':\n '3px 3px 2px 0px hsl(88 22% 35% / 0.15), 3px 2px 4px -1px hsl(88 22% 35% / 0.15)',\n '--shadow-lg':\n '3px 3px 2px 0px hsl(88 22% 35% / 0.15), 3px 4px 6px -1px hsl(88 22% 35% / 0.15)',\n '--shadow-xl':\n '3px 3px 2px 0px hsl(88 22% 35% / 0.15), 3px 8px 10px -1px hsl(88 22% 35% / 0.15)',\n '--shadow-2xl': '3px 3px 2px 0px hsl(88 22% 35% / 0.38)',\n },\n },\n}\n","import { DEFAULT_FONT } from '@/lib/fonts'\nimport type { Theme } from '@/types'\n\n/**\n * Midnight Blue theme for Dashfy.\n */\nexport const midnightBlueTheme: Theme = {\n id: 'midnightBlue',\n name: 'midnightBlue',\n displayName: 'Midnight Blue',\n fonts: DEFAULT_FONT,\n light: {\n colors: {\n background: 'hsl(210 40% 98%)',\n foreground: 'hsl(222.2 47.4% 11.2%)',\n card: 'hsl(0 0% 100%)',\n cardForeground: 'hsl(222.2 47.4% 11.2%)',\n popover: 'hsl(0 0% 100%)',\n popoverForeground: 'hsl(222.2 47.4% 11.2%)',\n primary: 'hsl(217.2 91.2% 59.8%)',\n primaryForeground: 'hsl(0 0% 98%)',\n secondary: 'hsl(214.3 31.8% 91.4%)',\n secondaryForeground: 'hsl(222.2 47.4% 11.2%)',\n muted: 'hsl(214.3 31.8% 91.4%)',\n mutedForeground: 'hsl(215 16.3% 46.9%)',\n accent: 'hsl(210 40% 96.1%)',\n accentForeground: 'hsl(222.2 47.4% 11.2%)',\n destructive: 'hsl(0 84.2% 60.2%)',\n destructiveForeground: 'hsl(0 0% 98%)',\n success: 'hsl(142.1 76.2% 36.3%)',\n successForeground: 'hsl(0 0% 98%)',\n warning: 'hsl(38 92% 50%)',\n warningForeground: 'hsl(0 0% 98%)',\n error: 'hsl(0 84.2% 60.2%)',\n errorForeground: 'hsl(0 0% 98%)',\n info: 'hsl(199 89% 48%)',\n infoForeground: 'hsl(0 0% 98%)',\n border: 'hsl(214.3 31.8% 91.4%)',\n input: 'hsl(214.3 31.8% 91.4%)',\n ring: 'hsl(217.2 91.2% 59.8%)',\n chart1: 'hsl(217.2 91.2% 59.8%)',\n chart2: 'hsl(199 89% 48%)',\n chart3: 'hsl(240 60% 60%)',\n chart4: 'hsl(210 80% 65%)',\n chart5: 'hsl(195 75% 55%)',\n },\n cssVariables: {\n '--background': '210 40% 98%',\n '--foreground': '222.2 47.4% 11.2%',\n '--card': '0 0% 100%',\n '--card-foreground': '222.2 47.4% 11.2%',\n '--popover': '0 0% 100%',\n '--popover-foreground': '222.2 47.4% 11.2%',\n '--primary': '217.2 91.2% 59.8%',\n '--primary-foreground': '0 0% 98%',\n '--secondary': '214.3 31.8% 91.4%',\n '--secondary-foreground': '222.2 47.4% 11.2%',\n '--muted': '214.3 31.8% 91.4%',\n '--muted-foreground': '215 16.3% 46.9%',\n '--accent': '210 40% 96.1%',\n '--accent-foreground': '222.2 47.4% 11.2%',\n '--destructive': '0 84.2% 60.2%',\n '--destructive-foreground': '0 0% 98%',\n '--success': '142.1 76.2% 36.3%',\n '--success-foreground': '0 0% 98%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '0 0% 98%',\n '--error': '0 84.2% 60.2%',\n '--error-foreground': '0 0% 98%',\n '--info': '199 89% 48%',\n '--info-foreground': '0 0% 98%',\n '--border': '214.3 31.8% 91.4%',\n '--input': '214.3 31.8% 91.4%',\n '--ring': '217.2 91.2% 59.8%',\n '--radius': '0.5rem',\n '--chart-1': '217.2 91.2% 59.8%',\n '--chart-2': '199 89% 48%',\n '--chart-3': '240 60% 60%',\n '--chart-4': '210 80% 65%',\n '--chart-5': '195 75% 55%',\n },\n },\n dark: {\n colors: {\n background: 'hsl(222.2 84% 4.9%)',\n foreground: 'hsl(210 40% 98%)',\n card: 'hsl(222.2 84% 4.9%)',\n cardForeground: 'hsl(210 40% 98%)',\n popover: 'hsl(222.2 84% 4.9%)',\n popoverForeground: 'hsl(210 40% 98%)',\n primary: 'hsl(217.2 91.2% 59.8%)',\n primaryForeground: 'hsl(222.2 47.4% 11.2%)',\n secondary: 'hsl(217.2 32.6% 17.5%)',\n secondaryForeground: 'hsl(210 40% 98%)',\n muted: 'hsl(217.2 32.6% 17.5%)',\n mutedForeground: 'hsl(215 20.2% 65.1%)',\n accent: 'hsl(217.2 32.6% 17.5%)',\n accentForeground: 'hsl(210 40% 98%)',\n destructive: 'hsl(0 62.8% 30.6%)',\n destructiveForeground: 'hsl(0 85.7% 97.3%)',\n success: 'hsl(142.1 70.6% 45.3%)',\n successForeground: 'hsl(144.9 80.4% 95%)',\n warning: 'hsl(38 92% 50%)',\n warningForeground: 'hsl(20.5 90.2% 10%)',\n error: 'hsl(0 62.8% 30.6%)',\n errorForeground: 'hsl(0 85.7% 97.3%)',\n info: 'hsl(199 89% 48%)',\n infoForeground: 'hsl(210 40% 98%)',\n border: 'hsl(217.2 32.6% 17.5%)',\n input: 'hsl(217.2 32.6% 17.5%)',\n ring: 'hsl(224.3 76.3% 48%)',\n chart1: 'hsl(220 70% 50%)',\n chart2: 'hsl(160 60% 45%)',\n chart3: 'hsl(30 80% 55%)',\n chart4: 'hsl(280 65% 60%)',\n chart5: 'hsl(340 75% 55%)',\n },\n cssVariables: {\n '--background': '222.2 84% 4.9%',\n '--foreground': '210 40% 98%',\n '--card': '222.2 84% 4.9%',\n '--card-foreground': '210 40% 98%',\n '--popover': '222.2 84% 4.9%',\n '--popover-foreground': '210 40% 98%',\n '--primary': '217.2 91.2% 59.8%',\n '--primary-foreground': '222.2 47.4% 11.2%',\n '--secondary': '217.2 32.6% 17.5%',\n '--secondary-foreground': '210 40% 98%',\n '--muted': '217.2 32.6% 17.5%',\n '--muted-foreground': '215 20.2% 65.1%',\n '--accent': '217.2 32.6% 17.5%',\n '--accent-foreground': '210 40% 98%',\n '--destructive': '0 62.8% 30.6%',\n '--destructive-foreground': '0 85.7% 97.3%',\n '--success': '142.1 70.6% 45.3%',\n '--success-foreground': '144.9 80.4% 95%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '20.5 90.2% 10%',\n '--error': '0 62.8% 30.6%',\n '--error-foreground': '0 85.7% 97.3%',\n '--info': '199 89% 48%',\n '--info-foreground': '210 40% 98%',\n '--border': '217.2 32.6% 17.5%',\n '--input': '217.2 32.6% 17.5%',\n '--ring': '224.3 76.3% 48%',\n '--radius': '0.5rem',\n '--chart-1': '220 70% 50%',\n '--chart-2': '160 60% 45%',\n '--chart-3': '30 80% 55%',\n '--chart-4': '280 65% 60%',\n '--chart-5': '340 75% 55%',\n },\n },\n}\n","import { DEFAULT_FONT_MONO } from '@/lib/fonts'\nimport type { Theme } from '@/types'\n\n/**\n * Minimal monochrome theme for Dashfy.\n */\nexport const minimalTheme: Theme = {\n id: 'minimal',\n name: 'minimal',\n displayName: 'Minimal',\n fonts: DEFAULT_FONT_MONO,\n light: {\n colors: {\n background: 'hsl(0 0% 100%)',\n foreground: 'hsl(0 0% 0%)',\n card: 'hsl(0 0% 100%)',\n cardForeground: 'hsl(0 0% 0%)',\n popover: 'hsl(0 0% 100%)',\n popoverForeground: 'hsl(0 0% 0%)',\n primary: 'hsl(0 0% 0%)',\n primaryForeground: 'hsl(0 0% 100%)',\n secondary: 'hsl(0 0% 96%)',\n secondaryForeground: 'hsl(0 0% 0%)',\n muted: 'hsl(0 0% 96%)',\n mutedForeground: 'hsl(0 0% 45%)',\n accent: 'hsl(0 0% 96%)',\n accentForeground: 'hsl(0 0% 0%)',\n destructive: 'hsl(11 93% 73%)',\n destructiveForeground: 'hsl(0 0% 0%)',\n success: 'hsl(166 46% 49%)',\n successForeground: 'hsl(0 0% 100%)',\n warning: 'hsl(43 74% 60%)',\n warningForeground: 'hsl(0 0% 0%)',\n error: 'hsl(11 93% 73%)',\n errorForeground: 'hsl(0 0% 0%)',\n info: 'hsl(199 89% 48%)',\n infoForeground: 'hsl(0 0% 100%)',\n border: 'hsl(0 0% 0%)',\n input: 'hsl(0 0% 90%)',\n ring: 'hsl(0 0% 0%)',\n chart1: 'hsl(0 0% 20%)',\n chart2: 'hsl(0 0% 35%)',\n chart3: 'hsl(0 0% 50%)',\n chart4: 'hsl(0 0% 65%)',\n chart5: 'hsl(0 0% 80%)',\n },\n cssVariables: {\n '--background': '0 0% 100%',\n '--foreground': '0 0% 0%',\n '--card': '0 0% 100%',\n '--card-foreground': '0 0% 0%',\n '--popover': '0 0% 100%',\n '--popover-foreground': '0 0% 0%',\n '--primary': '0 0% 0%',\n '--primary-foreground': '0 0% 100%',\n '--secondary': '0 0% 96%',\n '--secondary-foreground': '0 0% 0%',\n '--muted': '0 0% 96%',\n '--muted-foreground': '0 0% 45%',\n '--accent': '0 0% 96%',\n '--accent-foreground': '0 0% 0%',\n '--destructive': '11 93% 73%',\n '--destructive-foreground': '0 0% 0%',\n '--success': '166 46% 49%',\n '--success-foreground': '0 0% 100%',\n '--warning': '43 74% 60%',\n '--warning-foreground': '0 0% 0%',\n '--error': '11 93% 73%',\n '--error-foreground': '0 0% 0%',\n '--info': '199 89% 48%',\n '--info-foreground': '0 0% 100%',\n '--border': '0 0% 0%',\n '--input': '0 0% 90%',\n '--ring': '0 0% 0%',\n '--radius': '0.25rem',\n '--chart-1': '0 0% 20%',\n '--chart-2': '0 0% 35%',\n '--chart-3': '0 0% 50%',\n '--chart-4': '0 0% 65%',\n '--chart-5': '0 0% 80%',\n },\n },\n dark: {\n colors: {\n background: 'hsl(0 0% 0%)',\n foreground: 'hsl(0 0% 100%)',\n card: 'hsl(0 0% 0%)',\n cardForeground: 'hsl(0 0% 100%)',\n popover: 'hsl(0 0% 0%)',\n popoverForeground: 'hsl(0 0% 100%)',\n primary: 'hsl(0 0% 100%)',\n primaryForeground: 'hsl(0 0% 0%)',\n secondary: 'hsl(0 0% 10%)',\n secondaryForeground: 'hsl(0 0% 100%)',\n muted: 'hsl(0 0% 10%)',\n mutedForeground: 'hsl(0 0% 55%)',\n accent: 'hsl(0 0% 10%)',\n accentForeground: 'hsl(0 0% 100%)',\n destructive: 'hsl(11 93% 45%)',\n destructiveForeground: 'hsl(0 0% 100%)',\n success: 'hsl(166 46% 49%)',\n successForeground: 'hsl(0 0% 0%)',\n warning: 'hsl(43 74% 60%)',\n warningForeground: 'hsl(0 0% 0%)',\n error: 'hsl(11 93% 45%)',\n errorForeground: 'hsl(0 0% 100%)',\n info: 'hsl(199 89% 48%)',\n infoForeground: 'hsl(0 0% 0%)',\n border: 'hsl(0 0% 100%)',\n input: 'hsl(0 0% 20%)',\n ring: 'hsl(0 0% 100%)',\n chart1: 'hsl(0 0% 80%)',\n chart2: 'hsl(0 0% 65%)',\n chart3: 'hsl(0 0% 50%)',\n chart4: 'hsl(0 0% 35%)',\n chart5: 'hsl(0 0% 20%)',\n },\n cssVariables: {\n '--background': '0 0% 0%',\n '--foreground': '0 0% 100%',\n '--card': '0 0% 0%',\n '--card-foreground': '0 0% 100%',\n '--popover': '0 0% 0%',\n '--popover-foreground': '0 0% 100%',\n '--primary': '0 0% 100%',\n '--primary-foreground': '0 0% 0%',\n '--secondary': '0 0% 10%',\n '--secondary-foreground': '0 0% 100%',\n '--muted': '0 0% 10%',\n '--muted-foreground': '0 0% 55%',\n '--accent': '0 0% 10%',\n '--accent-foreground': '0 0% 100%',\n '--destructive': '11 93% 45%',\n '--destructive-foreground': '0 0% 100%',\n '--success': '166 46% 49%',\n '--success-foreground': '0 0% 0%',\n '--warning': '43 74% 60%',\n '--warning-foreground': '0 0% 0%',\n '--error': '11 93% 45%',\n '--error-foreground': '0 0% 100%',\n '--info': '199 89% 48%',\n '--info-foreground': '0 0% 0%',\n '--border': '0 0% 100%',\n '--input': '0 0% 20%',\n '--ring': '0 0% 100%',\n '--radius': '0.25rem',\n '--chart-1': '0 0% 80%',\n '--chart-2': '0 0% 65%',\n '--chart-3': '0 0% 50%',\n '--chart-4': '0 0% 35%',\n '--chart-5': '0 0% 20%',\n },\n },\n}\n","import { DEFAULT_FONT } from '@/lib/fonts'\nimport type { Theme } from '@/types'\n\n/**\n * Nord theme for Dashfy.\n */\nexport const nordTheme: Theme = {\n id: 'nord',\n name: 'nord',\n displayName: 'Nord',\n fonts: DEFAULT_FONT,\n light: {\n colors: {\n background: 'hsl(218 27% 94%)',\n foreground: 'hsl(220 16% 22%)',\n card: 'hsl(0 0% 100%)',\n cardForeground: 'hsl(220 16% 22%)',\n popover: 'hsl(0 0% 100%)',\n popoverForeground: 'hsl(220 16% 22%)',\n primary: 'hsl(213 32% 52%)',\n primaryForeground: 'hsl(218 27% 94%)',\n secondary: 'hsl(220 16% 88%)',\n secondaryForeground: 'hsl(220 16% 22%)',\n muted: 'hsl(220 16% 88%)',\n mutedForeground: 'hsl(220 17% 40%)',\n accent: 'hsl(179 25% 65%)',\n accentForeground: 'hsl(220 16% 22%)',\n destructive: 'hsl(354 42% 56%)',\n destructiveForeground: 'hsl(218 27% 94%)',\n success: 'hsl(92 28% 45%)',\n successForeground: 'hsl(218 27% 94%)',\n warning: 'hsl(40 71% 55%)',\n warningForeground: 'hsl(220 16% 22%)',\n error: 'hsl(354 42% 56%)',\n errorForeground: 'hsl(218 27% 94%)',\n info: 'hsl(199 89% 48%)',\n infoForeground: 'hsl(218 27% 94%)',\n border: 'hsl(220 16% 80%)',\n input: 'hsl(220 16% 88%)',\n ring: 'hsl(213 32% 52%)',\n chart1: 'hsl(213 32% 52%)',\n chart2: 'hsl(179 25% 65%)',\n chart3: 'hsl(92 28% 65%)',\n chart4: 'hsl(40 71% 73%)',\n chart5: 'hsl(354 42% 56%)',\n },\n cssVariables: {\n '--background': '218 27% 94%',\n '--foreground': '220 16% 22%',\n '--card': '0 0% 100%',\n '--card-foreground': '220 16% 22%',\n '--popover': '0 0% 100%',\n '--popover-foreground': '220 16% 22%',\n '--primary': '213 32% 52%',\n '--primary-foreground': '218 27% 94%',\n '--secondary': '220 16% 88%',\n '--secondary-foreground': '220 16% 22%',\n '--muted': '220 16% 88%',\n '--muted-foreground': '220 17% 40%',\n '--accent': '179 25% 65%',\n '--accent-foreground': '220 16% 22%',\n '--destructive': '354 42% 56%',\n '--destructive-foreground': '218 27% 94%',\n '--success': '92 28% 45%',\n '--success-foreground': '218 27% 94%',\n '--warning': '40 71% 55%',\n '--warning-foreground': '220 16% 22%',\n '--error': '354 42% 56%',\n '--error-foreground': '218 27% 94%',\n '--info': '199 89% 48%',\n '--info-foreground': '218 27% 94%',\n '--border': '220 16% 80%',\n '--input': '220 16% 88%',\n '--ring': '213 32% 52%',\n '--radius': '0.5rem',\n '--chart-1': '213 32% 52%',\n '--chart-2': '179 25% 65%',\n '--chart-3': '92 28% 65%',\n '--chart-4': '40 71% 73%',\n '--chart-5': '354 42% 56%',\n },\n },\n dark: {\n colors: {\n background: 'hsl(220 16% 22%)',\n foreground: 'hsl(218 27% 94%)',\n card: 'hsl(220 17% 20%)',\n cardForeground: 'hsl(218 27% 94%)',\n popover: 'hsl(220 17% 20%)',\n popoverForeground: 'hsl(218 27% 94%)',\n primary: 'hsl(213 32% 52%)',\n primaryForeground: 'hsl(218 27% 94%)',\n secondary: 'hsl(220 16% 28%)',\n secondaryForeground: 'hsl(218 27% 94%)',\n muted: 'hsl(220 16% 28%)',\n mutedForeground: 'hsl(220 17% 66%)',\n accent: 'hsl(179 25% 65%)',\n accentForeground: 'hsl(220 16% 22%)',\n destructive: 'hsl(354 42% 56%)',\n destructiveForeground: 'hsl(218 27% 94%)',\n success: 'hsl(92 28% 65%)',\n successForeground: 'hsl(220 16% 22%)',\n warning: 'hsl(40 71% 73%)',\n warningForeground: 'hsl(220 16% 22%)',\n error: 'hsl(354 42% 56%)',\n errorForeground: 'hsl(218 27% 94%)',\n info: 'hsl(199 89% 48%)',\n infoForeground: 'hsl(218 27% 94%)',\n border: 'hsl(220 16% 36%)',\n input: 'hsl(220 16% 28%)',\n ring: 'hsl(213 32% 52%)',\n chart1: 'hsl(213 32% 52%)',\n chart2: 'hsl(179 25% 65%)',\n chart3: 'hsl(92 28% 65%)',\n chart4: 'hsl(40 71% 73%)',\n chart5: 'hsl(354 42% 56%)',\n },\n cssVariables: {\n '--background': '220 16% 22%',\n '--foreground': '218 27% 94%',\n '--card': '220 17% 20%',\n '--card-foreground': '218 27% 94%',\n '--popover': '220 17% 20%',\n '--popover-foreground': '218 27% 94%',\n '--primary': '213 32% 52%',\n '--primary-foreground': '218 27% 94%',\n '--secondary': '220 16% 28%',\n '--secondary-foreground': '218 27% 94%',\n '--muted': '220 16% 28%',\n '--muted-foreground': '220 17% 66%',\n '--accent': '179 25% 65%',\n '--accent-foreground': '220 16% 22%',\n '--destructive': '354 42% 56%',\n '--destructive-foreground': '218 27% 94%',\n '--success': '92 28% 65%',\n '--success-foreground': '220 16% 22%',\n '--warning': '40 71% 73%',\n '--warning-foreground': '220 16% 22%',\n '--error': '354 42% 56%',\n '--error-foreground': '218 27% 94%',\n '--info': '199 89% 48%',\n '--info-foreground': '218 27% 94%',\n '--border': '220 16% 36%',\n '--input': '220 16% 28%',\n '--ring': '213 32% 52%',\n '--radius': '0.5rem',\n '--chart-1': '213 32% 52%',\n '--chart-2': '179 25% 65%',\n '--chart-3': '92 28% 65%',\n '--chart-4': '40 71% 73%',\n '--chart-5': '354 42% 56%',\n },\n },\n}\n","import { defaultTheme } from './default'\nimport { kodamaGroveTheme } from './kodamaGrove'\nimport { midnightBlueTheme } from './midnightBlue'\nimport { minimalTheme } from './minimal'\nimport { nordTheme } from './nord'\n\nexport const themes = {\n default: defaultTheme,\n kodamaGrove: kodamaGroveTheme,\n midnightBlue: midnightBlueTheme,\n minimal: minimalTheme,\n nord: nordTheme,\n} as const\n\nexport type PresetThemeId = keyof typeof themes\n\nexport { defaultTheme, kodamaGroveTheme, midnightBlueTheme, minimalTheme, nordTheme }\n","import type { PresetThemeId } from './themes'\nimport { themes } from './themes'\nimport { defaultTheme } from './themes/default'\nimport type { Theme, ThemeColors, ThemeFonts, ThemeMode } from './types'\n\nexport * from './lib/fonts'\nexport * from './lib/googleFont'\nexport * from './themes'\nexport * from './types'\n\n/** Default theme to use when no theme is saved or selected. */\nexport const DEFAULT_THEME: PresetThemeId = 'default'\n\n/** `<link id=\"…\">` for Google Fonts injected by `applyTheme`. */\nconst THEME_FONT_LINK_ID = 'dashfy-theme-fonts'\n\n/**\n * Get a theme by ID.\n *\n * @param id - The theme identifier (e.g., 'default', 'minimal', 'nord')\n * @returns The theme object\n *\n * @example\n * ```ts\n * import { getTheme } from '@getdashfy/themes'\n *\n * const minimalTheme = getTheme('minimal')\n * console.log(minimalTheme.displayName) // \"Minimal\"\n * ```\n */\nexport function getTheme(id: PresetThemeId): Theme {\n return themes[id]\n}\n\n/**\n * Apply a theme by setting CSS variables on the document root element.\n *\n * This function:\n * - Sets all theme CSS variables on `:root`\n * - Adds a `data-theme` attribute for theme-specific CSS selectors\n * - Applies the appropriate mode (light or dark) based on the current mode setting\n * - Is safe to call in SSR environments (no-op when document is undefined)\n *\n * @param theme - The theme object to apply\n * @param mode - Optional mode to apply ('light' or 'dark'). If not provided, uses current mode from DOM\n *\n * @example\n * ```ts\n * import { applyTheme, defaultTheme } from '@getdashfy/themes'\n *\n * // Apply default theme in light mode\n * applyTheme(defaultTheme, 'light')\n *\n * // Apply default theme in dark mode\n * applyTheme(defaultTheme, 'dark')\n *\n * // Apply theme using current mode from DOM\n * applyTheme(defaultTheme)\n * ```\n */\nexport function applyTheme(theme: Theme, mode?: ThemeMode): void {\n if (typeof document === 'undefined') {\n return\n }\n\n const root = document.documentElement\n\n // Determine which mode to use\n const currentMode = mode ?? (root.classList.contains('dark') ? 'dark' : 'light')\n const themeColors = currentMode === 'dark' ? theme.dark : theme.light\n\n // Apply all CSS variables to root element\n Object.entries(themeColors.cssVariables).forEach(([key, value]) => {\n root.style.setProperty(key, value)\n })\n\n if (theme.fonts) {\n // Apply font CSS variables to root element\n Object.entries(theme.fonts.cssVariables).forEach(([key, value]) => {\n root.style.setProperty(key, value)\n })\n\n let link = document.getElementById(THEME_FONT_LINK_ID) as HTMLLinkElement | null\n\n if (!link) {\n link = document.createElement('link')\n link.id = THEME_FONT_LINK_ID\n link.rel = 'stylesheet'\n document.head.appendChild(link)\n }\n\n link.href = theme.fonts.importHref\n } else {\n document.getElementById(THEME_FONT_LINK_ID)?.remove()\n root.style.removeProperty('--font-sans')\n root.style.removeProperty('--font-mono')\n }\n\n // Set data attribute for theme-specific CSS selectors\n root.setAttribute('data-theme', theme.id)\n}\n\n/**\n * Remove a theme by clearing its CSS variables from the document root.\n *\n * This function:\n * - Removes all CSS variables defined by the theme\n * - Removes the `data-theme` attribute\n * - Is safe to call in SSR environments (no-op when document is undefined)\n *\n * @param theme - The theme object to remove\n *\n * @remarks\n * Typically you would just apply a new theme instead of removing one.\n * This function is useful for cleanup or testing scenarios.\n *\n * @example\n * ```ts\n * import { removeTheme, darkTheme } from '@getdashfy/themes'\n *\n * // Remove theme styling\n * removeTheme(darkTheme)\n * ```\n */\nexport function removeTheme(theme: Theme): void {\n if (typeof document === 'undefined') {\n return\n }\n\n const root = document.documentElement\n\n // Remove all theme CSS variables from root element\n // We only need to remove from light since light and dark share the same variable names\n Object.keys(theme.light.cssVariables).forEach((key) => {\n root.style.removeProperty(key)\n })\n\n if (theme.fonts) {\n // Remove font CSS variables from root element\n Object.keys(theme.fonts.cssVariables).forEach((key) => {\n root.style.removeProperty(key)\n })\n }\n\n document.getElementById(THEME_FONT_LINK_ID)?.remove()\n\n // Remove theme data attribute\n root.removeAttribute('data-theme')\n}\n\n/**\n * Get the currently applied theme ID from the document.\n *\n * Reads the `data-theme` attribute from the document root element.\n *\n * @returns The current theme ID, or null if no theme is applied or in SSR\n *\n * @example\n * ```ts\n * import { getCurrentTheme, applyTheme, darkTheme } from '@getdashfy/themes'\n *\n * applyTheme(darkTheme)\n * const current = getCurrentTheme()\n * console.log(current) // \"dark\"\n * ```\n */\nexport function getCurrentTheme(): PresetThemeId | null {\n if (typeof document === 'undefined') {\n return null\n }\n\n const themeId = document.documentElement.getAttribute('data-theme')\n return themeId as PresetThemeId | null\n}\n\n/**\n * Get an array of all available theme IDs.\n *\n * @returns Array of theme identifiers\n *\n * @example\n * ```ts\n * import { listThemes } from '@getdashfy/themes'\n *\n * const themeIds = listThemes()\n * console.log(themeIds) // [\"default\", \"minimal\", \"nord\"]\n *\n * // Use in a theme selector\n * themeIds.forEach(id => {\n * console.log(`Available theme: ${id}`)\n * })\n * ```\n */\nexport function listThemes(): PresetThemeId[] {\n return Object.keys(themes) as PresetThemeId[]\n}\n\nexport interface CreateThemeOptions {\n /** Unique theme identifier (e.g., 'custom-blue') */\n id: string\n /** Internal theme name (e.g., 'customBlue') */\n name: string\n /** Human-readable name shown in UI (e.g., 'Custom Blue') */\n displayName: string\n /** Partial color overrides for light mode */\n lightColors: Partial<ThemeColors>\n /** Partial color overrides for dark mode (optional, defaults to lightColors) */\n darkColors?: Partial<ThemeColors>\n /** Base theme to extend from (defaults to defaultTheme) */\n baseTheme?: Theme\n /** Override typography / Google Fonts (defaults to base theme) */\n fonts?: ThemeFonts\n}\n\n/**\n * Create a custom theme by extending an existing theme.\n *\n * This utility function creates a new theme object by:\n * - Merging your custom colors with a base theme\n * - Automatically generating CSS variables from color names\n * - Converting camelCase color names to kebab-case CSS variables\n * - Supports both light and dark mode colors\n *\n * @param options - Theme configuration options\n * @returns A complete theme object ready to use with `applyTheme()`\n *\n * @example Basic custom theme\n * ```ts\n * import { createTheme, applyTheme } from '@getdashfy/themes'\n *\n * const myTheme = createTheme({\n * id: 'ocean',\n * name: 'ocean',\n * displayName: 'Ocean Blue',\n * lightColors: {\n * primary: 'hsl(200 80% 50%)',\n * secondary: 'hsl(180 70% 50%)',\n * }\n * })\n *\n * applyTheme(myTheme, 'light')\n * ```\n *\n * @example Theme with different light and dark colors\n * ```ts\n * import { createTheme, applyTheme } from '@getdashfy/themes'\n *\n * const customTheme = createTheme({\n * id: 'custom',\n * name: 'custom',\n * displayName: 'Custom Theme',\n * lightColors: { primary: 'hsl(200 80% 50%)' },\n * darkColors: { primary: 'hsl(200 80% 70%)' }\n * })\n *\n * applyTheme(customTheme, 'dark')\n * ```\n *\n * @example Extending a different base theme\n * ```ts\n * import { createTheme, minimalTheme, applyTheme } from '@getdashfy/themes'\n *\n * const customMinimal = createTheme({\n * id: 'custom-minimal',\n * name: 'customMinimal',\n * displayName: 'Custom Minimal',\n * lightColors: { primary: 'hsl(0 0% 20%)' },\n * baseTheme: minimalTheme\n * })\n *\n * applyTheme(customMinimal, 'light')\n * ```\n */\nexport function createTheme(options: CreateThemeOptions): Theme {\n const {\n id,\n name,\n displayName,\n lightColors,\n darkColors,\n baseTheme = defaultTheme,\n fonts,\n } = options\n\n const convertColorsToCssVars = (colors: Partial<ThemeColors>) => {\n return Object.entries(colors).reduce(\n (acc, [key, value]) => {\n const cssVar = `--${key.replace(/([A-Z])/g, '-$1').toLowerCase()}`\n // Convert hsl() format to space-separated values if needed\n const cssValue =\n typeof value === 'string' && value.startsWith('hsl(')\n ? value.replace('hsl(', '').replace(')', '')\n : value\n acc[cssVar] = cssValue\n return acc\n },\n {} as Record<string, string>,\n )\n }\n\n return {\n id,\n name,\n displayName,\n fonts: fonts ?? baseTheme.fonts,\n light: {\n colors: { ...baseTheme.light.colors, ...lightColors },\n cssVariables: {\n ...baseTheme.light.cssVariables,\n ...convertColorsToCssVars(lightColors),\n },\n },\n dark: {\n colors: { ...baseTheme.dark.colors, ...(darkColors ?? lightColors) },\n cssVariables: {\n ...baseTheme.dark.cssVariables,\n ...convertColorsToCssVars(darkColors ?? lightColors),\n },\n },\n }\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "@getdashfy/themes",
3
+ "version": "0.1.0",
4
+ "description": "Customizable theme system with pre-built themes for Dashfy",
5
+ "keywords": [
6
+ "dashfy",
7
+ "themes",
8
+ "styling",
9
+ "dashboard",
10
+ "tailwindcss"
11
+ ],
12
+ "homepage": "https://github.com/dashfy/dashfy#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/dashfy/dashfy/issues"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git@github.com:dashfy/dashfy.git",
19
+ "directory": "packages/themes"
20
+ },
21
+ "license": "AGPL-3.0-or-later",
22
+ "author": {
23
+ "name": "Breno Polanski",
24
+ "email": "breno@dashfy.dev",
25
+ "url": "https://github.com/brenopolanski"
26
+ },
27
+ "type": "module",
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js",
32
+ "require": "./dist/index.cjs"
33
+ }
34
+ },
35
+ "main": "./dist/index.cjs",
36
+ "module": "./dist/index.js",
37
+ "types": "./dist/index.d.ts",
38
+ "files": [
39
+ "dist",
40
+ "README.md",
41
+ "LICENSE",
42
+ "CHANGELOG.md"
43
+ ],
44
+ "publishConfig": {
45
+ "access": "public"
46
+ },
47
+ "engines": {
48
+ "node": ">=20.0.0"
49
+ },
50
+ "scripts": {
51
+ "build": "tsup",
52
+ "check:circular": "madge --circular --extensions ts,tsx src/",
53
+ "clean": "rm -rf .turbo dist node_modules",
54
+ "lint": "eslint src",
55
+ "test": "vitest run",
56
+ "test:watch": "vitest",
57
+ "typecheck": "tsc --noEmit"
58
+ },
59
+ "dependencies": {
60
+ "@getdashfy/types": "workspace:*"
61
+ },
62
+ "devDependencies": {
63
+ "@getdashfy/tsconfig": "workspace:*",
64
+ "@types/node": "^22.8.6",
65
+ "jsdom": "^25.0.1",
66
+ "tsup": "^8.3.5",
67
+ "typescript": "^5.7.2",
68
+ "vitest": "^2.1.9"
69
+ }
70
+ }