@thesage/ui 0.0.9

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.
Files changed (43) hide show
  1. package/dist/fontThemes-Bwf7_lFg.d.mts +842 -0
  2. package/dist/fontThemes-Bwf7_lFg.d.ts +842 -0
  3. package/dist/hooks-C8PrmIXy.d.mts +225 -0
  4. package/dist/hooks-Ct9RBhg-.d.ts +225 -0
  5. package/dist/hooks.d.mts +3 -0
  6. package/dist/hooks.d.ts +3 -0
  7. package/dist/hooks.js +1342 -0
  8. package/dist/hooks.js.map +1 -0
  9. package/dist/hooks.mjs +1314 -0
  10. package/dist/hooks.mjs.map +1 -0
  11. package/dist/index-CsnncHSm.d.mts +23 -0
  12. package/dist/index-CsnncHSm.d.ts +23 -0
  13. package/dist/index.d.mts +2830 -0
  14. package/dist/index.d.ts +2830 -0
  15. package/dist/index.js +12637 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/index.mjs +12319 -0
  18. package/dist/index.mjs.map +1 -0
  19. package/dist/providers-Dv3LFGtJ.d.mts +17 -0
  20. package/dist/providers-Dv3LFGtJ.d.ts +17 -0
  21. package/dist/providers.d.mts +2 -0
  22. package/dist/providers.d.ts +2 -0
  23. package/dist/providers.js +1944 -0
  24. package/dist/providers.js.map +1 -0
  25. package/dist/providers.mjs +1918 -0
  26. package/dist/providers.mjs.map +1 -0
  27. package/dist/tokens.d.mts +831 -0
  28. package/dist/tokens.d.ts +831 -0
  29. package/dist/tokens.js +2399 -0
  30. package/dist/tokens.js.map +1 -0
  31. package/dist/tokens.mjs +2319 -0
  32. package/dist/tokens.mjs.map +1 -0
  33. package/dist/utils-DlJKRVzQ.d.mts +986 -0
  34. package/dist/utils-xrpHqxXR.d.ts +986 -0
  35. package/dist/utils.d.mts +4 -0
  36. package/dist/utils.d.ts +4 -0
  37. package/dist/utils.js +873 -0
  38. package/dist/utils.js.map +1 -0
  39. package/dist/utils.mjs +805 -0
  40. package/dist/utils.mjs.map +1 -0
  41. package/dist/validation-Bj1ye-v_.d.mts +114 -0
  42. package/dist/validation-Bj1ye-v_.d.ts +114 -0
  43. package/package.json +117 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../tokens/src/base.ts","../../tokens/src/studio.ts","../../tokens/src/sage.ts","../../tokens/src/volt.ts","../../tokens/src/typography.ts","../../tokens/src/syntax.ts","../../tokens/src/color-palettes.ts","../../tokens/src/color-utils.ts","../../tokens/src/token-graph.ts","../../tokens/src/fontThemes.ts","../../tokens/src/index.ts"],"sourcesContent":["/**\n * Base Design Tokens\n * Shared across all themes (spacing, typography scales, motion)\n */\n\nexport const baseTokens = {\n /**\n * Spacing scale (based on 4px grid)\n */\n spacing: {\n '0': '0',\n '0.5': '0.125rem', // 2px\n '1': '0.25rem', // 4px\n '2': '0.5rem', // 8px\n '3': '0.75rem', // 12px\n '4': '1rem', // 16px\n '5': '1.25rem', // 20px\n '6': '1.5rem', // 24px\n '8': '2rem', // 32px\n '10': '2.5rem', // 40px\n '12': '3rem', // 48px\n '16': '4rem', // 64px\n '20': '5rem', // 80px\n '24': '6rem', // 96px\n '32': '8rem', // 128px\n },\n\n /**\n * Typography scales\n */\n fontSize: {\n 'xs': '0.75rem', // 12px\n 'sm': '0.875rem', // 14px\n 'base': '1rem', // 16px\n 'lg': '1.125rem', // 18px\n 'xl': '1.25rem', // 20px\n '2xl': '1.5rem', // 24px\n '3xl': '1.875rem', // 30px\n '4xl': '2.25rem', // 36px\n '5xl': '3rem', // 48px\n '6xl': '3.75rem', // 60px\n '7xl': '4.5rem', // 72px\n '8xl': '6rem', // 96px\n },\n\n fontWeight: {\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n },\n\n /**\n * Border radius\n */\n borderRadius: {\n none: '0',\n sm: '0.125rem', // 2px\n DEFAULT: '0.25rem', // 4px\n md: '0.375rem', // 6px\n lg: '0.5rem', // 8px\n xl: '0.75rem', // 12px\n '2xl': '1rem', // 16px\n '3xl': '1.5rem', // 24px\n full: '9999px',\n },\n\n /**\n * Motion durations (base values - themes can override)\n */\n duration: {\n instant: '0ms',\n fast: '150ms',\n normal: '300ms',\n slow: '500ms',\n slower: '800ms',\n },\n\n /**\n * Easing curves (base values - themes can override)\n */\n ease: {\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n inOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n\n /**\n * Z-index scale\n */\n zIndex: {\n 'auto': 'auto',\n '0': '0',\n '10': '10',\n '20': '20',\n '30': '30',\n '40': '40',\n '50': '50',\n dropdown: '1000',\n sticky: '1020',\n fixed: '1030',\n modalBackdrop: '1040',\n modal: '1050',\n popover: '1060',\n tooltip: '1070',\n },\n\n /**\n * Focus ring configuration\n */\n focus: {\n width: '2px',\n offset: '2px',\n style: 'solid',\n },\n} as const;\n\nexport type BaseTokens = typeof baseTokens;\n\n/**\n * Semantic spacing aliases\n * Provides human-readable names matching the README documentation\n */\nexport const spacing = {\n xs: baseTokens.spacing['1'], // 4px — Tight internal padding\n sm: baseTokens.spacing['2'], // 8px — Default gap\n md: baseTokens.spacing['4'], // 16px — Section padding\n lg: baseTokens.spacing['6'], // 24px — Card padding\n xl: baseTokens.spacing['8'], // 32px — Section margins\n '2xl': baseTokens.spacing['12'], // 48px — Page sections\n '3xl': baseTokens.spacing['16'], // 64px — Major divisions\n} as const;\n\n/**\n * Semantic typography aliases\n */\nexport const typography = {\n fonts: {\n sans: 'var(--font-body)',\n serif: 'var(--font-heading)',\n mono: 'var(--font-mono)',\n },\n sizes: {\n xs: baseTokens.fontSize.xs, // 12px — Fine print\n sm: baseTokens.fontSize.sm, // 14px — Secondary text\n base: baseTokens.fontSize.base, // 16px — Body text\n lg: baseTokens.fontSize.lg, // 18px — Lead paragraphs\n xl: baseTokens.fontSize.xl, // 20px — Section headers\n '2xl': baseTokens.fontSize['2xl'], // 24px — Page headers\n '3xl': baseTokens.fontSize['3xl'], // 30px — Hero text\n },\n weights: {\n normal: baseTokens.fontWeight.normal, // 400\n medium: baseTokens.fontWeight.medium, // 500\n semibold: baseTokens.fontWeight.semibold, // 600\n bold: baseTokens.fontWeight.bold, // 700\n },\n leading: {\n tight: baseTokens.lineHeight.tight, // 1.25 — Headings\n normal: baseTokens.lineHeight.normal, // 1.5 — Body\n relaxed: baseTokens.lineHeight.relaxed, // 1.625 — Spacious reading\n },\n} as const;\n\n/**\n * Motion configuration\n */\nexport const motion = {\n duration: baseTokens.duration,\n easing: {\n default: baseTokens.ease.out, // Most transitions\n spring: 'cubic-bezier(0.16, 1, 0.3, 1)', // Playful interactions\n linear: baseTokens.ease.linear, // Progress indicators\n },\n} as const;\n","/**\n * Studio Theme Tokens\n * Professional, polished, balanced design\n * Inspiration: Framer, Vercel, Linear\n */\n\nexport const studioTokens = {\n light: {\n colors: {\n // Backgrounds\n background: '#ffffff',\n backgroundSecondary: '#fafafa',\n backgroundTertiary: '#f5f5f5',\n\n // Foregrounds\n foreground: '#0a0a0a',\n foregroundSecondary: '#525252',\n foregroundTertiary: '#a3a3a3',\n\n // Brand\n primary: '#0a0a0a',\n primaryForeground: '#ffffff',\n\n secondary: '#f5f5f5',\n secondaryForeground: '#0a0a0a',\n\n accent: '#0070f3',\n accentForeground: '#ffffff',\n\n // Borders\n border: '#d4d4d4',\n borderSubtle: '#f5f5f5',\n\n // States\n hover: '#fafafa',\n active: '#f0f0f0',\n\n // Link hover states\n linkHover: '#0a0a0a',\n linkHoverForeground: '#ffffff',\n\n // Semantic\n success: '#00a86b',\n successForeground: '#ffffff',\n\n warning: '#f59e0b',\n warningForeground: '#ffffff',\n\n error: '#ef4444',\n errorForeground: '#ffffff',\n\n info: '#0070f3',\n infoForeground: '#ffffff',\n\n // Component-specific colors\n card: '#ffffff',\n cardForeground: '#0a0a0a',\n\n popover: '#ffffff',\n popoverForeground: '#0a0a0a',\n\n muted: '#f5f5f5',\n mutedForeground: '#737373',\n\n destructive: '#ef4444',\n destructiveForeground: '#ffffff',\n\n input: '#d4d4d4',\n ring: '#0a0a0a',\n\n // Surface is used by various components\n surface: '#fafafa',\n\n // Glass effects\n glass: 'rgba(255, 255, 255, 0.7)',\n glassBorder: 'rgba(0, 0, 0, 0.1)',\n },\n\n effects: {\n blur: {\n sm: 'blur(4px)',\n md: 'blur(8px)',\n lg: 'blur(16px)',\n xl: 'blur(24px)',\n },\n\n shadow: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n },\n },\n },\n\n dark: {\n colors: {\n // Backgrounds\n background: '#000000',\n backgroundSecondary: '#171717',\n backgroundTertiary: '#262626',\n\n // Foregrounds\n foreground: '#fafafa',\n foregroundSecondary: '#a3a3a3',\n foregroundTertiary: '#858585',\n\n // Brand\n primary: '#ffffff',\n primaryForeground: '#0a0a0a',\n\n secondary: '#262626',\n secondaryForeground: '#fafafa',\n\n accent: '#0090ff',\n accentForeground: '#ffffff',\n\n // Borders\n border: '#404040',\n borderSubtle: '#1a1a1a',\n\n // States\n hover: '#1a1a1a',\n active: '#262626',\n\n // Link hover states\n linkHover: '#ffffff',\n linkHoverForeground: '#0a0a0a',\n\n // Semantic\n success: '#10b981',\n successForeground: '#ffffff',\n\n warning: '#f59e0b',\n warningForeground: '#ffffff',\n\n error: '#ef4444',\n errorForeground: '#ffffff',\n\n info: '#0090ff',\n infoForeground: '#ffffff',\n\n // Component-specific colors\n card: '#0a0a0a',\n cardForeground: '#fafafa',\n\n popover: '#0a0a0a',\n popoverForeground: '#fafafa',\n\n muted: '#262626',\n mutedForeground: '#a3a3a3',\n\n destructive: '#ef4444',\n destructiveForeground: '#ffffff',\n\n input: '#404040',\n ring: '#d4d4d4',\n\n // Surface is used by various components\n surface: '#171717',\n\n // Glass effects\n glass: 'rgba(0, 0, 0, 0.7)',\n glassBorder: 'rgba(255, 255, 255, 0.1)',\n },\n\n effects: {\n blur: {\n sm: 'blur(4px)',\n md: 'blur(8px)',\n lg: 'blur(16px)',\n xl: 'blur(24px)',\n },\n\n shadow: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.3)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.5)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.6)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.7)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.8)',\n },\n },\n },\n\n /**\n * Motion personality for Studio theme\n */\n motion: {\n // Duration scales based on motion slider (0-10)\n getDuration: (intensity: number): string => {\n if (intensity === 0) return '0ms';\n // Linear scale: 150ms at intensity 1, 500ms at intensity 10\n const ms = 150 + (intensity - 1) * 40;\n return `${ms}ms`;\n },\n\n // Easing curves - smooth and professional\n ease: {\n default: 'cubic-bezier(0.4, 0, 0.2, 1)', // ease-in-out\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n spring: 'cubic-bezier(0.16, 1, 0.3, 1)', // Smooth spring\n },\n },\n\n /**\n * Typography for Studio theme\n */\n typography: {\n heading: {\n fontFamily: 'var(--font-geist-sans)',\n fontWeight: '600',\n letterSpacing: '-0.02em',\n },\n\n body: {\n fontFamily: 'var(--font-geist-sans)',\n fontWeight: '400',\n letterSpacing: '0',\n },\n\n mono: {\n fontFamily: 'var(--font-geist-mono)',\n fontWeight: '400',\n letterSpacing: '0',\n },\n },\n} as const;\n\nexport type StudioTheme = typeof studioTokens;\n","/**\n * Sage Theme Tokens\n * Calm, organic, feminine/yin design\n * Muted earth tones, flowing animations\n */\n\nexport const sageTokens = {\n light: {\n colors: {\n // Warm, earthy backgrounds\n background: '#faf8f5',\n backgroundSecondary: '#f5f1eb',\n backgroundTertiary: '#ede8e0',\n\n // Warm neutrals for text\n foreground: '#2d2823',\n foregroundSecondary: '#5a524a',\n foregroundTertiary: '#8a7f72',\n\n // Muted sage green as primary\n primary: '#7a9b7f',\n primaryForeground: '#faf8f5',\n primaryHover: '#6a8b6f',\n\n // Secondary - warm stone\n secondary: '#ede8e0',\n secondaryForeground: '#2d2823',\n\n // Warm terracotta accent\n accent: '#c17a5f',\n accentForeground: '#faf8f5',\n accentHover: '#b16a4f',\n\n // Semantic colors with muted, organic tones\n success: '#6b8e6f',\n successForeground: '#faf8f5',\n\n warning: '#d4a574',\n warningForeground: '#2d2823',\n\n error: '#c17a5f',\n errorForeground: '#faf8f5',\n\n info: '#8b9dc3',\n infoForeground: '#faf8f5',\n\n // Borders - warm subtle\n border: '#e0d8cf',\n borderSubtle: '#ede8e0',\n\n // States\n hover: '#f5f1eb',\n active: '#ede8e0',\n\n // Link hover states - Muted sage green\n linkHover: '#7a9b7f',\n linkHoverForeground: '#faf8f5',\n\n // Soft glass effects\n glass: 'rgba(250, 248, 245, 0.85)',\n glassBorder: 'rgba(122, 155, 127, 0.15)',\n },\n effects: {\n blur: {\n sm: 'blur(6px)',\n md: 'blur(12px)',\n lg: 'blur(20px)',\n xl: 'blur(32px)',\n },\n shadow: {\n sm: '0 2px 4px 0 rgba(45, 40, 35, 0.06)',\n md: '0 4px 8px -2px rgba(45, 40, 35, 0.08)',\n lg: '0 8px 16px -4px rgba(45, 40, 35, 0.12)',\n xl: '0 16px 32px -8px rgba(45, 40, 35, 0.16)',\n '2xl': '0 24px 48px -12px rgba(45, 40, 35, 0.20)',\n },\n },\n },\n\n dark: {\n colors: {\n // Deep forest backgrounds\n background: '#1a1614',\n backgroundSecondary: '#252220',\n backgroundTertiary: '#2f2b28',\n\n // Warm light text\n foreground: '#f5f1eb',\n foregroundSecondary: '#c7bfb5',\n foregroundTertiary: '#8a7f72',\n\n // Brighter sage for dark mode\n primary: '#a8c5ad',\n primaryForeground: '#1a1614',\n primaryHover: '#b8d5bd',\n\n // Secondary - lighter warm stone\n secondary: '#2f2b28',\n secondaryForeground: '#f5f1eb',\n\n // Warm peachy accent for dark\n accent: '#e5a78a',\n accentForeground: '#1a1614',\n accentHover: '#f5b79a',\n\n // Semantic colors adjusted for dark\n success: '#95b89a',\n successForeground: '#1a1614',\n\n warning: '#e5c59a',\n warningForeground: '#1a1614',\n\n error: '#e5a78a',\n errorForeground: '#1a1614',\n\n info: '#a8b5d5',\n infoForeground: '#1a1614',\n\n // Borders\n border: '#3a3530',\n borderSubtle: '#2f2b28',\n\n // States\n hover: '#252220',\n active: '#2f2b28',\n\n // Link hover states - Brighter sage for dark mode\n linkHover: '#a8c5ad',\n linkHoverForeground: '#1a1614',\n\n // Dark glass effects\n glass: 'rgba(26, 22, 20, 0.85)',\n glassBorder: 'rgba(168, 197, 173, 0.2)',\n },\n effects: {\n blur: {\n sm: 'blur(6px)',\n md: 'blur(12px)',\n lg: 'blur(20px)',\n xl: 'blur(32px)',\n },\n shadow: {\n sm: '0 2px 4px 0 rgba(0, 0, 0, 0.3)',\n md: '0 4px 8px -2px rgba(0, 0, 0, 0.4)',\n lg: '0 8px 16px -4px rgba(0, 0, 0, 0.5)',\n xl: '0 16px 32px -8px rgba(0, 0, 0, 0.6)',\n '2xl': '0 24px 48px -12px rgba(0, 0, 0, 0.7)',\n },\n },\n },\n\n motion: {\n getDuration: (intensity: number): string => {\n if (intensity === 0) return '0ms';\n // Slower, more organic durations\n const ms = 300 + (intensity - 1) * 60;\n return `${ms}ms`;\n },\n\n ease: {\n default: 'cubic-bezier(0.33, 1, 0.68, 1)', // Organic, flowing\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n spring: 'cubic-bezier(0.16, 1, 0.3, 1)',\n },\n },\n\n interactions: {\n hover: {\n overlayColor: 'var(--color-interaction-overlay)',\n opacity: 'var(--opacity-interaction-hover)',\n },\n active: {\n scale: 'var(--scale-interaction-active)',\n },\n focus: {\n ringColor: 'var(--color-interaction-focus-ring)',\n ringWidth: 'var(--width-interaction-focus-ring)',\n ringOffset: 'var(--width-interaction-focus-offset)',\n },\n disabled: {\n opacity: 'var(--opacity-interaction-disabled)',\n },\n },\n\n typography: {\n heading: {\n fontFamily: 'var(--font-sage-serif)', // Lora serif\n fontWeight: '600',\n letterSpacing: '-0.01em',\n },\n\n body: {\n fontFamily: 'var(--font-sage-sans)', // Instrument Sans\n fontWeight: '400',\n letterSpacing: '0',\n },\n\n mono: {\n fontFamily: 'var(--font-sage-mono)',\n fontWeight: '400',\n letterSpacing: '0',\n },\n },\n} as const;\n\nexport type SageTheme = typeof sageTokens;\n","/**\n * Volt Theme Tokens\n * Bold, electric, masculine/yang design\n * High-chroma colors, dynamic animations, cyberpunk aesthetic\n */\n\nexport const voltTokens = {\n light: {\n colors: {\n // Bright, punchy backgrounds\n background: '#ffffff',\n backgroundSecondary: '#f8f9fb',\n backgroundTertiary: '#f0f2f5',\n\n // Sharp contrast text\n foreground: '#0a0a0a',\n foregroundSecondary: '#4a4a4a',\n foregroundTertiary: '#8a8a8a',\n\n // Electric blue primary (WCAG AA compliant)\n primary: '#0066ff',\n primaryForeground: '#ffffff',\n primaryHover: '#0052cc',\n\n // Secondary - cool gray\n secondary: '#f0f2f5',\n secondaryForeground: '#0a0a0a',\n\n // Vibrant cyan accent\n accent: '#00d9ff',\n accentForeground: '#0a0a0a',\n accentHover: '#00c3e6',\n\n // Bold semantic colors\n success: '#00cc66',\n successForeground: '#ffffff',\n\n warning: '#ffaa00',\n warningForeground: '#0a0a0a',\n\n error: '#ff3366',\n errorForeground: '#ffffff',\n\n info: '#3399ff',\n infoForeground: '#ffffff',\n\n // Borders\n border: '#e0e4ea',\n borderSubtle: '#f0f2f5',\n\n // States\n hover: '#f8f9fb',\n active: '#f0f2f5',\n\n // Link hover states - Electric blue with high contrast\n linkHover: '#0066ff',\n linkHoverForeground: '#ffffff',\n\n // Crisp glass effects\n glass: 'rgba(255, 255, 255, 0.8)',\n glassBorder: 'rgba(0, 102, 255, 0.2)',\n },\n effects: {\n blur: {\n sm: 'blur(8px)',\n md: 'blur(16px)',\n lg: 'blur(32px)',\n xl: 'blur(48px)',\n },\n shadow: {\n sm: '0 0 8px rgba(0, 102, 255, 0.15)',\n md: '0 0 16px rgba(0, 102, 255, 0.2)',\n lg: '0 0 24px rgba(0, 102, 255, 0.25)',\n xl: '0 0 32px rgba(0, 102, 255, 0.3)',\n '2xl': '0 0 48px rgba(0, 102, 255, 0.4)',\n },\n },\n },\n\n dark: {\n colors: {\n // Pure black cyberpunk background\n background: '#000000',\n backgroundSecondary: '#0a0a0a',\n backgroundTertiary: '#141414',\n\n // Bright white text\n foreground: '#ffffff',\n foregroundSecondary: '#b3b3b3',\n foregroundTertiary: '#666666',\n\n // Neon blue primary\n primary: '#0099ff',\n primaryForeground: '#000000',\n primaryHover: '#00aaff',\n\n // Secondary - dark gray\n secondary: '#141414',\n secondaryForeground: '#ffffff',\n\n // Neon cyan accent\n accent: '#00ffff',\n accentForeground: '#000000',\n accentHover: '#33ffff',\n\n // Neon semantic colors\n success: '#00ff99',\n successForeground: '#000000',\n\n warning: '#ffcc00',\n warningForeground: '#000000',\n\n error: '#ff0066',\n errorForeground: '#ffffff',\n\n info: '#66ccff',\n infoForeground: '#000000',\n\n // Borders\n border: '#1a1a1a',\n borderSubtle: '#141414',\n\n // States\n hover: '#0a0a0a',\n active: '#141414',\n\n // Link hover states - Neon cyan (high luma)\n linkHover: '#00ffff',\n linkHoverForeground: '#000000',\n\n // Dark glass with glow\n glass: 'rgba(0, 0, 0, 0.8)',\n glassBorder: 'rgba(0, 153, 255, 0.3)',\n },\n effects: {\n blur: {\n sm: 'blur(8px)',\n md: 'blur(16px)',\n lg: 'blur(32px)',\n xl: 'blur(48px)',\n },\n shadow: {\n sm: '0 0 12px rgba(0, 153, 255, 0.4)',\n md: '0 0 20px rgba(0, 153, 255, 0.5)',\n lg: '0 0 32px rgba(0, 153, 255, 0.6)',\n xl: '0 0 48px rgba(0, 153, 255, 0.7)',\n '2xl': '0 0 64px rgba(0, 153, 255, 0.8)',\n },\n },\n },\n\n motion: {\n getDuration: (intensity: number): string => {\n if (intensity === 0) return '0ms';\n // Fast, snappy durations\n const ms = 100 + (intensity - 1) * 25;\n return `${ms}ms`;\n },\n\n ease: {\n default: 'cubic-bezier(0.16, 1, 0.3, 1)', // Snappy spring\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n spring: 'cubic-bezier(0.68, -0.55, 0.27, 1.55)', // Bouncy\n },\n },\n\n typography: {\n heading: {\n fontFamily: 'var(--font-volt-sans)', // Space Grotesk\n fontWeight: '700', // Bold\n letterSpacing: '-0.03em',\n },\n\n body: {\n fontFamily: 'var(--font-volt-sans)',\n fontWeight: '400',\n letterSpacing: '0',\n },\n\n mono: {\n fontFamily: 'var(--font-volt-mono)', // Fira Code\n fontWeight: '400',\n letterSpacing: '0',\n },\n },\n} as const;\n\nexport type VoltTheme = typeof voltTokens;\n","/**\n * Typography Tokens\n *\n * Central typography system for the design system.\n * Defines font families, sizes, weights, line heights, and letter spacing.\n *\n * Architecture:\n * - Font families are theme-specific and loaded via Next.js font optimization\n * - Sizes, weights, etc. are universal across all themes\n * - Easily extensible for new themes/font sets\n *\n * Usage:\n * 1. Import in theme-specific apps to load fonts\n * 2. Reference via CSS variables (--font-*, --text-*, etc.)\n * 3. Add to Customizer for theme switching\n */\n\n// ============================================================================\n// FONT FAMILIES\n// ============================================================================\n\n/**\n * Font Family Definitions\n *\n * Each theme has its own font personality:\n * - Studio: Modern, geometric, professional\n * - Sage: Elegant, serif + sans combo\n * - Volt: Tech-forward, consistent throughout\n *\n * To add a new theme:\n * 1. Add entry to fontFamilies\n * 2. Load fonts in consuming app's layout\n * 3. Map to CSS variables in ThemeProvider\n */\nexport const fontFamilies = {\n studio: {\n heading: 'Outfit',\n body: 'Manrope',\n mono: 'Fira Code',\n description: 'Modern geometric sans-serif with clean readability',\n usage: {\n heading: 'Headlines, titles, emphasis',\n body: 'Paragraphs, UI text, readable content',\n mono: 'Code blocks, technical content',\n },\n },\n sage: {\n heading: 'Lora', // Serif for elegance\n body: 'Instrument Sans',\n serif: 'Lora', // Explicit serif reference\n sans: 'Instrument Sans', // Explicit sans reference\n mono: 'Fira Code',\n description: 'Elegant serif headings with modern sans body',\n usage: {\n heading: 'Elegant headings, article titles',\n body: 'Long-form content, UI text',\n serif: 'Pull quotes, emphasis',\n sans: 'UI elements, captions',\n mono: 'Code blocks, technical content',\n },\n },\n volt: {\n heading: 'Space Grotesk',\n body: 'Space Grotesk',\n sans: 'Space Grotesk',\n mono: 'Fira Code',\n description: 'Tech-forward, consistent geometric throughout',\n usage: {\n heading: 'All headlines',\n body: 'All body text (unified typography)',\n sans: 'All sans-serif needs',\n mono: 'Code blocks, technical content',\n },\n },\n} as const;\n\n/**\n * Type-safe theme names based on font families\n */\nexport type TypographyTheme = keyof typeof fontFamilies;\n\n/**\n * Font loading configuration for Next.js\n * Use this to load fonts in app layouts\n */\nexport const fontLoadingConfig = {\n studio: {\n heading: { family: 'Outfit', weights: ['300', '400', '500', '600', '700', '800'] },\n body: { family: 'Manrope', weights: ['300', '400', '500', '600', '700', '800'] },\n mono: { family: 'Fira Code', weights: ['400', '500', '600', '700'] },\n },\n sage: {\n heading: { family: 'Lora', weights: ['400', '500', '600', '700'] },\n body: { family: 'Instrument Sans', weights: ['400', '500', '600', '700'] },\n mono: { family: 'Fira Code', weights: ['400', '500', '600', '700'] },\n },\n volt: {\n heading: { family: 'Space Grotesk', weights: ['300', '400', '500', '600', '700'] },\n body: { family: 'Space Grotesk', weights: ['300', '400', '500', '600', '700'] },\n mono: { family: 'Fira Code', weights: ['400', '500', '600', '700'] },\n },\n} as const;\n\n// ============================================================================\n// FONT SIZES\n// ============================================================================\n\n/**\n * Font Size Scale\n *\n * Based on a modular scale for harmonious typography.\n * Mobile-first with responsive scaling.\n *\n * Naming convention:\n * - xs, sm, base, lg, xl, 2xl, etc. for body text\n * - Numeric for headings (aligns with h1-h6)\n */\nexport const fontSizes = {\n // Body text scale\n xs: { base: '0.75rem', mobile: '0.75rem' }, // 12px\n sm: { base: '0.875rem', mobile: '0.875rem' }, // 14px\n base: { base: '1rem', mobile: '1rem' }, // 16px\n lg: { base: '1.125rem', mobile: '1rem' }, // 18px / 16px mobile\n xl: { base: '1.25rem', mobile: '1.125rem' }, // 20px / 18px mobile\n '2xl': { base: '1.5rem', mobile: '1.25rem' }, // 24px / 20px mobile\n '3xl': { base: '1.875rem', mobile: '1.5rem' }, // 30px / 24px mobile\n\n // Heading scale (h6 → h1)\n '4xl': { base: '2.25rem', mobile: '1.875rem' }, // 36px / 30px - h3\n '5xl': { base: '3rem', mobile: '2.25rem' }, // 48px / 36px - h2\n '6xl': { base: '3.75rem', mobile: '2.5rem' }, // 60px / 40px - h1\n '7xl': { base: '4.5rem', mobile: '3rem' }, // 72px / 48px - Display\n '8xl': { base: '6rem', mobile: '3.75rem' }, // 96px / 60px - Hero\n '9xl': { base: '8rem', mobile: '4.5rem' }, // 128px / 72px - Ultra\n} as const;\n\n/**\n * Semantic font size mappings\n * Maps semantic names to scale values\n */\nexport const semanticSizes = {\n 'heading-1': 'hero',\n 'heading-2': '5xl',\n 'heading-3': '4xl',\n 'heading-4': '2xl',\n 'heading-5': 'xl',\n 'heading-6': 'lg',\n 'body-large': 'lg',\n 'body': 'base',\n 'body-small': 'sm',\n 'caption': 'xs',\n} as const;\n\n// ============================================================================\n// FONT WEIGHTS\n// ============================================================================\n\n/**\n * Font Weight Scale\n *\n * Standard numeric weights with semantic aliases.\n * Not all fonts support all weights - check font-specific availability.\n */\nexport const fontWeights = {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n} as const;\n\n/**\n * Semantic weight mappings\n */\nexport const semanticWeights = {\n heading: 'bold', // Default heading weight\n 'heading-light': 'semibold',\n 'heading-heavy': 'extrabold',\n body: 'normal', // Default body weight\n 'body-emphasis': 'medium',\n 'body-strong': 'semibold',\n caption: 'normal',\n} as const;\n\n// ============================================================================\n// LINE HEIGHTS\n// ============================================================================\n\n/**\n * Line Height Scale\n *\n * Unitless values for better scalability.\n * Tighter for headings, relaxed for body text.\n */\nexport const lineHeights = {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '1.75',\n extraloose: '2',\n} as const;\n\n/**\n * Semantic line height mappings\n */\nexport const semanticLineHeights = {\n heading: 'tight',\n 'heading-display': 'none', // Very tight for large display text\n body: 'normal',\n 'body-relaxed': 'relaxed',\n caption: 'snug',\n} as const;\n\n// ============================================================================\n// LETTER SPACING\n// ============================================================================\n\n/**\n * Letter Spacing (Tracking) Scale\n *\n * In ems for scalability across font sizes.\n * Negative for headings, positive for small caps.\n */\nexport const letterSpacing = {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n} as const;\n\n/**\n * Semantic letter spacing mappings\n */\nexport const semanticLetterSpacing = {\n heading: 'tight',\n 'heading-display': 'tighter',\n body: 'normal',\n 'small-caps': 'wider',\n 'all-caps': 'widest',\n} as const;\n\n// ============================================================================\n// TYPE SCALE PRESETS\n// ============================================================================\n\n/**\n * Complete typography presets for common use cases\n * Combines size, weight, line-height, and letter-spacing\n *\n * Usage: Apply entire preset to a component\n */\nexport const typePresets = {\n 'display-large': {\n size: fontSizes['8xl'],\n weight: fontWeights.bold,\n lineHeight: lineHeights.none,\n letterSpacing: letterSpacing.tighter,\n description: 'Large hero text, landing pages',\n },\n 'display': {\n size: fontSizes['7xl'],\n weight: fontWeights.bold,\n lineHeight: lineHeights.tight,\n letterSpacing: letterSpacing.tight,\n description: 'Hero sections, major headings',\n },\n 'heading-1': {\n size: fontSizes['6xl'],\n weight: fontWeights.bold,\n lineHeight: lineHeights.tight,\n letterSpacing: letterSpacing.tight,\n description: 'Page titles, h1',\n },\n 'heading-2': {\n size: fontSizes['5xl'],\n weight: fontWeights.bold,\n lineHeight: lineHeights.tight,\n letterSpacing: letterSpacing.normal,\n description: 'Section titles, h2',\n },\n 'heading-3': {\n size: fontSizes['4xl'],\n weight: fontWeights.semibold,\n lineHeight: lineHeights.snug,\n letterSpacing: letterSpacing.normal,\n description: 'Subsection titles, h3',\n },\n 'heading-4': {\n size: fontSizes['2xl'],\n weight: fontWeights.semibold,\n lineHeight: lineHeights.snug,\n letterSpacing: letterSpacing.normal,\n description: 'Component titles, h4',\n },\n 'heading-5': {\n size: fontSizes.xl,\n weight: fontWeights.medium,\n lineHeight: lineHeights.normal,\n letterSpacing: letterSpacing.normal,\n description: 'Small headings, h5',\n },\n 'heading-6': {\n size: fontSizes.lg,\n weight: fontWeights.medium,\n lineHeight: lineHeights.normal,\n letterSpacing: letterSpacing.normal,\n description: 'Tiny headings, h6',\n },\n 'body-large': {\n size: fontSizes.lg,\n weight: fontWeights.normal,\n lineHeight: lineHeights.relaxed,\n letterSpacing: letterSpacing.normal,\n description: 'Lead paragraphs, intro text',\n },\n 'body': {\n size: fontSizes.base,\n weight: fontWeights.normal,\n lineHeight: lineHeights.normal,\n letterSpacing: letterSpacing.normal,\n description: 'Default body text',\n },\n 'body-small': {\n size: fontSizes.sm,\n weight: fontWeights.normal,\n lineHeight: lineHeights.normal,\n letterSpacing: letterSpacing.normal,\n description: 'Small body text, fine print',\n },\n 'caption': {\n size: fontSizes.xs,\n weight: fontWeights.normal,\n lineHeight: lineHeights.snug,\n letterSpacing: letterSpacing.wide,\n description: 'Captions, labels, metadata',\n },\n 'overline': {\n size: fontSizes.xs,\n weight: fontWeights.semibold,\n lineHeight: lineHeights.normal,\n letterSpacing: letterSpacing.widest,\n description: 'Eyebrows, categories, all-caps labels',\n },\n} as const;\n\n// ============================================================================\n// UTILITY FUNCTIONS\n// ============================================================================\n\n/**\n * Get CSS variable name for a font family\n */\nexport function getFontVariable(theme: TypographyTheme, type: 'heading' | 'body' | 'mono' | 'serif' | 'sans'): string {\n return `--font-${theme}-${type}`;\n}\n\n/**\n * Get all font family CSS variables for a theme\n */\nexport function getThemeFontVariables(theme: TypographyTheme): Record<string, string> {\n const fonts = fontFamilies[theme];\n const vars: Record<string, string> = {};\n\n Object.entries(fonts).forEach(([key, value]) => {\n if (typeof value === 'string') {\n vars[`--font-${theme}-${key}`] = value;\n }\n });\n\n return vars;\n}\n\n/**\n * Get responsive font size CSS\n */\nexport function getResponsiveFontSize(sizeKey: keyof typeof fontSizes): string {\n const size = fontSizes[sizeKey];\n return `font-size: ${size.mobile}; @media (min-width: 768px) { font-size: ${size.base}; }`;\n}\n\n// ============================================================================\n// EXPORTS\n// ============================================================================\n\n/**\n * Complete typography system export\n * Import this for access to entire typography token set\n *\n * Note: This is the comprehensive typography system with font families,\n * scales, presets, and utilities. For simple semantic aliases compatible\n * with existing code, use `typography` from './base'\n */\nexport const typographySystem = {\n families: fontFamilies,\n sizes: fontSizes,\n weights: fontWeights,\n lineHeights,\n letterSpacing,\n presets: typePresets,\n semantic: {\n sizes: semanticSizes,\n weights: semanticWeights,\n lineHeights: semanticLineHeights,\n letterSpacing: semanticLetterSpacing,\n },\n utils: {\n getFontVariable,\n getThemeFontVariables,\n getResponsiveFontSize,\n },\n} as const;\n\n/**\n * Type exports for TypeScript consumers\n */\nexport type FontSize = keyof typeof fontSizes;\nexport type FontWeight = keyof typeof fontWeights;\nexport type LineHeight = keyof typeof lineHeights;\nexport type LetterSpacing = keyof typeof letterSpacing;\nexport type TypePreset = keyof typeof typePresets;\n","/**\n * Syntax Highlighting Tokens\n * Based on VS Code Dark+ theme with light mode variants\n * Includes accessible background and border colors for code blocks\n */\n\nexport const syntaxColors = {\n light: {\n comment: '#22863a', // Green for comments\n keyword: '#8250df', // Purple for keywords (import, export, const, etc.)\n function: '#6639ba', // Purple for function names\n string: '#c1592a', // Orange for strings\n number: '#0a3069', // Blue for numbers\n boolean: '#0550ae', // Blue for booleans\n operator: '#1a1a1a', // Almost black for operators\n property: '#0550ae', // Blue for properties\n className: '#005cc5', // Blue for class names\n tag: '#005cc5', // Blue for HTML/JSX tags\n attribute: '#0550ae', // Blue for attributes\n variable: '#0550ae', // Blue for variables\n punctuation: '#57606a', // Gray for punctuation\n plain: '#1a1a1a', // Default text color\n },\n dark: {\n comment: '#6A9955', // Green for comments\n keyword: '#C586C0', // Purple for keywords (import, export, const, etc.)\n function: '#DCDCAA', // Yellow for function names\n string: '#CE9178', // Orange for strings\n number: '#B5CEA8', // Light green for numbers\n boolean: '#569CD6', // Blue for booleans\n operator: '#D4D4D4', // Light gray for operators\n property: '#9CDCFE', // Light blue for properties\n className: '#4EC9B0', // Cyan for class names\n tag: '#4EC9B0', // Cyan for HTML/JSX tags\n attribute: '#9CDCFE', // Light blue for attributes\n variable: '#9CDCFE', // Light blue for variables\n punctuation: '#808080', // Gray for punctuation\n plain: '#D4D4D4', // Default text color\n },\n} as const;\n\n/**\n * Code Block Background and Border Colors\n * Designed for optimal contrast and accessibility (WCAG AA 4.5:1)\n */\nexport const codeColors = {\n light: {\n // Block code background - cool gray for subtle distinction\n blockBackground: '#F8F9FA',\n // Inline code background - pale amber for warmth and visibility\n inlineBackground: '#FEF3E7',\n // Border color for definition and separation\n border: '#E1E4E8',\n },\n dark: {\n // Block code background - VS Code-inspired dark background\n blockBackground: '#1E1E1E',\n // Inline code background - slightly lighter for contrast\n inlineBackground: '#252525',\n // Border color for definition\n border: '#3D3D3D',\n },\n} as const;\n\nexport type SyntaxColorScheme = 'light' | 'dark';\nexport type SyntaxTokenType = keyof typeof syntaxColors.light;\n","/**\n * Curated Color Palette Library\n * Pre-designed, accessible color schemes for quick customization\n */\n\nexport interface ColorPalette {\n id: string;\n name: string;\n description: string;\n category: PaletteCategory;\n\n // Core colors\n primary: string;\n secondary: string;\n accent: string;\n\n // Metadata\n harmony?: string;\n rationale?: string;\n bestFor?: string[];\n\n // Accessibility & Tags (Legacy support + new fields)\n mood?: string[];\n wcagAA?: boolean;\n wcagAAA?: boolean;\n}\n\nexport type PaletteCategory =\n | 'professional'\n | 'creative'\n | 'nature'\n | 'vibrant'\n | 'minimal'\n | 'luxury'\n | 'playful'\n | 'accessible'\n | 'custom'; // Ensure custom is allowed if used elsewhere\n\n/**\n * Curated Palette Collection\n */\nexport const colorPalettes: ColorPalette[] = [\n // === PROFESSIONAL ===\n {\n id: 'deep-trust',\n name: 'Deep Trust',\n description: 'Confident navy with subtle warmth',\n category: 'professional',\n primary: '#1e3a5f',\n secondary: '#64748b',\n accent: '#f59e0b',\n harmony: 'Split-Complementary',\n bestFor: ['Finance', 'Legal', 'Enterprise SaaS'],\n rationale: 'Navy (trust, authority) paired with Slate (neutral utility) and Amber (approachable warmth). The amber accent draws attention to CTAs without disrupting professional gravitas. High contrast ratios ensure accessibility.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'graphite-precision',\n name: 'Graphite Precision',\n description: 'Modern technical authority',\n category: 'professional',\n primary: '#0f172a',\n secondary: '#475569',\n accent: '#0ea5e9',\n harmony: 'Analogous + Accent',\n bestFor: ['Dev Tools', 'Analytics', 'SaaS Dashboards'],\n rationale: 'Near-black primary (Slate 900) conveys technical sophistication. Steel secondary provides UI structure. Sky blue accent pops for interactive elements. Inspired by developer tools like VS Code and GitHub.',\n wcagAA: true,\n wcagAAA: false\n },\n {\n id: 'obsidian-gold',\n name: 'Obsidian Gold',\n description: 'Premium high-end authority',\n category: 'professional',\n primary: '#09090b',\n secondary: '#3f3f46',\n accent: '#ca8a04',\n harmony: 'Complementary',\n bestFor: ['Luxury Tech', 'Premium Services', 'High-End Products'],\n rationale: 'Zinc 950 primary delivers true premium feel without harsh black. Zinc 700 secondary creates layered depth for cards and containers. Yellow-700 gold accent signals exclusivity and value.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'slate-ember',\n name: 'Slate Ember',\n description: 'Warm corporate modernism',\n category: 'professional',\n primary: '#334155',\n secondary: '#94a3b8',\n accent: '#ea580c',\n harmony: 'Complementary',\n bestFor: ['Consulting', 'B2B Services', 'Corporate Sites'],\n rationale: 'Slate 700 primary feels mature yet approachable. Slate 400 secondary lightens UI without losing professionalism. Orange 600 accent energizes without overwhelming—perfect for subtle call-to-action emphasis.',\n wcagAA: true,\n wcagAAA: true\n },\n\n // === CREATIVE ===\n {\n id: 'sunset-gradient',\n name: 'Sunset Gradient',\n description: 'Warm analogous energy flow',\n category: 'creative',\n primary: '#db2777',\n secondary: '#f97316',\n accent: '#fbbf24',\n harmony: 'Analogous',\n bestFor: ['Design Agencies', 'Portfolios', 'Creative Studios'],\n rationale: 'Pink 600 → Orange 500 → Amber 400 creates natural warmth progression mimicking golden hour. This analogous flow feels cohesive yet dynamic. Works beautifully with white backgrounds and dark text.',\n wcagAA: true,\n wcagAAA: false\n },\n {\n id: 'electric-violet',\n name: 'Electric Violet',\n description: 'Bold complementary punch',\n category: 'creative',\n primary: '#7c3aed',\n secondary: '#be185d',\n accent: '#fb923c',\n harmony: 'Triadic',\n bestFor: ['Entertainment', 'Events', 'Music', 'Gaming'],\n rationale: 'Violet 600, Rose 700, and Orange 400 form a dynamic triadic harmony. Each color is equidistant on the wheel, creating maximum visual interest while maintaining balance. Use violet as dominant, rose for sections, orange for CTAs.',\n wcagAA: true,\n wcagAAA: false\n },\n {\n id: 'indigo-bloom',\n name: 'Indigo Bloom',\n description: 'Sophisticated feminine power',\n category: 'creative',\n primary: '#4338ca',\n secondary: '#be123c',\n accent: '#d946ef',\n harmony: 'Split-Complementary',\n bestFor: ['Beauty', 'Fashion Tech', 'Lifestyle Apps'],\n rationale: 'Indigo 700 anchors with depth and sophistication. Rose 700 provides rich contrast. Fuchsia 500 accent sparkles for highlights and interactions. The palette balances strength with approachability.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'coral-reef',\n name: 'Coral Reef',\n description: 'Playful warmth with depth',\n category: 'creative',\n primary: '#f43f5e',\n secondary: '#06b6d4',\n accent: '#fcd34d',\n harmony: 'Triadic',\n bestFor: ['Social Apps', 'Community Platforms', 'Lifestyle'],\n rationale: 'Rose 500 (coral), Cyan 500 (ocean), and Amber 300 (sand) evoke tropical vibrancy. This triadic scheme feels energetic yet grounded. Great for apps targeting younger, socially-engaged audiences.',\n wcagAA: true,\n wcagAAA: false\n },\n\n // === NATURE ===\n {\n id: 'forest-floor',\n name: 'Forest Floor',\n description: 'Deep organic earthiness',\n category: 'nature',\n primary: '#14532d',\n secondary: '#78350f',\n accent: '#84cc16',\n harmony: 'Analogous + Accent',\n bestFor: ['Sustainability', 'Wellness', 'Organic Products'],\n rationale: 'Green 900 (deep forest) and Amber 900 (rich earth/bark) create grounded warmth. Lime 500 accent represents new growth and vitality. This palette speaks to environmental consciousness and natural authenticity.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'ocean-calm',\n name: 'Ocean Calm',\n description: 'Tranquil aquatic serenity',\n category: 'nature',\n primary: '#0f766e',\n secondary: '#0284c7',\n accent: '#22d3ee',\n harmony: 'Analogous',\n bestFor: ['Healthcare', 'Meditation', 'Clean Tech'],\n rationale: 'Teal 700, Sky 600, and Cyan 400 form a calming blue-green progression. Mimics depth variations in water. Low emotional intensity promotes trust and calm—ideal for wellness and health applications.',\n wcagAA: true,\n wcagAAA: false\n },\n {\n id: 'sage-garden',\n name: 'Sage Garden',\n description: 'Botanical mindfulness',\n category: 'nature',\n primary: '#6366f1',\n secondary: '#059669',\n accent: '#fef08a',\n harmony: 'Triadic',\n bestFor: ['Meditation Apps', 'Spa', 'Personal Growth'],\n rationale: 'Indigo 500 (lavender energy), Emerald 600 (sage calm), Yellow 200 (morning light). Named colors match actual botanicals. Soft yellow accent provides gentle illumination for key interactions.',\n wcagAA: true,\n wcagAAA: false\n },\n {\n id: 'desert-dawn',\n name: 'Desert Dawn',\n description: 'Warm arid minimalism',\n category: 'nature',\n primary: '#d6d3d1',\n secondary: '#a8a29e',\n accent: '#c2410c',\n harmony: 'Monochromatic + Accent',\n bestFor: ['Architecture', 'Interior Design', 'Artisan Goods'],\n rationale: 'Stone 300 and Stone 400 create subtle warmth typical of desert sands. Orange 700 accent recalls desert flora and sunset. Minimalist yet rich—perfect for showcasing products and photography.',\n wcagAA: false,\n wcagAAA: false\n },\n\n // === VIBRANT ===\n {\n id: 'neon-signal',\n name: 'Neon Signal',\n description: 'High-energy cyberpunk electric',\n category: 'vibrant',\n primary: '#06b6d4',\n secondary: '#d946ef',\n accent: '#fde047',\n harmony: 'Triadic (CMY-based)',\n bestFor: ['Gaming', 'Web3', 'Music Streaming', 'Youth Apps'],\n rationale: 'Cyan 500, Fuchsia 500, Yellow 300 approximate CMY primaries—the digital/print color model. Creates electric, almost glitch-aesthetic energy. Use sparingly on dark backgrounds for maximum impact.',\n wcagAA: false,\n wcagAAA: false\n },\n {\n id: 'citrus-burst',\n name: 'Citrus Burst',\n description: 'Maximum fresh impact',\n category: 'vibrant',\n primary: '#65a30d',\n secondary: '#7c3aed',\n accent: '#14b8a6',\n harmony: 'Split-Complementary',\n bestFor: ['Sports', 'Energy Drinks', 'Youth Brands'],\n rationale: 'Lime 600, Violet 600, and Teal 500 create intentional visual tension. The near-complementary lime/violet pairing vibrates with energy, while teal accent provides unexpected freshness. Bold and unapologetic.',\n wcagAA: false,\n wcagAAA: false\n },\n {\n id: 'fire-intensity',\n name: 'Fire Intensity',\n description: 'Passionate warmth progression',\n category: 'vibrant',\n primary: '#b91c1c',\n secondary: '#ea580c',\n accent: '#fbbf24',\n harmony: 'Analogous (Warm)',\n bestFor: ['Food Delivery', 'Fitness', 'Action Sports'],\n rationale: 'Red 700 → Orange 600 → Amber 400 represents heat intensity from coals to flame to spark. This warm analogous progression demands attention and creates urgency. Best balanced with plenty of whitespace.',\n wcagAA: true,\n wcagAAA: false\n },\n {\n id: 'aurora-borealis',\n name: 'Aurora Borealis',\n description: 'Ethereal northern lights',\n category: 'vibrant',\n primary: '#0891b2',\n secondary: '#7c3aed',\n accent: '#22c55e',\n harmony: 'Triadic',\n bestFor: ['Astronomy Apps', 'Science', 'Innovation'],\n rationale: 'Cyan 600, Violet 600, and Green 500 capture the magical shifting hues of aurora displays. Equally spaced on the wheel, they create visual wonder without chaos. Perfect for science and exploration themes.',\n wcagAA: true,\n wcagAAA: false\n },\n\n // === MINIMAL ===\n {\n id: 'swiss-mono',\n name: 'Swiss Mono',\n description: 'International style precision',\n category: 'minimal',\n primary: '#000000',\n secondary: '#52525b',\n accent: '#2563eb',\n harmony: 'Achromatic + Accent',\n bestFor: ['Typography', 'Photography', 'Editorial'],\n rationale: \"Pure black and Zinc 600 honor Swiss International Style. Blue 600 accent (classic 'international blue') provides subtle direction without disrupting minimalist purity. Maximum contrast, zero distraction.\",\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'paper-whisper',\n name: 'Paper Whisper',\n description: 'Soft reading comfort',\n category: 'minimal',\n primary: '#27272a',\n secondary: '#71717a',\n accent: '#a1a1aa',\n harmony: 'Monochromatic',\n bestFor: ['Reading Apps', 'Journaling', 'Documentation'],\n rationale: 'Zinc 800, 500, and 400 create subtle hierarchy without color distraction. True monochrome reduces cognitive load for reading-heavy interfaces. Accent provides gentle distinction for interactive elements.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'cool-slate',\n name: 'Cool Slate',\n description: 'Technical quiet confidence',\n category: 'minimal',\n primary: '#334155',\n secondary: '#64748b',\n accent: '#38bdf8',\n harmony: 'Analogous + Accent',\n bestFor: ['Architecture Portfolios', 'Consulting', 'Legal Tech'],\n rationale: 'Slate 700 and 500 create cool, professional atmosphere. Sky 400 accent whispers rather than shouts—perfect for subtle navigation cues and sparse interactive highlights.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'warm-neutral',\n name: 'Warm Neutral',\n description: 'Organic minimalism',\n category: 'minimal',\n primary: '#292524',\n secondary: '#78716c',\n accent: '#92400e',\n harmony: 'Monochromatic + Accent',\n bestFor: ['Artisan E-commerce', 'Coffee Brands', 'Craft'],\n rationale: 'Stone 800 and 500 provide warmth missing from pure grays. Amber 800 accent recalls coffee, leather, wood—materials with character. Minimal but not cold, modern but not sterile.',\n wcagAA: true,\n wcagAAA: true\n },\n\n // === LUXURY ===\n {\n id: 'royal-velvet',\n name: 'Royal Velvet',\n description: 'Regal opulent depth',\n category: 'luxury',\n primary: '#4c1d95',\n secondary: '#1e1b4b',\n accent: '#d97706',\n harmony: 'Complementary',\n bestFor: ['VIP Services', 'Luxury Hotels', 'Private Banking'],\n rationale: 'Violet 900 (deep purple) and Indigo 950 (near-black midnight) create layered richness. Amber 600 gold accent adds warmth and signals value. Historically associated with royalty and exclusivity.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'champagne-noir',\n name: 'Champagne Noir',\n description: 'High-fashion sophistication',\n category: 'luxury',\n primary: '#0c0a09',\n secondary: '#1c1917',\n accent: '#d4af37',\n harmony: 'Monochromatic + Metallic',\n bestFor: ['Fashion', 'Jewelry', 'Luxury Retail'],\n rationale: 'Stone 950 (warm black) and Stone 900 create subtle depth. True metallic gold (#D4AF37) elevates beyond standard amber. The warmth in blacks prevents coldness while maintaining elegance.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'emerald-club',\n name: 'Emerald Club',\n description: 'Old money establishment',\n category: 'luxury',\n primary: '#064e3b',\n secondary: '#166534',\n accent: '#b45309',\n harmony: 'Analogous + Accent',\n bestFor: ['Private Clubs', 'Wealth Management', 'Heritage Brands'],\n rationale: 'Emerald 900 and Green 800 create tone-on-tone richness associated with stability and tradition. Bronze/Amber 700 accent recalls old brass and mahogany. Communicates established trustworthiness.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'midnight-sapphire',\n name: 'Midnight Sapphire',\n description: 'Contemporary luxury tech',\n category: 'luxury',\n primary: '#172554',\n secondary: '#1e3a8a',\n accent: '#fafafa',\n harmony: 'Monochromatic + Contrast',\n bestFor: ['Luxury Auto', 'Premium Electronics', 'Elite Services'],\n rationale: 'Blue 950 and Blue 800 create depth like sapphire gemstone. Pure white (Zinc 50) accent cuts through dramatically. Modern luxury aesthetic—think high-end automotive interfaces.',\n wcagAA: true,\n wcagAAA: true\n },\n\n // === PLAYFUL ===\n {\n id: 'candy-shop',\n name: 'Candy Shop',\n description: 'Joyful youthful sweetness',\n category: 'playful',\n primary: '#ec4899',\n secondary: '#8b5cf6',\n accent: '#facc15',\n harmony: 'Triadic',\n bestFor: ['Kids Apps', 'Toys', 'Gaming', 'Entertainment'],\n rationale: 'Pink 500 (bubble gum), Violet 500 (grape), Yellow 400 (lemon drop) evoke candy store joy. Classic gender-neutral playful combination. High saturation communicates energy and fun.',\n wcagAA: false,\n wcagAAA: false\n },\n {\n id: 'sunny-day',\n name: 'Sunny Day',\n description: 'Optimistic primary colors',\n category: 'playful',\n primary: '#2563eb',\n secondary: '#16a34a',\n accent: '#fbbf24',\n harmony: 'Triadic (Primary-based)',\n bestFor: ['Education', \"Children's Apps\", 'Learning Platforms'],\n rationale: 'Blue 600 (sky), Green 600 (grass), Amber 400 (sun) are universally recognized and accessible. This primary-adjacent scheme feels familiar and approachable to all ages and cultures.',\n wcagAA: true,\n wcagAAA: false\n },\n {\n id: 'mint-berry',\n name: 'Mint Berry',\n description: 'Fresh dessert sweetness',\n category: 'playful',\n primary: '#10b981',\n secondary: '#ec4899',\n accent: '#06b6d4',\n harmony: 'Split-Complementary',\n bestFor: ['Food Apps', 'Lifestyle', 'Wellness for Youth'],\n rationale: 'Emerald 500 (mint), Pink 500 (berry), Cyan 500 (ice) create dessert-inspired freshness. High contrast between green and pink creates visual interest while cyan cools the palette.',\n wcagAA: false,\n wcagAAA: false\n },\n {\n id: 'rainbow-pop',\n name: 'Rainbow Pop',\n description: 'Maximalist celebration',\n category: 'playful',\n primary: '#f43f5e',\n secondary: '#8b5cf6',\n accent: '#06b6d4',\n harmony: 'Triadic',\n bestFor: ['Pride Events', 'Festivals', 'Inclusive Communities'],\n rationale: 'Rose 500, Violet 500, Cyan 500 span the visible spectrum. Celebrates diversity and inclusion through color. Each hue can represent different aspects while maintaining visual harmony.',\n wcagAA: false,\n wcagAAA: false\n },\n\n // === ACCESSIBLE ===\n {\n id: 'high-clarity',\n name: 'High Clarity',\n description: 'Maximum readability',\n category: 'accessible',\n primary: '#1f2937',\n secondary: '#4b5563',\n accent: '#0284c7',\n harmony: 'Monochromatic + Accent',\n bestFor: ['Government', 'Healthcare', 'Education'],\n rationale: 'Gray 800 and 600 on white exceed WCAG AAA contrast requirements (7:1+). Sky 600 accent passes AA for large text. Designed for universal accessibility including visual impairments.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'safe-contrast',\n name: 'Safe Contrast',\n description: 'Color-blind friendly',\n category: 'accessible',\n primary: '#0369a1',\n secondary: '#374151',\n accent: '#ea580c',\n harmony: 'Complementary',\n bestFor: ['Data Visualization', 'Forms', 'Critical Interfaces'],\n rationale: 'Sky 700 and Gray 700 are distinguishable across common color blindness types. Orange 600 accent avoids red-green confusion. Tested with deuteranopia, protanopia, and tritanopia simulations.',\n wcagAA: true,\n wcagAAA: false\n },\n {\n id: 'gentle-reader',\n name: 'Gentle Reader',\n description: 'Low eye strain',\n category: 'accessible',\n primary: '#44403c',\n secondary: '#78716c',\n accent: '#2563eb',\n harmony: 'Monochromatic + Accent',\n bestFor: ['Long-Form Reading', 'Elderly Users', 'Medical'],\n rationale: 'Stone 700 and 500 avoid harsh black while maintaining readability. Reduced contrast prevents eye fatigue for extended reading. Blue 600 accent is universally distinguishable.',\n wcagAA: true,\n wcagAAA: true\n },\n {\n id: 'clear-signal',\n name: 'Clear Signal',\n description: 'Semantic color safe',\n category: 'accessible',\n primary: '#1e293b',\n secondary: '#64748b',\n accent: '#7c3aed',\n harmony: 'Analogous + Accent',\n bestFor: ['Medical Interfaces', 'Critical Systems', 'Accessibility-First'],\n rationale: 'Slate 800 and 500 provide clear hierarchy. Violet 600 accent is visible to most color vision types and doesn\\'t conflict with semantic red/green/yellow states. Reserves those colors for their intended meanings.',\n wcagAA: true,\n wcagAAA: true\n }\n];\n\n/**\n * Get palettes by category\n */\nexport function getPalettesByCategory(category: PaletteCategory): ColorPalette[] {\n return colorPalettes.filter(p => p.category === category);\n}\n\n/**\n * Get palettes by mood/tag\n */\nexport function getPalettesByMood(mood: string): ColorPalette[] {\n // Support searching in rationale or bestFor if mood is missing or map mood to new fields if needed\n // For backward compatibility, search basic fields\n return colorPalettes.filter(p =>\n p.description.toLowerCase().includes(mood.toLowerCase()) ||\n p.rationale?.toLowerCase().includes(mood.toLowerCase()) ||\n p.mood?.some(m => m.toLowerCase().includes(mood.toLowerCase()))\n );\n}\n\n/**\n * Search palettes by use case\n */\nexport function getPalettesForUseCase(useCase: string): ColorPalette[] {\n return colorPalettes.filter(p =>\n p.bestFor?.some(uc => uc.toLowerCase().includes(useCase.toLowerCase()))\n );\n}\n\n/**\n * Get accessible palettes only\n */\nexport function getAccessiblePalettes(level: 'AA' | 'AAA' = 'AA'): ColorPalette[] {\n return colorPalettes.filter(p =>\n level === 'AAA' ? p.wcagAAA : p.wcagAA\n );\n}\n","/**\n * Color Transformation Utilities\n * Standalone utilities for the token system (no external dependencies)\n */\n\n/**\n * Convert hex to RGB\n */\nexport function hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n}\n\n/**\n * Convert hex to HSL\n */\nexport function hexToHSL(hex: string): { h: number; s: number; l: number } {\n const rgb = hexToRgb(hex);\n if (!rgb) return { h: 0, s: 0, l: 0 };\n\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0, s = 0, l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;\n case g: h = ((b - r) / d + 2) / 6; break;\n case b: h = ((r - g) / d + 4) / 6; break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\n/**\n * Convert HSL to hex\n */\nexport function hslToHex(h: number, s: number, l: number): string {\n h = h / 360;\n s = s / 100;\n l = l / 100;\n\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1/6) return p + (q - p) * 6 * t;\n if (t < 1/2) return q;\n if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n const toHex = (x: number) => {\n const hex = Math.round(x * 255).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\n/**\n * Adjust lightness of a hex color\n */\nexport function adjustLightness(hex: string, percent: number): string {\n const hsl = hexToHSL(hex);\n const newL = Math.max(0, Math.min(100, hsl.l + percent));\n return hslToHex(hsl.h, hsl.s, newL);\n}\n\n/**\n * Adjust saturation of a hex color\n */\nexport function adjustSaturation(hex: string, percent: number): string {\n const hsl = hexToHSL(hex);\n const newS = Math.max(0, Math.min(100, hsl.s + percent));\n return hslToHex(hsl.h, newS, hsl.l);\n}\n\n/**\n * Rotate hue of a hex color\n */\nexport function rotateHue(hex: string, degrees: number): string {\n const hsl = hexToHSL(hex);\n const newH = (hsl.h + degrees) % 360;\n return hslToHex(newH, hsl.s, hsl.l);\n}\n\n/**\n * Add opacity to a hex color (returns rgba CSS value)\n */\nexport function adjustOpacity(hex: string, opacity: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${opacity})`;\n}\n\n/**\n * Calculate relative luminance (WCAG formula)\n */\nexport function getLuminance(r: number, g: number, b: number): number {\n const [rs, gs, bs] = [r, g, b].map((c) => {\n const srgb = c / 255;\n return srgb <= 0.03928 ? srgb / 12.92 : Math.pow((srgb + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * rs + 0.7152 * gs + 0.0722 * bs;\n}\n\n/**\n * Calculate contrast ratio between two colors (WCAG formula)\n */\nexport function getContrastRatio(hex1: string, hex2: string): number {\n const rgb1 = hexToRgb(hex1);\n const rgb2 = hexToRgb(hex2);\n\n if (!rgb1 || !rgb2) return 0;\n\n const lum1 = getLuminance(rgb1.r, rgb1.g, rgb1.b);\n const lum2 = getLuminance(rgb2.r, rgb2.g, rgb2.b);\n\n const lighter = Math.max(lum1, lum2);\n const darker = Math.min(lum1, lum2);\n\n return (lighter + 0.05) / (darker + 0.05);\n}\n\n/**\n * Get optimal foreground color (white or black) for a background\n */\nexport function getOptimalForeground(\n bgHex: string,\n whiteHex: string = '#ffffff',\n blackHex: string = '#000000'\n): string {\n const whiteRatio = getContrastRatio(bgHex, whiteHex);\n const blackRatio = getContrastRatio(bgHex, blackHex);\n\n return whiteRatio > blackRatio ? whiteHex : blackHex;\n}\n","/**\n * Token Dependency Graph\n * Defines which tokens are computed from other tokens for \"change once, ripple everywhere\"\n */\n\nimport {\n adjustLightness,\n adjustSaturation,\n adjustOpacity,\n rotateHue,\n getOptimalForeground,\n} from './color-utils';\n\nexport type TokenDerivation = {\n source: string; // Which token it derives from\n transform: (sourceValue: string) => string; // How to compute it\n description: string; // Why this derivation exists\n};\n\n/**\n * Primary Color Derivations\n * These tokens automatically update when primary color changes\n */\nexport const primaryColorDerivations: Record<string, TokenDerivation> = {\n // Links use primary color\n '--color-link': {\n source: '--color-primary',\n transform: (primary) => primary,\n description: 'Links inherit primary brand color',\n },\n\n // Focus ring uses primary color\n '--color-ring': {\n source: '--color-primary',\n transform: (primary) => primary,\n description: 'Focus rings use primary for brand consistency',\n },\n\n // Link hover is slightly darker primary\n '--color-link-hover': {\n source: '--color-primary',\n transform: (primary) => adjustLightness(primary, -10),\n description: 'Link hover is 10% darker for visual feedback',\n },\n\n // Chart primary series\n '--chart-1': {\n source: '--color-primary',\n transform: (primary) => primary,\n description: 'First chart series uses primary',\n },\n\n // Chart secondary series (lighter tint)\n '--chart-2': {\n source: '--color-primary',\n transform: (primary) => adjustLightness(primary, 20),\n description: 'Second chart series is lighter tint of primary',\n },\n\n // Chart tertiary series (darker shade)\n '--chart-3': {\n source: '--color-primary',\n transform: (primary) => adjustLightness(primary, -15),\n description: 'Third chart series is darker shade of primary',\n },\n\n // Chart quaternary (desaturated primary)\n '--chart-4': {\n source: '--color-primary',\n transform: (primary) => adjustSaturation(primary, -30),\n description: 'Fourth chart series is muted primary',\n },\n\n // Chart quinary (complementary color)\n '--chart-5': {\n source: '--color-primary',\n transform: (primary) => rotateHue(primary, 180),\n description: 'Fifth chart series is complementary to primary',\n },\n};\n\n/**\n * Secondary Color Derivations\n * These derive from secondary color\n */\nexport const secondaryColorDerivations: Record<string, TokenDerivation> = {\n // Hover states\n '--color-hover': {\n source: '--color-secondary',\n transform: (secondary) => secondary,\n description: 'Hover backgrounds use secondary',\n },\n\n // Active states\n '--color-active': {\n source: '--color-secondary',\n transform: (secondary) => adjustLightness(secondary, -5),\n description: 'Active state is slightly darker secondary',\n },\n\n // Muted backgrounds\n '--color-muted': {\n source: '--color-secondary',\n transform: (secondary) => secondary,\n description: 'Muted sections use secondary color',\n },\n};\n\n/**\n * Accent Color Derivations\n * These derive from accent (used for highlights and CTAs)\n */\nexport const accentColorDerivations: Record<string, TokenDerivation> = {\n // Info semantic color uses accent\n '--color-info': {\n source: '--color-accent',\n transform: (accent) => accent,\n description: 'Info semantic color uses accent',\n },\n\n // Info foreground calculated for contrast\n '--color-info-foreground': {\n source: '--color-accent',\n transform: (accent) => getOptimalForeground(accent),\n description: 'Info foreground calculated for contrast',\n },\n};\n\n/**\n * Mode-Specific Derivations\n * These need different transforms for light vs dark mode\n */\nexport const modeSpecificDerivations: Record<string, {\n light: TokenDerivation;\n dark: TokenDerivation;\n}> = {\n '--color-primary-muted': {\n light: {\n source: '--color-primary',\n transform: (primary) => adjustLightness(primary, 40),\n description: 'Muted primary for light backgrounds',\n },\n dark: {\n source: '--color-primary',\n transform: (primary) => adjustLightness(primary, -20),\n description: 'Muted primary for dark backgrounds',\n },\n },\n\n '--color-primary-subtle': {\n light: {\n source: '--color-primary',\n transform: (primary) => adjustOpacity(primary, 0.1),\n description: 'Subtle primary background for light mode',\n },\n dark: {\n source: '--color-primary',\n transform: (primary) => adjustOpacity(primary, 0.2),\n description: 'Subtle primary background for dark mode',\n },\n },\n};\n\n/**\n * Complete dependency graph\n */\nexport const tokenDependencyGraph = {\n primary: primaryColorDerivations,\n secondary: secondaryColorDerivations,\n accent: accentColorDerivations,\n modeSpecific: modeSpecificDerivations,\n};\n\n/**\n * Get all tokens that depend on a source token\n */\nexport function getDependentTokens(sourceToken: string): string[] {\n const dependents: string[] = [];\n\n Object.entries(primaryColorDerivations).forEach(([token, config]) => {\n if (config.source === sourceToken) {\n dependents.push(token);\n }\n });\n\n Object.entries(secondaryColorDerivations).forEach(([token, config]) => {\n if (config.source === sourceToken) {\n dependents.push(token);\n }\n });\n\n Object.entries(accentColorDerivations).forEach(([token, config]) => {\n if (config.source === sourceToken) {\n dependents.push(token);\n }\n });\n\n return dependents;\n}\n\n/**\n * Compute all derived tokens from a source\n */\nexport function computeDerivedTokens(\n sourceToken: string,\n sourceValue: string,\n mode: 'light' | 'dark'\n): Record<string, string> {\n const derived: Record<string, string> = {};\n\n // Compute from primary derivations\n Object.entries(primaryColorDerivations).forEach(([token, config]) => {\n if (config.source === sourceToken) {\n derived[token] = config.transform(sourceValue);\n }\n });\n\n // Compute from secondary derivations\n Object.entries(secondaryColorDerivations).forEach(([token, config]) => {\n if (config.source === sourceToken) {\n derived[token] = config.transform(sourceValue);\n }\n });\n\n // Compute from accent derivations\n Object.entries(accentColorDerivations).forEach(([token, config]) => {\n if (config.source === sourceToken) {\n derived[token] = config.transform(sourceValue);\n }\n });\n\n // Compute mode-specific derivations\n Object.entries(modeSpecificDerivations).forEach(([token, configs]) => {\n const config = configs[mode];\n if (config.source === sourceToken) {\n derived[token] = config.transform(sourceValue);\n }\n });\n\n return derived;\n}\n","/**\n * Curated Font Theme Library\n * Pre-designed, harmonious font pairings for quick customization\n *\n * Philosophy: Provide expert font pairings with clear guidance (constraints),\n * while enabling creative freedom through custom themes. Typography is as\n * crucial to brand identity as color—treat it with systematic rigor.\n */\n\nexport interface FontTheme {\n id: string; // Unique identifier\n name: string; // Display name\n description: string; // Brief description\n category: FontThemeCategory; // Categorization\n\n // Font families\n heading: string; // Heading font family (e.g., \"Space Grotesk\")\n body: string; // Body font family\n mono: string; // Monospace font family\n\n // Font weights (optional)\n headingWeight?: string; // Default weight (e.g., \"700\")\n bodyWeight?: string; // Default weight (e.g., \"400\")\n\n // Typography settings (optional)\n letterSpacing?: {\n heading?: string; // e.g., \"-0.03em\"\n body?: string; // e.g., \"0\"\n };\n lineHeight?: {\n heading?: string; // e.g., \"1.2\"\n body?: string; // e.g., \"1.6\"\n };\n\n // Metadata\n isCustom?: boolean; // User-created theme\n wcagReadable?: boolean; // Good for accessibility (readable at small sizes)\n mood?: string[]; // e.g., [\"modern\", \"clean\", \"professional\"]\n bestFor?: string; // e.g., \"SaaS products, landing pages\"\n pairing?: string; // Pairing strategy (e.g., \"Serif + Sans\", \"Mono Everything\")\n\n // Detailed Typography Scale (optional)\n scale?: TypographyScale; // Full type scale with granular control for all 8 levels\n}\n\nexport type FontThemeCategory =\n | 'professional'\n | 'creative'\n | 'editorial'\n | 'tech'\n | 'friendly'\n | 'minimal'\n | 'luxury'\n | 'playful'\n | 'custom';\n\n/**\n * Type Level\n * Detailed properties for a single type level (Display, H1, Body, etc.)\n */\nexport interface TypeLevel {\n fontFamily: string; // Font family name (e.g., \"Inter\")\n weight: number; // Font weight: 300 | 400 | 500 | 600 | 700 | 800\n size: number; // Font size in pixels (e.g., 48)\n lineHeight: number; // Line height as unitless number (e.g., 1.2)\n letterSpacing: string; // Letter spacing in em (e.g., \"-0.02em\")\n}\n\n/**\n * Typography Scale\n * Complete type scale with all 8 levels for granular control\n */\nexport interface TypographyScale {\n display: TypeLevel; // Hero text, large headings (96px default)\n h1: TypeLevel; // Page titles, section headers (64px default)\n h2: TypeLevel; // Major sections (48px default)\n h3: TypeLevel; // Subsections (36px default)\n h4: TypeLevel; // Minor headings (24px default)\n body: TypeLevel; // Paragraphs, content (16px default)\n small: TypeLevel; // Captions, metadata (14px default)\n code: TypeLevel; // Code blocks, monospace (14px default)\n}\n\n/**\n * Curated Font Theme Collection\n *\n * Each theme represents a carefully chosen font pairing that works well together.\n * Pairings consider contrast (serif vs sans), readability, mood, and use case.\n */\nexport const fontThemes: FontTheme[] = [\n // === PROFESSIONAL ===\n {\n id: 'studio',\n name: 'Studio',\n description: 'Professional and balanced, perfect for modern SaaS products',\n category: 'professional',\n heading: 'Outfit',\n body: 'Manrope',\n mono: 'Fira Code',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '-0.02em', body: '0' },\n lineHeight: { heading: '1.2', body: '1.6' },\n wcagReadable: true,\n mood: ['professional', 'modern', 'clean'],\n bestFor: 'SaaS products, business sites, dashboards',\n pairing: 'Sans + Sans (Geometric + Humanist)',\n },\n {\n id: 'modern-swiss',\n name: 'Modern Swiss',\n description: 'Clean and neutral, maximum readability',\n category: 'professional',\n heading: 'Inter',\n body: 'Inter',\n mono: 'JetBrains Mono',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '-0.02em', body: '0' },\n lineHeight: { heading: '1.2', body: '1.7' },\n wcagReadable: true,\n mood: ['minimal', 'clean', 'modern'],\n bestFor: 'Documentation, dashboards, data-heavy UIs',\n pairing: 'Sans (Single Font)',\n },\n {\n id: 'corporate-authority',\n name: 'Corporate Authority',\n description: 'Classic sans-serif with technical precision',\n category: 'professional',\n heading: 'Roboto',\n body: 'Roboto',\n mono: 'Roboto Mono',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '-0.01em', body: '0' },\n lineHeight: { heading: '1.2', body: '1.6' },\n wcagReadable: true,\n mood: ['corporate', 'reliable', 'neutral'],\n bestFor: 'Enterprise software, Google-style products, admin panels',\n pairing: 'Sans (Roboto Family)',\n },\n\n // === EDITORIAL ===\n {\n id: 'sage',\n name: 'Sage',\n description: 'Elegant serif heading with clean sans body',\n category: 'editorial',\n heading: 'Lora',\n body: 'Instrument Sans',\n mono: 'Fira Code',\n headingWeight: '600',\n bodyWeight: '400',\n letterSpacing: { heading: '-0.01em', body: '0' },\n lineHeight: { heading: '1.3', body: '1.7' },\n wcagReadable: true,\n mood: ['elegant', 'warm', 'organic'],\n bestFor: 'Editorial sites, blogs, portfolios',\n pairing: 'Serif + Sans (Classic Editorial)',\n },\n {\n id: 'editorial-classic',\n name: 'Editorial Classic',\n description: 'Timeless serif pairing for long-form content',\n category: 'editorial',\n heading: 'Playfair Display',\n body: 'Source Sans Pro',\n mono: 'Fira Code',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '0', body: '0' },\n lineHeight: { heading: '1.2', body: '1.7' },\n wcagReadable: true,\n mood: ['classic', 'elegant', 'readable'],\n bestFor: 'Magazines, blogs, long-form articles',\n pairing: 'Serif + Sans (High Contrast)',\n },\n {\n id: 'literary',\n name: 'Literary',\n description: 'Sophisticated serif pairing for premium content',\n category: 'editorial',\n heading: 'Merriweather',\n body: 'Lato',\n mono: 'Fira Code',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '0', body: '0' },\n lineHeight: { heading: '1.3', body: '1.7' },\n wcagReadable: true,\n mood: ['sophisticated', 'literary', 'warm'],\n bestFor: 'Publishing, literary journals, premium blogs',\n pairing: 'Serif + Sans (Warm & Readable)',\n },\n\n // === TECH ===\n {\n id: 'volt',\n name: 'Volt',\n description: 'Bold and electric, one font for everything',\n category: 'tech',\n heading: 'Space Grotesk',\n body: 'Space Grotesk',\n mono: 'Fira Code',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '-0.03em', body: '0' },\n lineHeight: { heading: '1.2', body: '1.6' },\n wcagReadable: true,\n mood: ['bold', 'modern', 'tech'],\n bestFor: 'Tech startups, developer tools, portfolios',\n pairing: 'Sans (Single Font)',\n },\n {\n id: 'tech-mono',\n name: 'Tech Monospace',\n description: 'Monospace everything, for the hackers',\n category: 'tech',\n heading: 'JetBrains Mono',\n body: 'JetBrains Mono',\n mono: 'JetBrains Mono',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '0', body: '0' },\n lineHeight: { heading: '1.2', body: '1.6' },\n wcagReadable: true,\n mood: ['tech', 'hacker', 'minimal'],\n bestFor: 'Developer tools, coding tutorials, terminal UIs',\n pairing: 'Mono (Single Font)',\n },\n {\n id: 'dev-tools',\n name: 'Dev Tools',\n description: 'GitHub-inspired clean technical aesthetic',\n category: 'tech',\n heading: 'IBM Plex Sans',\n body: 'IBM Plex Sans',\n mono: 'IBM Plex Mono',\n headingWeight: '600',\n bodyWeight: '400',\n letterSpacing: { heading: '-0.01em', body: '0' },\n lineHeight: { heading: '1.2', body: '1.6' },\n wcagReadable: true,\n mood: ['technical', 'precise', 'modern'],\n bestFor: 'Developer platforms, code editors, documentation',\n pairing: 'Sans (IBM Plex Family)',\n },\n\n // === FRIENDLY ===\n {\n id: 'friendly-rounded',\n name: 'Friendly & Rounded',\n description: 'Approachable and warm, great for consumer apps',\n category: 'friendly',\n heading: 'Quicksand',\n body: 'Open Sans',\n mono: 'Fira Code',\n headingWeight: '600',\n bodyWeight: '400',\n letterSpacing: { heading: '0', body: '0' },\n lineHeight: { heading: '1.3', body: '1.7' },\n wcagReadable: true,\n mood: ['friendly', 'approachable', 'warm'],\n bestFor: 'Consumer apps, education, healthcare',\n pairing: 'Rounded Sans + Humanist Sans',\n },\n {\n id: 'warm-welcome',\n name: 'Warm Welcome',\n description: 'Inviting and accessible for all audiences',\n category: 'friendly',\n heading: 'Nunito',\n body: 'Nunito Sans',\n mono: 'Fira Code',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '-0.01em', body: '0' },\n lineHeight: { heading: '1.3', body: '1.7' },\n wcagReadable: true,\n mood: ['welcoming', 'friendly', 'accessible'],\n bestFor: 'Community platforms, education, non-profits',\n pairing: 'Rounded Sans (Nunito Family)',\n },\n\n // === MINIMAL ===\n {\n id: 'minimal-sans',\n name: 'Minimal Sans',\n description: 'Pure simplicity with Work Sans',\n category: 'minimal',\n heading: 'Work Sans',\n body: 'Work Sans',\n mono: 'Fira Code',\n headingWeight: '600',\n bodyWeight: '400',\n letterSpacing: { heading: '-0.02em', body: '0' },\n lineHeight: { heading: '1.2', body: '1.6' },\n wcagReadable: true,\n mood: ['minimal', 'clean', 'efficient'],\n bestFor: 'Minimalist sites, portfolios, agencies',\n pairing: 'Sans (Single Font)',\n },\n {\n id: 'system-ui',\n name: 'System UI',\n description: 'Native system fonts for instant familiarity',\n category: 'minimal',\n heading: 'System UI',\n body: 'System UI',\n mono: 'SF Mono',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '-0.01em', body: '0' },\n lineHeight: { heading: '1.2', body: '1.6' },\n wcagReadable: true,\n mood: ['native', 'fast', 'familiar'],\n bestFor: 'Performance-critical apps, utilities, system tools',\n pairing: 'System Fonts (Zero Load Time)',\n },\n\n // === LUXURY ===\n {\n id: 'luxury-serif',\n name: 'Luxury Serif',\n description: 'Sophisticated and high-end',\n category: 'luxury',\n heading: 'Cormorant Garamond',\n body: 'Raleway',\n mono: 'Fira Code',\n headingWeight: '600',\n bodyWeight: '300',\n letterSpacing: { heading: '0.02em', body: '0.01em' },\n lineHeight: { heading: '1.3', body: '1.7' },\n wcagReadable: false, // Thinner weights\n mood: ['luxury', 'elegant', 'sophisticated'],\n bestFor: 'Fashion, luxury brands, high-end services',\n pairing: 'Serif + Thin Sans',\n },\n {\n id: 'prestige',\n name: 'Prestige',\n description: 'Refined elegance with Bodoni-inspired display',\n category: 'luxury',\n heading: 'Libre Bodoni',\n body: 'Montserrat',\n mono: 'Fira Code',\n headingWeight: '700',\n bodyWeight: '300',\n letterSpacing: { heading: '0.03em', body: '0.02em' },\n lineHeight: { heading: '1.2', body: '1.7' },\n wcagReadable: false, // Display font + thin weight\n mood: ['prestige', 'refined', 'luxurious'],\n bestFor: 'Luxury fashion, jewelry, premium services',\n pairing: 'Serif Display + Geometric Sans',\n },\n\n // === CREATIVE ===\n {\n id: 'creative-bold',\n name: 'Creative Bold',\n description: 'Strong personality with Poppins',\n category: 'creative',\n heading: 'Poppins',\n body: 'Poppins',\n mono: 'Fira Code',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '-0.01em', body: '0' },\n lineHeight: { heading: '1.2', body: '1.6' },\n wcagReadable: true,\n mood: ['bold', 'creative', 'energetic'],\n bestFor: 'Creative agencies, portfolios, marketing sites',\n pairing: 'Geometric Sans (Single Font)',\n },\n {\n id: 'artistic-flair',\n name: 'Artistic Flair',\n description: 'Expressive serif with modern sans',\n category: 'creative',\n heading: 'Abril Fatface',\n body: 'Work Sans',\n mono: 'Fira Code',\n headingWeight: '400',\n bodyWeight: '400',\n letterSpacing: { heading: '0', body: '0' },\n lineHeight: { heading: '1.1', body: '1.6' },\n wcagReadable: true,\n mood: ['artistic', 'expressive', 'bold'],\n bestFor: 'Art galleries, creative studios, designer portfolios',\n pairing: 'Display Serif + Neutral Sans',\n },\n\n // === PLAYFUL ===\n {\n id: 'playful-rounded',\n name: 'Playful Rounded',\n description: 'Fun and energetic for youth audiences',\n category: 'playful',\n heading: 'Fredoka',\n body: 'Karla',\n mono: 'Fira Code',\n headingWeight: '700',\n bodyWeight: '400',\n letterSpacing: { heading: '0', body: '0' },\n lineHeight: { heading: '1.3', body: '1.6' },\n wcagReadable: true,\n mood: ['playful', 'fun', 'youthful'],\n bestFor: 'Kids apps, games, entertainment',\n pairing: 'Rounded Display + Grotesque Sans',\n },\n];\n\n/**\n * Get font themes by category\n */\nexport function getFontThemesByCategory(category: FontThemeCategory): FontTheme[] {\n return fontThemes.filter(ft => ft.category === category);\n}\n\n/**\n * Get font themes by mood/tag\n */\nexport function getFontThemesByMood(mood: string): FontTheme[] {\n return fontThemes.filter(ft =>\n ft.description.toLowerCase().includes(mood.toLowerCase()) ||\n ft.bestFor?.toLowerCase().includes(mood.toLowerCase()) ||\n ft.mood?.some(m => m.toLowerCase().includes(mood.toLowerCase()))\n );\n}\n\n/**\n * Search font themes by use case\n */\nexport function getFontThemesForUseCase(useCase: string): FontTheme[] {\n return fontThemes.filter(ft =>\n ft.bestFor?.toLowerCase().includes(useCase.toLowerCase())\n );\n}\n\n/**\n * Get accessible font themes only (WCAG-readable)\n */\nexport function getAccessibleFontThemes(): FontTheme[] {\n return fontThemes.filter(ft => ft.wcagReadable === true);\n}\n\n/**\n * Get font theme by ID\n */\nexport function getFontThemeById(id: string): FontTheme | undefined {\n return fontThemes.find(ft => ft.id === id);\n}\n\n/**\n * Generate a detailed typography scale from a simple FontTheme\n * Uses modular scale (1.25 ratio) for sizes and sensible defaults for other properties\n *\n * @param fontTheme - The simple font theme to generate a scale from\n * @returns TypographyScale with all 8 type levels populated with sensible defaults\n */\nexport function generateScale(fontTheme: FontTheme): TypographyScale {\n // Parse weights from FontTheme (default to sensible values)\n const headingWeight = parseInt(fontTheme.headingWeight || '700', 10);\n const bodyWeight = parseInt(fontTheme.bodyWeight || '400', 10);\n\n // Parse letter spacing (default to sensible values)\n const headingLetterSpacing = fontTheme.letterSpacing?.heading || '-0.02em';\n const bodyLetterSpacing = fontTheme.letterSpacing?.body || '0';\n\n // Parse line height (default to sensible values)\n const headingLineHeight = parseFloat(fontTheme.lineHeight?.heading || '1.2');\n const bodyLineHeight = parseFloat(fontTheme.lineHeight?.body || '1.6');\n\n return {\n display: {\n fontFamily: fontTheme.heading,\n weight: Math.min(headingWeight + 100, 800), // Slightly bolder for display\n size: 96,\n lineHeight: 1.1,\n letterSpacing: '-0.03em',\n },\n h1: {\n fontFamily: fontTheme.heading,\n weight: headingWeight,\n size: 64,\n lineHeight: headingLineHeight,\n letterSpacing: headingLetterSpacing,\n },\n h2: {\n fontFamily: fontTheme.heading,\n weight: Math.max(headingWeight - 100, 600), // Slightly lighter than H1\n size: 48,\n lineHeight: 1.3,\n letterSpacing: headingLetterSpacing === '-0.02em' ? '-0.01em' : headingLetterSpacing,\n },\n h3: {\n fontFamily: fontTheme.heading,\n weight: Math.max(headingWeight - 100, 600),\n size: 36,\n lineHeight: 1.3,\n letterSpacing: '0',\n },\n h4: {\n fontFamily: fontTheme.heading,\n weight: Math.max(headingWeight - 100, 600),\n size: 24,\n lineHeight: 1.4,\n letterSpacing: '0',\n },\n body: {\n fontFamily: fontTheme.body,\n weight: bodyWeight,\n size: 16,\n lineHeight: bodyLineHeight,\n letterSpacing: bodyLetterSpacing,\n },\n small: {\n fontFamily: fontTheme.body,\n weight: bodyWeight,\n size: 14,\n lineHeight: 1.5,\n letterSpacing: '0.01em',\n },\n code: {\n fontFamily: fontTheme.mono,\n weight: 400, // Code is typically regular weight\n size: 14,\n lineHeight: 1.4,\n letterSpacing: '0',\n },\n };\n}\n","/**\n * Design Tokens Exports\n */\n\nexport * from './base';\nexport * from './studio';\nexport * from './sage';\nexport * from './volt';\nexport * from './typography';\nexport * from './syntax';\nexport * from './color-palettes';\nexport * from './color-utils';\nexport * from './token-graph';\nexport * from './fontThemes';\n\n/**\n * Theme names\n */\nexport const THEME_NAMES = ['studio', 'sage', 'volt'] as const;\nexport type ThemeName = typeof THEME_NAMES[number];\n\n/**\n * Color modes\n */\nexport const COLOR_MODES = ['light', 'dark'] as const;\nexport type ColorMode = typeof COLOR_MODES[number];\n\n/**\n * Theme configuration type\n */\nexport interface ThemeConfig {\n name: ThemeName;\n mode: ColorMode;\n}\n"],"mappings":"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","names":["p","q"]}