@fabio.caffarello/react-design-system 1.10.5 → 1.11.1

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 (35) hide show
  1. package/dist/components/index.cjs +1 -1
  2. package/dist/components/index.js +1 -1
  3. package/dist/components-B08xLmiA.cjs +689 -0
  4. package/dist/components-B08xLmiA.cjs.map +1 -0
  5. package/dist/{components-BTUibx0r.js → components-DEuqI-ld.js} +3446 -3504
  6. package/dist/components-DEuqI-ld.js.map +1 -0
  7. package/dist/index.cjs +1 -1
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.js +357 -364
  10. package/dist/primitives/index.cjs +1 -1
  11. package/dist/primitives/index.cjs.map +1 -1
  12. package/dist/primitives/index.js +973 -981
  13. package/dist/primitives/index.js.map +1 -1
  14. package/dist/providers/index.cjs +1 -1
  15. package/dist/providers/index.js +1 -1
  16. package/dist/tokens/index.cjs +1 -1
  17. package/dist/tokens/index.cjs.map +1 -1
  18. package/dist/tokens/index.js +1602 -98
  19. package/dist/tokens/index.js.map +1 -1
  20. package/dist/ui/index.d.ts +0 -4
  21. package/dist/ui/tokens/TokenVisualizations.d.ts +0 -4
  22. package/dist/ui/tokens/index.d.ts +0 -5
  23. package/package.json +1 -1
  24. package/dist/components-BTUibx0r.js.map +0 -1
  25. package/dist/components-znqlol8t.cjs +0 -690
  26. package/dist/components-znqlol8t.cjs.map +0 -1
  27. package/dist/tokens-DcAT-mPY.js +0 -2140
  28. package/dist/tokens-DcAT-mPY.js.map +0 -1
  29. package/dist/tokens-Dul82Bn_.cjs +0 -2
  30. package/dist/tokens-Dul82Bn_.cjs.map +0 -1
  31. package/dist/ui/tokens/colors.d.ts +0 -122
  32. package/dist/ui/tokens/gradients.d.ts +0 -56
  33. package/dist/ui/tokens/themes/dark.d.ts +0 -42
  34. package/dist/ui/tokens/themes/light.d.ts +0 -42
  35. package/dist/ui/tokens/tokens.factory.d.ts +0 -98
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens-Dul82Bn_.cjs","sources":["../src/ui/tokens/sidebar.ts","../src/ui/tokens/spacing.ts","../src/ui/tokens/typography.ts","../src/ui/tokens/colors/types.ts","../src/ui/tokens/colors/primitives.ts","../src/ui/tokens/colors/semantic.ts","../src/ui/tokens/colors/utils.ts","../src/ui/tokens/colors/index.ts","../src/ui/tokens/breakpoints.ts","../src/ui/tokens/colors.ts","../src/ui/tokens/shadows.ts","../src/ui/tokens/radius.ts","../src/ui/tokens/borders.ts","../src/ui/tokens/animations.ts","../src/ui/tokens/z-index.ts","../src/ui/tokens/opacity.ts","../src/ui/tokens/gradients.ts","../src/ui/tokens/tokens.factory.ts","../src/ui/tokens/themes/light.ts","../src/ui/tokens/themes/dark.ts","../src/ui/tokens/switch.ts"],"sourcesContent":["/**\n * Sidebar Design Tokens\n *\n * Centralized tokens for sidebar components to ensure consistency\n * and ease of maintenance. All spacing, sizing, and color values\n * should reference these tokens.\n */\n\nexport const SIDEBAR_TOKENS = {\n // Icon sizes\n icon: {\n sm: \"h-4 w-4\", // 16px\n md: \"h-5 w-5\", // 20px (default)\n lg: \"h-6 w-6\", // 24px\n },\n\n // Text sizes\n text: {\n xs: \"text-xs\", // 12px (group titles)\n sm: \"text-sm\", // 14px (items - default)\n base: \"text-base\", // 16px\n },\n\n // Spacing\n spacing: {\n itemPaddingX: \"px-4\", // 16px horizontal padding for items\n itemPaddingY: \"py-2\", // 8px vertical padding for items\n nestedIndent: \"pl-6\", // 24px for nested items (level 1)\n nestedIndentLevel2: \"pl-10\", // 40px for nested items (level 2)\n nestedIndentLevel3: \"pl-14\", // 56px for nested items (level 3)\n groupTitlePadding: \"px-4 py-2\", // Padding for group titles\n iconMargin: \"mr-3\", // 12px margin between icon and text\n },\n\n // Colors (using Tailwind classes)\n colors: {\n active: {\n bg: \"bg-indigo-50\",\n text: \"text-indigo-700\",\n border: \"border-indigo-600\",\n },\n inactive: {\n text: \"text-gray-700\",\n hover: \"hover:bg-gray-100 hover:text-gray-900\",\n },\n groupTitle: \"text-gray-500\",\n },\n\n // Chevron (for collapsible groups)\n chevron: {\n size: \"h-3 w-3\", // 12px (reduced from h-4 w-4)\n color: \"text-gray-400\", // Subtle gray color\n },\n\n // Navigation column (for split sidebar)\n navigation: {\n width: {\n default: \"56px\",\n compact: \"48px\",\n expanded: \"200px\",\n },\n background: {\n default: \"#fafafa\",\n hover: \"#f5f5f5\",\n },\n },\n\n // Split sidebar\n split: {\n transition: \"transition-all duration-300\",\n collapsedWidth: \"0px\",\n },\n\n // Content area\n content: {\n scrollbar: {\n width: \"thin\",\n color: {\n thumb: \"#cbd5e1\",\n track: \"#f1f5f9\",\n },\n },\n },\n} as const;\n\n/**\n * Helper function to get nested indent class based on level\n */\nexport function getNestedIndentClass(level: number): string {\n if (level <= 0) return SIDEBAR_TOKENS.spacing.itemPaddingX;\n if (level === 1) return SIDEBAR_TOKENS.spacing.nestedIndent;\n if (level === 2) return SIDEBAR_TOKENS.spacing.nestedIndentLevel2;\n if (level === 3) return SIDEBAR_TOKENS.spacing.nestedIndentLevel3;\n // For levels > 3, calculate dynamically: pl-{4 + level * 4}\n return `pl-${4 + level * 4}`;\n}\n","/**\n * Spacing Tokens\n *\n * Centralized spacing scale based on 4px base unit.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type SpacingScale =\n | 0\n | 0.5\n | 1\n | 1.5\n | 2\n | 2.5\n | 3\n | 3.5\n | 4\n | 5\n | 6\n | 8\n | 10\n | 12\n | 16\n | 20\n | 24\n | 32\n | 40\n | 48\n | 64\n | 80\n | 96;\n\nexport interface SpacingToken {\n value: number;\n rem: string;\n px: string;\n tailwind: string;\n}\n\n/**\n * Spacing Token Factory\n * Creates spacing tokens with consistent naming and values\n */\nexport class SpacingTokenFactory {\n private static readonly BASE_UNIT = 4; // 4px base\n\n /**\n * Create a spacing token from scale value\n */\n static create(scale: SpacingScale): SpacingToken {\n const px = scale * this.BASE_UNIT;\n const rem = px / 16; // 16px = 1rem\n\n return {\n value: px,\n rem: `${rem}rem`,\n px: `${px}px`,\n tailwind: this.getTailwindClass(scale),\n };\n }\n\n /**\n * Get Tailwind class for spacing value\n */\n private static getTailwindClass(scale: SpacingScale): string {\n const tailwindMap: Record<SpacingScale, string> = {\n 0: \"0\",\n 0.5: \"0.5\", // 2px — half-step, used by fine UI (badges, switches, separators)\n 1: \"1\", // 4px\n 1.5: \"1.5\", // 6px — half-step\n 2: \"2\", // 8px\n 2.5: \"2.5\", // 10px — half-step\n 3: \"3\", // 12px\n 3.5: \"3.5\", // 14px — half-step\n 4: \"4\", // 16px\n 5: \"5\", // 20px\n 6: \"6\", // 24px\n 8: \"8\", // 32px\n 10: \"10\", // 40px\n 12: \"12\", // 48px\n 16: \"16\", // 64px\n 20: \"20\", // 80px\n 24: \"24\", // 96px\n 32: \"32\", // 128px\n 40: \"40\", // 160px\n 48: \"48\", // 192px\n 64: \"64\", // 256px\n 80: \"80\", // 320px\n 96: \"96\", // 384px\n };\n\n return tailwindMap[scale] || String(scale);\n }\n}\n\n/**\n * Pre-defined spacing tokens\n */\nexport const SPACING_TOKENS = {\n // Micro spacing (0-14px)\n none: SpacingTokenFactory.create(0),\n \"0.5\": SpacingTokenFactory.create(0.5), // 2px (half-step)\n xs: SpacingTokenFactory.create(1), // 4px\n \"1.5\": SpacingTokenFactory.create(1.5), // 6px (half-step)\n sm: SpacingTokenFactory.create(2), // 8px\n \"2.5\": SpacingTokenFactory.create(2.5), // 10px (half-step)\n md: SpacingTokenFactory.create(3), // 12px\n \"3.5\": SpacingTokenFactory.create(3.5), // 14px (half-step)\n\n // Standard spacing (16-32px)\n base: SpacingTokenFactory.create(4), // 16px\n lg: SpacingTokenFactory.create(6), // 24px\n xl: SpacingTokenFactory.create(8), // 32px\n\n // Large spacing (40-64px)\n \"2xl\": SpacingTokenFactory.create(10), // 40px\n \"3xl\": SpacingTokenFactory.create(12), // 48px\n \"4xl\": SpacingTokenFactory.create(16), // 64px\n\n // Extra large spacing (80px+)\n \"5xl\": SpacingTokenFactory.create(20), // 80px\n \"6xl\": SpacingTokenFactory.create(24), // 96px\n} as const;\n\n/**\n * Helper function to get spacing value\n */\nexport function getSpacing(scale: keyof typeof SPACING_TOKENS): SpacingToken {\n return SPACING_TOKENS[scale];\n}\n\n/**\n * Helper function to get spacing as Tailwind class\n */\nexport function getSpacingClass(\n scale: keyof typeof SPACING_TOKENS,\n direction:\n | \"p\"\n | \"m\"\n | \"px\"\n | \"mx\"\n | \"py\"\n | \"my\"\n | \"pt\"\n | \"mt\"\n | \"pr\"\n | \"mr\"\n | \"pb\"\n | \"mb\"\n | \"pl\"\n | \"ml\"\n | \"gap\"\n | \"gap-x\"\n | \"gap-y\"\n | \"space-y\" = \"p\",\n): string {\n const token = SPACING_TOKENS[scale];\n const value = token.tailwind;\n\n const prefixMap: Record<string, string> = {\n p: \"p\",\n m: \"m\",\n px: \"px\",\n mx: \"mx\",\n py: \"py\",\n my: \"my\",\n pt: \"pt\",\n mt: \"mt\",\n pr: \"pr\",\n mr: \"mr\",\n pb: \"pb\",\n mb: \"mb\",\n pl: \"pl\",\n ml: \"ml\",\n gap: \"gap\",\n \"gap-x\": \"gap-x\",\n \"gap-y\": \"gap-y\",\n \"space-y\": \"space-y\",\n };\n\n return `${prefixMap[direction]}-${value}`;\n}\n","/**\n * Typography Tokens\n *\n * Centralized typography system with font families, sizes, weights, and line heights.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type FontFamily = \"sans\" | \"serif\" | \"mono\";\nexport type FontWeight = \"light\" | \"normal\" | \"medium\" | \"semibold\" | \"bold\";\nexport type FontSize =\n | \"2xs\"\n | \"xs\"\n | \"sm\"\n | \"base\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"5xl\"\n | \"6xl\";\nexport type LineHeight =\n | \"none\"\n | \"tight\"\n | \"snug\"\n | \"normal\"\n | \"relaxed\"\n | \"loose\";\n\nexport interface TypographyToken {\n fontSize: {\n value: number;\n rem: string;\n px: string;\n tailwind: string;\n };\n lineHeight: {\n value: number;\n tailwind: string;\n };\n fontWeight: {\n value: number;\n tailwind: string;\n };\n}\n\nexport interface FontFamilyToken {\n name: string;\n stack: string;\n tailwind: string;\n}\n\nexport interface FontWeightToken {\n value: number;\n tailwind: string;\n}\n\n/**\n * Typography Token Factory\n * Creates typography tokens with consistent values\n */\nexport class TypographyTokenFactory {\n /**\n * Create font size token\n */\n static createFontSize(size: FontSize): TypographyToken[\"fontSize\"] {\n const sizeMap: Record<FontSize, { px: number; tailwind: string }> = {\n \"2xs\": { px: 10, tailwind: \"text-2xs\" }, // micro-text (badge counters, mini chips)\n xs: { px: 12, tailwind: \"text-xs\" },\n sm: { px: 14, tailwind: \"text-sm\" },\n base: { px: 16, tailwind: \"text-base\" },\n lg: { px: 18, tailwind: \"text-lg\" },\n xl: { px: 20, tailwind: \"text-xl\" },\n \"2xl\": { px: 24, tailwind: \"text-2xl\" },\n \"3xl\": { px: 30, tailwind: \"text-3xl\" },\n \"4xl\": { px: 36, tailwind: \"text-4xl\" },\n \"5xl\": { px: 48, tailwind: \"text-5xl\" },\n \"6xl\": { px: 60, tailwind: \"text-6xl\" },\n };\n\n const config = sizeMap[size];\n return {\n value: config.px,\n rem: `${config.px / 16}rem`,\n px: `${config.px}px`,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create line height token\n */\n static createLineHeight(height: LineHeight): TypographyToken[\"lineHeight\"] {\n const heightMap: Record<LineHeight, { value: number; tailwind: string }> = {\n none: { value: 1, tailwind: \"leading-none\" },\n tight: { value: 1.25, tailwind: \"leading-tight\" },\n snug: { value: 1.375, tailwind: \"leading-snug\" },\n normal: { value: 1.5, tailwind: \"leading-normal\" },\n relaxed: { value: 1.625, tailwind: \"leading-relaxed\" },\n loose: { value: 2, tailwind: \"leading-loose\" },\n };\n\n const config = heightMap[height];\n return {\n value: config.value,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create font weight token\n */\n static createFontWeight(weight: FontWeight): FontWeightToken {\n const weightMap: Record<FontWeight, { value: number; tailwind: string }> = {\n light: { value: 300, tailwind: \"font-light\" },\n normal: { value: 400, tailwind: \"font-normal\" },\n medium: { value: 500, tailwind: \"font-medium\" },\n semibold: { value: 600, tailwind: \"font-semibold\" },\n bold: { value: 700, tailwind: \"font-bold\" },\n };\n\n const config = weightMap[weight];\n return {\n value: config.value,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create complete typography token\n */\n static create(\n size: FontSize,\n lineHeight: LineHeight = \"normal\",\n weight: FontWeight = \"normal\",\n ): TypographyToken {\n return {\n fontSize: this.createFontSize(size),\n lineHeight: this.createLineHeight(lineHeight),\n fontWeight: this.createFontWeight(weight),\n };\n }\n}\n\n/**\n * Font family tokens\n */\nexport const FONT_FAMILY_TOKENS: Record<FontFamily, FontFamilyToken> = {\n sans: {\n name: \"sans\",\n stack:\n 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif',\n tailwind: \"font-sans\",\n },\n serif: {\n name: \"serif\",\n stack: 'ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif',\n tailwind: \"font-serif\",\n },\n mono: {\n name: \"mono\",\n stack:\n 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n tailwind: \"font-mono\",\n },\n} as const;\n\n/**\n * Font weight tokens\n */\nexport const FONT_WEIGHT_TOKENS: Record<FontWeight, FontWeightToken> = {\n light: TypographyTokenFactory.createFontWeight(\"light\"),\n normal: TypographyTokenFactory.createFontWeight(\"normal\"),\n medium: TypographyTokenFactory.createFontWeight(\"medium\"),\n semibold: TypographyTokenFactory.createFontWeight(\"semibold\"),\n bold: TypographyTokenFactory.createFontWeight(\"bold\"),\n} as const;\n\n/**\n * Pre-defined typography tokens for common use cases\n */\nexport const TYPOGRAPHY_TOKENS = {\n // Headings\n h1: TypographyTokenFactory.create(\"4xl\", \"tight\", \"bold\"),\n h2: TypographyTokenFactory.create(\"3xl\", \"tight\", \"bold\"),\n h3: TypographyTokenFactory.create(\"2xl\", \"snug\", \"semibold\"),\n h4: TypographyTokenFactory.create(\"xl\", \"snug\", \"semibold\"),\n h5: TypographyTokenFactory.create(\"lg\", \"normal\", \"medium\"),\n h6: TypographyTokenFactory.create(\"base\", \"normal\", \"medium\"),\n\n // Body text\n body: TypographyTokenFactory.create(\"base\", \"relaxed\", \"normal\"),\n bodySmall: TypographyTokenFactory.create(\"sm\", \"relaxed\", \"normal\"),\n bodyLarge: TypographyTokenFactory.create(\"lg\", \"relaxed\", \"normal\"),\n\n // UI elements\n label: TypographyTokenFactory.create(\"sm\", \"normal\", \"medium\"),\n caption: TypographyTokenFactory.create(\"xs\", \"normal\", \"normal\"),\n button: TypographyTokenFactory.create(\"base\", \"normal\", \"medium\"),\n} as const;\n\n/**\n * Helper function to get typography token\n */\nexport function getTypography(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): TypographyToken {\n return TYPOGRAPHY_TOKENS[variant];\n}\n\n/**\n * Helper function to get typography classes as string\n */\nexport function getTypographyClasses(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n const token = TYPOGRAPHY_TOKENS[variant];\n return `${token.fontSize.tailwind} ${token.lineHeight.tailwind} ${token.fontWeight.tailwind}`;\n}\n\n/**\n * Helper function to get only font size class\n */\nexport function getTypographySize(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n return TYPOGRAPHY_TOKENS[variant].fontSize.tailwind;\n}\n\n/**\n * Helper function to get font size class directly from FontSize\n * This is a convenience function for when you just need a size, not a full typography variant\n */\nexport function getTypographySizeFromFontSize(size: FontSize): string {\n return TypographyTokenFactory.createFontSize(size).tailwind;\n}\n\n/**\n * Helper function to get only font weight class\n */\nexport function getTypographyWeight(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n return TYPOGRAPHY_TOKENS[variant].fontWeight.tailwind;\n}\n\n/**\n * Helper function to get font weight class directly from FontWeight\n * This is a convenience function for when you just need a weight, not a full typography variant\n */\nexport function getTypographyWeightFromFontWeight(weight: FontWeight): string {\n return TypographyTokenFactory.createFontWeight(weight).tailwind;\n}\n\n/**\n * Helper function to get only line height class\n */\nexport function getTypographyLineHeight(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n return TYPOGRAPHY_TOKENS[variant].lineHeight.tailwind;\n}\n","/**\n * AIppin Design System - Color Token Types\n *\n * TypeScript types for the color system.\n *\n * @brand AIppin\n * @version 1.0.0\n */\n\n/**\n * Color scale values (50-950)\n * Standard Tailwind-compatible color scale\n */\nexport type ColorScale =\n | 50\n | 100\n | 200\n | 300\n | 400\n | 500\n | 600\n | 700\n | 800\n | 900\n | 950;\n\n/**\n * All available color scale values as array\n */\nexport const COLOR_SCALES: ColorScale[] = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n];\n\n/**\n * Primitive color names (raw color palettes)\n */\nexport type PrimitiveColorName =\n | \"indigo\"\n | \"violet\"\n | \"cyan\"\n | \"slate\"\n | \"gray\"\n | \"emerald\"\n | \"green\"\n | \"amber\"\n | \"yellow\"\n | \"orange\"\n | \"rose\"\n | \"red\"\n | \"sky\"\n | \"blue\"\n | \"fuchsia\"\n | \"pink\"\n | \"purple\"\n | \"teal\"\n | \"lime\";\n\n/**\n * Semantic color names (meaningful colors)\n */\nexport type SemanticColorName =\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\"\n | \"neutral\";\n\n/**\n * Text color semantic names\n */\nexport type TextColorName =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"quaternary\"\n | \"placeholder\"\n | \"disabled\"\n | \"inverse\"\n | \"link\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\";\n\n/**\n * Background color semantic names\n */\nexport type BgColorName =\n | \"base\"\n | \"subtle\"\n | \"muted\"\n | \"emphasis\"\n | \"strong\"\n | \"inverse\"\n | \"brand\"\n | \"secondary\"\n | \"accent\";\n\n/**\n * Border color semantic names\n */\nexport type BorderColorName =\n | \"default\"\n | \"muted\"\n | \"subtle\"\n | \"emphasis\"\n | \"strong\"\n | \"focus\"\n | \"brand\";\n\n/**\n * State color names\n */\nexport type StateColorName =\n | \"hover\"\n | \"active\"\n | \"selected\"\n | \"disabled\"\n | \"focus\";\n\n/**\n * Theme mode\n */\nexport type ThemeMode = \"light\" | \"dark\";\n\n/**\n * Theme variant (visual style)\n */\nexport type ThemeVariant = \"tech\" | \"creative\" | \"minimal\";\n\n/**\n * Single color token with multiple formats\n */\nexport interface ColorToken {\n /** Hex color value (e.g., #6366f1) */\n hex: string;\n /** RGB values as string (e.g., \"99, 102, 241\") */\n rgb: string;\n /** HSL values as string (e.g., \"239, 84%, 67%\") */\n hsl: string;\n /** CSS variable reference (e.g., \"var(--color-indigo-500)\") */\n cssVar: string;\n /** Tailwind class suffix (e.g., \"indigo-500\") */\n tailwind: string;\n}\n\n/**\n * Complete color palette (all shades)\n */\nexport type ColorPalette = Record<ColorScale, ColorToken>;\n\n/**\n * Semantic color with light/dark/contrast variants\n */\nexport interface SemanticColor {\n light: ColorToken;\n DEFAULT: ColorToken;\n dark: ColorToken;\n contrast: ColorToken;\n}\n\n/**\n * Complete semantic color palette\n */\nexport type SemanticColorPalette = Record<SemanticColorName, SemanticColor>;\n\n/**\n * All primitive colors\n */\nexport type PrimitiveColors = Record<PrimitiveColorName, ColorPalette>;\n\n/**\n * Theme color configuration\n */\nexport interface ThemeColors {\n /** Brand colors */\n brand: {\n primary: ColorToken;\n primaryLight: ColorToken;\n primaryDark: ColorToken;\n secondary: ColorToken;\n secondaryLight: ColorToken;\n secondaryDark: ColorToken;\n accent: ColorToken;\n accentLight: ColorToken;\n accentDark: ColorToken;\n };\n /** Text colors */\n text: Record<TextColorName, ColorToken>;\n /** Background colors */\n bg: Record<BgColorName, ColorToken>;\n /** Border colors */\n border: Record<BorderColorName, ColorToken>;\n /** State colors */\n state: Record<StateColorName, ColorToken>;\n /** Feedback colors */\n feedback: {\n success: ColorToken;\n successBg: ColorToken;\n warning: ColorToken;\n warningBg: ColorToken;\n error: ColorToken;\n errorBg: ColorToken;\n info: ColorToken;\n infoBg: ColorToken;\n };\n}\n\n/**\n * Color utility function options\n */\nexport interface GetColorOptions {\n /** Output format */\n format?: \"hex\" | \"rgb\" | \"hsl\" | \"cssVar\" | \"tailwind\";\n /** Include opacity */\n opacity?: number;\n}\n\n/**\n * Color class generation options\n */\nexport interface GetColorClassOptions {\n /** Class type */\n type?: \"text\" | \"bg\" | \"border\" | \"ring\" | \"fill\" | \"stroke\";\n /** Include hover variant */\n hover?: boolean;\n /** Include focus variant */\n focus?: boolean;\n /** Include active variant */\n active?: boolean;\n}\n","/**\n * AIppin Design System - Primitive Color Tokens\n *\n * Complete color palettes with all shades (50-950).\n * These match the CSS variables defined in primitives/colors.css\n *\n * @brand AIppin\n * @version 1.0.0\n */\n\nimport type {\n ColorPalette,\n ColorToken,\n ColorScale,\n PrimitiveColorName,\n PrimitiveColors,\n} from \"./types\";\n\n/**\n * Helper to create a color token\n */\nfunction createToken(\n hex: string,\n colorName: string,\n scale: ColorScale,\n): ColorToken {\n const rgb = hexToRgb(hex);\n const hsl = hexToHsl(hex);\n return {\n hex,\n rgb,\n hsl,\n cssVar: `var(--color-${colorName}-${scale})`,\n tailwind: `${colorName}-${scale}`,\n };\n}\n\n/**\n * Convert hex to RGB string\n */\nfunction hexToRgb(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return \"0, 0, 0\";\n return `${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(result[3], 16)}`;\n}\n\n/**\n * Convert hex to HSL string\n */\nfunction hexToHsl(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return \"0, 0%, 0%\";\n\n const r = parseInt(result[1], 16) / 255;\n const g = parseInt(result[2], 16) / 255;\n const b = parseInt(result[3], 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const 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 switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return `${Math.round(h * 360)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%`;\n}\n\n/**\n * Indigo - Primary Brand Color\n */\nexport const INDIGO: ColorPalette = {\n 50: createToken(\"#eef2ff\", \"indigo\", 50),\n 100: createToken(\"#e0e7ff\", \"indigo\", 100),\n 200: createToken(\"#c7d2fe\", \"indigo\", 200),\n 300: createToken(\"#a5b4fc\", \"indigo\", 300),\n 400: createToken(\"#818cf8\", \"indigo\", 400),\n 500: createToken(\"#6366f1\", \"indigo\", 500),\n 600: createToken(\"#4f46e5\", \"indigo\", 600),\n 700: createToken(\"#4338ca\", \"indigo\", 700),\n 800: createToken(\"#3730a3\", \"indigo\", 800),\n 900: createToken(\"#312e81\", \"indigo\", 900),\n 950: createToken(\"#1e1b4b\", \"indigo\", 950),\n};\n\n/**\n * Violet - Secondary Brand Color\n */\nexport const VIOLET: ColorPalette = {\n 50: createToken(\"#f5f3ff\", \"violet\", 50),\n 100: createToken(\"#ede9fe\", \"violet\", 100),\n 200: createToken(\"#ddd6fe\", \"violet\", 200),\n 300: createToken(\"#c4b5fd\", \"violet\", 300),\n 400: createToken(\"#a78bfa\", \"violet\", 400),\n 500: createToken(\"#8b5cf6\", \"violet\", 500),\n 600: createToken(\"#7c3aed\", \"violet\", 600),\n 700: createToken(\"#6d28d9\", \"violet\", 700),\n 800: createToken(\"#5b21b6\", \"violet\", 800),\n 900: createToken(\"#4c1d95\", \"violet\", 900),\n 950: createToken(\"#2e1065\", \"violet\", 950),\n};\n\n/**\n * Cyan - Accent Color\n */\nexport const CYAN: ColorPalette = {\n 50: createToken(\"#ecfeff\", \"cyan\", 50),\n 100: createToken(\"#cffafe\", \"cyan\", 100),\n 200: createToken(\"#a5f3fc\", \"cyan\", 200),\n 300: createToken(\"#67e8f9\", \"cyan\", 300),\n 400: createToken(\"#22d3ee\", \"cyan\", 400),\n 500: createToken(\"#06b6d4\", \"cyan\", 500),\n 600: createToken(\"#0891b2\", \"cyan\", 600),\n 700: createToken(\"#0e7490\", \"cyan\", 700),\n 800: createToken(\"#155e75\", \"cyan\", 800),\n 900: createToken(\"#164e63\", \"cyan\", 900),\n 950: createToken(\"#083344\", \"cyan\", 950),\n};\n\n/**\n * Slate - Neutral Color\n */\nexport const SLATE: ColorPalette = {\n 50: createToken(\"#f8fafc\", \"slate\", 50),\n 100: createToken(\"#f1f5f9\", \"slate\", 100),\n 200: createToken(\"#e2e8f0\", \"slate\", 200),\n 300: createToken(\"#cbd5e1\", \"slate\", 300),\n 400: createToken(\"#94a3b8\", \"slate\", 400),\n 500: createToken(\"#64748b\", \"slate\", 500),\n 600: createToken(\"#475569\", \"slate\", 600),\n 700: createToken(\"#334155\", \"slate\", 700),\n 800: createToken(\"#1e293b\", \"slate\", 800),\n 900: createToken(\"#0f172a\", \"slate\", 900),\n 950: createToken(\"#020617\", \"slate\", 950),\n};\n\n/**\n * Gray - Alternative Neutral\n */\nexport const GRAY: ColorPalette = {\n 50: createToken(\"#f9fafb\", \"gray\", 50),\n 100: createToken(\"#f3f4f6\", \"gray\", 100),\n 200: createToken(\"#e5e7eb\", \"gray\", 200),\n 300: createToken(\"#d1d5db\", \"gray\", 300),\n 400: createToken(\"#9ca3af\", \"gray\", 400),\n 500: createToken(\"#6b7280\", \"gray\", 500),\n 600: createToken(\"#4b5563\", \"gray\", 600),\n 700: createToken(\"#374151\", \"gray\", 700),\n 800: createToken(\"#1f2937\", \"gray\", 800),\n 900: createToken(\"#111827\", \"gray\", 900),\n 950: createToken(\"#030712\", \"gray\", 950),\n};\n\n/**\n * Emerald - Success Color\n */\nexport const EMERALD: ColorPalette = {\n 50: createToken(\"#ecfdf5\", \"emerald\", 50),\n 100: createToken(\"#d1fae5\", \"emerald\", 100),\n 200: createToken(\"#a7f3d0\", \"emerald\", 200),\n 300: createToken(\"#6ee7b7\", \"emerald\", 300),\n 400: createToken(\"#34d399\", \"emerald\", 400),\n 500: createToken(\"#10b981\", \"emerald\", 500),\n 600: createToken(\"#059669\", \"emerald\", 600),\n 700: createToken(\"#047857\", \"emerald\", 700),\n 800: createToken(\"#065f46\", \"emerald\", 800),\n 900: createToken(\"#064e3b\", \"emerald\", 900),\n 950: createToken(\"#022c22\", \"emerald\", 950),\n};\n\n/**\n * Green - Alternative Success\n */\nexport const GREEN: ColorPalette = {\n 50: createToken(\"#f0fdf4\", \"green\", 50),\n 100: createToken(\"#dcfce7\", \"green\", 100),\n 200: createToken(\"#bbf7d0\", \"green\", 200),\n 300: createToken(\"#86efac\", \"green\", 300),\n 400: createToken(\"#4ade80\", \"green\", 400),\n 500: createToken(\"#22c55e\", \"green\", 500),\n 600: createToken(\"#16a34a\", \"green\", 600),\n 700: createToken(\"#15803d\", \"green\", 700),\n 800: createToken(\"#166534\", \"green\", 800),\n 900: createToken(\"#14532d\", \"green\", 900),\n 950: createToken(\"#052e16\", \"green\", 950),\n};\n\n/**\n * Amber - Warning Color\n */\nexport const AMBER: ColorPalette = {\n 50: createToken(\"#fffbeb\", \"amber\", 50),\n 100: createToken(\"#fef3c7\", \"amber\", 100),\n 200: createToken(\"#fde68a\", \"amber\", 200),\n 300: createToken(\"#fcd34d\", \"amber\", 300),\n 400: createToken(\"#fbbf24\", \"amber\", 400),\n 500: createToken(\"#f59e0b\", \"amber\", 500),\n 600: createToken(\"#d97706\", \"amber\", 600),\n 700: createToken(\"#b45309\", \"amber\", 700),\n 800: createToken(\"#92400e\", \"amber\", 800),\n 900: createToken(\"#78350f\", \"amber\", 900),\n 950: createToken(\"#451a03\", \"amber\", 950),\n};\n\n/**\n * Yellow - Alternative Warning\n */\nexport const YELLOW: ColorPalette = {\n 50: createToken(\"#fefce8\", \"yellow\", 50),\n 100: createToken(\"#fef9c3\", \"yellow\", 100),\n 200: createToken(\"#fef08a\", \"yellow\", 200),\n 300: createToken(\"#fde047\", \"yellow\", 300),\n 400: createToken(\"#facc15\", \"yellow\", 400),\n 500: createToken(\"#eab308\", \"yellow\", 500),\n 600: createToken(\"#ca8a04\", \"yellow\", 600),\n 700: createToken(\"#a16207\", \"yellow\", 700),\n 800: createToken(\"#854d0e\", \"yellow\", 800),\n 900: createToken(\"#713f12\", \"yellow\", 900),\n 950: createToken(\"#422006\", \"yellow\", 950),\n};\n\n/**\n * Orange - Energetic Accent\n */\nexport const ORANGE: ColorPalette = {\n 50: createToken(\"#fff7ed\", \"orange\", 50),\n 100: createToken(\"#ffedd5\", \"orange\", 100),\n 200: createToken(\"#fed7aa\", \"orange\", 200),\n 300: createToken(\"#fdba74\", \"orange\", 300),\n 400: createToken(\"#fb923c\", \"orange\", 400),\n 500: createToken(\"#f97316\", \"orange\", 500),\n 600: createToken(\"#ea580c\", \"orange\", 600),\n 700: createToken(\"#c2410c\", \"orange\", 700),\n 800: createToken(\"#9a3412\", \"orange\", 800),\n 900: createToken(\"#7c2d12\", \"orange\", 900),\n 950: createToken(\"#431407\", \"orange\", 950),\n};\n\n/**\n * Rose - Error Color\n */\nexport const ROSE: ColorPalette = {\n 50: createToken(\"#fff1f2\", \"rose\", 50),\n 100: createToken(\"#ffe4e6\", \"rose\", 100),\n 200: createToken(\"#fecdd3\", \"rose\", 200),\n 300: createToken(\"#fda4af\", \"rose\", 300),\n 400: createToken(\"#fb7185\", \"rose\", 400),\n 500: createToken(\"#f43f5e\", \"rose\", 500),\n 600: createToken(\"#e11d48\", \"rose\", 600),\n 700: createToken(\"#be123c\", \"rose\", 700),\n 800: createToken(\"#9f1239\", \"rose\", 800),\n 900: createToken(\"#881337\", \"rose\", 900),\n 950: createToken(\"#4c0519\", \"rose\", 950),\n};\n\n/**\n * Red - Alternative Error\n */\nexport const RED: ColorPalette = {\n 50: createToken(\"#fef2f2\", \"red\", 50),\n 100: createToken(\"#fee2e2\", \"red\", 100),\n 200: createToken(\"#fecaca\", \"red\", 200),\n 300: createToken(\"#fca5a5\", \"red\", 300),\n 400: createToken(\"#f87171\", \"red\", 400),\n 500: createToken(\"#ef4444\", \"red\", 500),\n 600: createToken(\"#dc2626\", \"red\", 600),\n 700: createToken(\"#b91c1c\", \"red\", 700),\n 800: createToken(\"#991b1b\", \"red\", 800),\n 900: createToken(\"#7f1d1d\", \"red\", 900),\n 950: createToken(\"#450a0a\", \"red\", 950),\n};\n\n/**\n * Sky - Info Color\n */\nexport const SKY: ColorPalette = {\n 50: createToken(\"#f0f9ff\", \"sky\", 50),\n 100: createToken(\"#e0f2fe\", \"sky\", 100),\n 200: createToken(\"#bae6fd\", \"sky\", 200),\n 300: createToken(\"#7dd3fc\", \"sky\", 300),\n 400: createToken(\"#38bdf8\", \"sky\", 400),\n 500: createToken(\"#0ea5e9\", \"sky\", 500),\n 600: createToken(\"#0284c7\", \"sky\", 600),\n 700: createToken(\"#0369a1\", \"sky\", 700),\n 800: createToken(\"#075985\", \"sky\", 800),\n 900: createToken(\"#0c4a6e\", \"sky\", 900),\n 950: createToken(\"#082f49\", \"sky\", 950),\n};\n\n/**\n * Blue - Alternative Info\n */\nexport const BLUE: ColorPalette = {\n 50: createToken(\"#eff6ff\", \"blue\", 50),\n 100: createToken(\"#dbeafe\", \"blue\", 100),\n 200: createToken(\"#bfdbfe\", \"blue\", 200),\n 300: createToken(\"#93c5fd\", \"blue\", 300),\n 400: createToken(\"#60a5fa\", \"blue\", 400),\n 500: createToken(\"#3b82f6\", \"blue\", 500),\n 600: createToken(\"#2563eb\", \"blue\", 600),\n 700: createToken(\"#1d4ed8\", \"blue\", 700),\n 800: createToken(\"#1e40af\", \"blue\", 800),\n 900: createToken(\"#1e3a8a\", \"blue\", 900),\n 950: createToken(\"#172554\", \"blue\", 950),\n};\n\n/**\n * Fuchsia - Creative Accent\n */\nexport const FUCHSIA: ColorPalette = {\n 50: createToken(\"#fdf4ff\", \"fuchsia\", 50),\n 100: createToken(\"#fae8ff\", \"fuchsia\", 100),\n 200: createToken(\"#f5d0fe\", \"fuchsia\", 200),\n 300: createToken(\"#f0abfc\", \"fuchsia\", 300),\n 400: createToken(\"#e879f9\", \"fuchsia\", 400),\n 500: createToken(\"#d946ef\", \"fuchsia\", 500),\n 600: createToken(\"#c026d3\", \"fuchsia\", 600),\n 700: createToken(\"#a21caf\", \"fuchsia\", 700),\n 800: createToken(\"#86198f\", \"fuchsia\", 800),\n 900: createToken(\"#701a75\", \"fuchsia\", 900),\n 950: createToken(\"#4a044e\", \"fuchsia\", 950),\n};\n\n/**\n * Pink - Soft Accent\n */\nexport const PINK: ColorPalette = {\n 50: createToken(\"#fdf2f8\", \"pink\", 50),\n 100: createToken(\"#fce7f3\", \"pink\", 100),\n 200: createToken(\"#fbcfe8\", \"pink\", 200),\n 300: createToken(\"#f9a8d4\", \"pink\", 300),\n 400: createToken(\"#f472b6\", \"pink\", 400),\n 500: createToken(\"#ec4899\", \"pink\", 500),\n 600: createToken(\"#db2777\", \"pink\", 600),\n 700: createToken(\"#be185d\", \"pink\", 700),\n 800: createToken(\"#9d174d\", \"pink\", 800),\n 900: createToken(\"#831843\", \"pink\", 900),\n 950: createToken(\"#500724\", \"pink\", 950),\n};\n\n/**\n * Purple - Deep Accent\n */\nexport const PURPLE: ColorPalette = {\n 50: createToken(\"#faf5ff\", \"purple\", 50),\n 100: createToken(\"#f3e8ff\", \"purple\", 100),\n 200: createToken(\"#e9d5ff\", \"purple\", 200),\n 300: createToken(\"#d8b4fe\", \"purple\", 300),\n 400: createToken(\"#c084fc\", \"purple\", 400),\n 500: createToken(\"#a855f7\", \"purple\", 500),\n 600: createToken(\"#9333ea\", \"purple\", 600),\n 700: createToken(\"#7e22ce\", \"purple\", 700),\n 800: createToken(\"#6b21a8\", \"purple\", 800),\n 900: createToken(\"#581c87\", \"purple\", 900),\n 950: createToken(\"#3b0764\", \"purple\", 950),\n};\n\n/**\n * Teal - Fresh Accent\n */\nexport const TEAL: ColorPalette = {\n 50: createToken(\"#f0fdfa\", \"teal\", 50),\n 100: createToken(\"#ccfbf1\", \"teal\", 100),\n 200: createToken(\"#99f6e4\", \"teal\", 200),\n 300: createToken(\"#5eead4\", \"teal\", 300),\n 400: createToken(\"#2dd4bf\", \"teal\", 400),\n 500: createToken(\"#14b8a6\", \"teal\", 500),\n 600: createToken(\"#0d9488\", \"teal\", 600),\n 700: createToken(\"#0f766e\", \"teal\", 700),\n 800: createToken(\"#115e59\", \"teal\", 800),\n 900: createToken(\"#134e4a\", \"teal\", 900),\n 950: createToken(\"#042f2e\", \"teal\", 950),\n};\n\n/**\n * Lime - Vibrant Success\n */\nexport const LIME: ColorPalette = {\n 50: createToken(\"#f7fee7\", \"lime\", 50),\n 100: createToken(\"#ecfccb\", \"lime\", 100),\n 200: createToken(\"#d9f99d\", \"lime\", 200),\n 300: createToken(\"#bef264\", \"lime\", 300),\n 400: createToken(\"#a3e635\", \"lime\", 400),\n 500: createToken(\"#84cc16\", \"lime\", 500),\n 600: createToken(\"#65a30d\", \"lime\", 600),\n 700: createToken(\"#4d7c0f\", \"lime\", 700),\n 800: createToken(\"#3f6212\", \"lime\", 800),\n 900: createToken(\"#365314\", \"lime\", 900),\n 950: createToken(\"#1a2e05\", \"lime\", 950),\n};\n\n/**\n * All primitive colors combined\n */\nexport const PRIMITIVE_COLORS: PrimitiveColors = {\n indigo: INDIGO,\n violet: VIOLET,\n cyan: CYAN,\n slate: SLATE,\n gray: GRAY,\n emerald: EMERALD,\n green: GREEN,\n amber: AMBER,\n yellow: YELLOW,\n orange: ORANGE,\n rose: ROSE,\n red: RED,\n sky: SKY,\n blue: BLUE,\n fuchsia: FUCHSIA,\n pink: PINK,\n purple: PURPLE,\n teal: TEAL,\n lime: LIME,\n};\n\n/**\n * Get a primitive color by name and scale\n */\nexport function getPrimitiveColor(\n name: PrimitiveColorName,\n scale: ColorScale,\n): ColorToken {\n return PRIMITIVE_COLORS[name][scale];\n}\n\n/**\n * Get all scales for a primitive color\n */\nexport function getPrimitiveColorPalette(\n name: PrimitiveColorName,\n): ColorPalette {\n return PRIMITIVE_COLORS[name];\n}\n","/**\n * AIppin Design System - Semantic Color Tokens\n *\n * Semantic colors that reference primitive palettes.\n * These are the colors you should use in components.\n *\n * @brand AIppin\n * @version 1.0.0\n */\n\nimport type {\n SemanticColor,\n SemanticColorName,\n SemanticColorPalette,\n ColorToken,\n} from \"./types\";\nimport {\n INDIGO,\n VIOLET,\n CYAN,\n SLATE,\n EMERALD,\n AMBER,\n ROSE,\n SKY,\n} from \"./primitives\";\n\n/**\n * Light theme semantic colors\n */\nexport const SEMANTIC_COLORS_LIGHT: SemanticColorPalette = {\n primary: {\n light: INDIGO[400],\n DEFAULT: INDIGO[500],\n dark: INDIGO[600],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n secondary: {\n light: VIOLET[400],\n DEFAULT: VIOLET[500],\n dark: VIOLET[600],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n accent: {\n light: CYAN[400],\n DEFAULT: CYAN[500],\n dark: CYAN[600],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n success: {\n light: EMERALD[400],\n DEFAULT: EMERALD[500],\n dark: EMERALD[600],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n warning: {\n light: AMBER[400],\n DEFAULT: AMBER[500],\n dark: AMBER[600],\n contrast: {\n hex: \"#000000\",\n rgb: \"0, 0, 0\",\n hsl: \"0, 0%, 0%\",\n cssVar: \"var(--color-black)\",\n tailwind: \"black\",\n },\n },\n error: {\n light: ROSE[400],\n DEFAULT: ROSE[500],\n dark: ROSE[600],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n info: {\n light: SKY[400],\n DEFAULT: SKY[500],\n dark: SKY[600],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n neutral: {\n light: SLATE[100],\n DEFAULT: SLATE[500],\n dark: SLATE[700],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n};\n\n/**\n * Dark theme semantic colors\n */\nexport const SEMANTIC_COLORS_DARK: SemanticColorPalette = {\n primary: {\n light: INDIGO[500],\n DEFAULT: INDIGO[400],\n dark: INDIGO[300],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n secondary: {\n light: VIOLET[500],\n DEFAULT: VIOLET[400],\n dark: VIOLET[300],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n accent: {\n light: CYAN[500],\n DEFAULT: CYAN[400],\n dark: CYAN[300],\n contrast: {\n hex: \"#000000\",\n rgb: \"0, 0, 0\",\n hsl: \"0, 0%, 0%\",\n cssVar: \"var(--color-black)\",\n tailwind: \"black\",\n },\n },\n success: {\n light: EMERALD[500],\n DEFAULT: EMERALD[400],\n dark: EMERALD[300],\n contrast: {\n hex: \"#000000\",\n rgb: \"0, 0, 0\",\n hsl: \"0, 0%, 0%\",\n cssVar: \"var(--color-black)\",\n tailwind: \"black\",\n },\n },\n warning: {\n light: AMBER[500],\n DEFAULT: AMBER[400],\n dark: AMBER[300],\n contrast: {\n hex: \"#000000\",\n rgb: \"0, 0, 0\",\n hsl: \"0, 0%, 0%\",\n cssVar: \"var(--color-black)\",\n tailwind: \"black\",\n },\n },\n error: {\n light: ROSE[500],\n DEFAULT: ROSE[400],\n dark: ROSE[300],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n info: {\n light: SKY[500],\n DEFAULT: SKY[400],\n dark: SKY[300],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n neutral: {\n light: SLATE[700],\n DEFAULT: SLATE[400],\n dark: SLATE[300],\n contrast: {\n hex: \"#ffffff\",\n rgb: \"255, 255, 255\",\n hsl: \"0, 0%, 100%\",\n cssVar: \"var(--color-white)\",\n tailwind: \"white\",\n },\n },\n};\n\n/**\n * Default semantic colors (light theme)\n */\nexport const SEMANTIC_COLORS = SEMANTIC_COLORS_LIGHT;\n\n/**\n * Get semantic color by role and shade\n */\nexport function getSemanticColor(\n role: SemanticColorName,\n shade: \"light\" | \"DEFAULT\" | \"dark\" | \"contrast\" = \"DEFAULT\",\n theme: \"light\" | \"dark\" = \"light\",\n): ColorToken {\n const colors =\n theme === \"dark\" ? SEMANTIC_COLORS_DARK : SEMANTIC_COLORS_LIGHT;\n return colors[role][shade];\n}\n\n/**\n * Get all shades for a semantic color role\n */\nexport function getSemanticColorRole(\n role: SemanticColorName,\n theme: \"light\" | \"dark\" = \"light\",\n): SemanticColor {\n const colors =\n theme === \"dark\" ? SEMANTIC_COLORS_DARK : SEMANTIC_COLORS_LIGHT;\n return colors[role];\n}\n","/**\n * AIppin Design System - Color Utilities\n *\n * Helper functions for working with colors.\n *\n * @brand AIppin\n * @version 1.0.0\n */\n\nimport type {\n ColorToken,\n ColorScale,\n PrimitiveColorName,\n SemanticColorName,\n GetColorOptions,\n GetColorClassOptions,\n} from \"./types\";\nimport { getPrimitiveColor } from \"./primitives\";\nimport { getSemanticColor } from \"./semantic\";\n\n/**\n * Get a primitive color value in the specified format\n */\nexport function getColor(\n name: PrimitiveColorName,\n scale: ColorScale,\n options: GetColorOptions = {},\n): string {\n const { format = \"hex\", opacity } = options;\n const token = getPrimitiveColor(name, scale);\n\n let value: string;\n switch (format) {\n case \"rgb\":\n value =\n opacity !== undefined\n ? `rgba(${token.rgb}, ${opacity})`\n : `rgb(${token.rgb})`;\n break;\n case \"hsl\":\n value =\n opacity !== undefined\n ? `hsla(${token.hsl}, ${opacity})`\n : `hsl(${token.hsl})`;\n break;\n case \"cssVar\":\n value = token.cssVar;\n break;\n case \"tailwind\":\n value = token.tailwind;\n break;\n case \"hex\":\n default:\n value = token.hex;\n }\n\n return value;\n}\n\n/**\n * Get a semantic color value in the specified format\n */\nexport function getSemanticColorValue(\n role: SemanticColorName,\n shade: \"light\" | \"DEFAULT\" | \"dark\" | \"contrast\" = \"DEFAULT\",\n options: GetColorOptions = {},\n): string {\n const { format = \"hex\", opacity } = options;\n const token = getSemanticColor(role, shade);\n\n let value: string;\n switch (format) {\n case \"rgb\":\n value =\n opacity !== undefined\n ? `rgba(${token.rgb}, ${opacity})`\n : `rgb(${token.rgb})`;\n break;\n case \"hsl\":\n value =\n opacity !== undefined\n ? `hsla(${token.hsl}, ${opacity})`\n : `hsl(${token.hsl})`;\n break;\n case \"cssVar\":\n value = token.cssVar;\n break;\n case \"tailwind\":\n value = token.tailwind;\n break;\n case \"hex\":\n default:\n value = token.hex;\n }\n\n return value;\n}\n\n/**\n * Get Tailwind color class for a primitive color\n */\nexport function getColorClass(\n name: PrimitiveColorName,\n scale: ColorScale,\n options: GetColorClassOptions = {},\n): string {\n const {\n type = \"text\",\n hover = false,\n focus = false,\n active = false,\n } = options;\n const token = getPrimitiveColor(name, scale);\n const base = `${type}-${token.tailwind}`;\n\n const classes: string[] = [base];\n\n if (hover) {\n classes.push(`hover:${type}-${token.tailwind}`);\n }\n if (focus) {\n classes.push(`focus:${type}-${token.tailwind}`);\n }\n if (active) {\n classes.push(`active:${type}-${token.tailwind}`);\n }\n\n return classes.join(\" \");\n}\n\n/**\n * Get Tailwind color class for a semantic color\n */\nexport function getSemanticColorClass(\n role: SemanticColorName,\n shade: \"light\" | \"DEFAULT\" | \"dark\" = \"DEFAULT\",\n options: GetColorClassOptions = {},\n): string {\n const {\n type = \"text\",\n hover = false,\n focus = false,\n active = false,\n } = options;\n const token = getSemanticColor(role, shade);\n const base = `${type}-${token.tailwind}`;\n\n const classes: string[] = [base];\n\n if (hover) {\n const hoverToken = getSemanticColor(\n role,\n shade === \"DEFAULT\" ? \"dark\" : \"DEFAULT\",\n );\n classes.push(`hover:${type}-${hoverToken.tailwind}`);\n }\n if (focus) {\n classes.push(`focus:${type}-${token.tailwind}`);\n }\n if (active) {\n const activeToken = getSemanticColor(role, \"dark\");\n classes.push(`active:${type}-${activeToken.tailwind}`);\n }\n\n return classes.join(\" \");\n}\n\n/**\n * Get hover color class\n */\nexport function getHoverColorClass(\n name: PrimitiveColorName,\n scale: ColorScale,\n type: \"text\" | \"bg\" | \"border\" = \"bg\",\n): string {\n const token = getPrimitiveColor(name, scale);\n return `hover:${type}-${token.tailwind}`;\n}\n\n/**\n * Get focus color class\n */\nexport function getFocusColorClass(\n name: PrimitiveColorName,\n scale: ColorScale,\n type: \"text\" | \"bg\" | \"border\" = \"border\",\n): string {\n const token = getPrimitiveColor(name, scale);\n return `focus:${type}-${token.tailwind}`;\n}\n\n/**\n * Get focus ring class for a color\n */\nexport function getFocusRingClass(\n name: PrimitiveColorName,\n scale: ColorScale,\n): string {\n const token = getPrimitiveColor(name, scale);\n return `focus:ring-${token.tailwind}`;\n}\n\n/**\n * Generate a color with opacity\n */\nexport function withOpacity(token: ColorToken, opacity: number): string {\n return `rgba(${token.rgb}, ${opacity})`;\n}\n\n/**\n * Check if a color is considered \"light\" (for contrast calculations)\n */\nexport function isLightColor(hex: string): boolean {\n const rgb = hexToRgbArray(hex);\n if (!rgb) return true;\n\n // Calculate relative luminance\n const luminance = 0.299 * rgb[0] + 0.587 * rgb[1] + 0.114 * rgb[2];\n return luminance > 128;\n}\n\n/**\n * Get contrast color (black or white) for a given color\n */\nexport function getContrastColor(hex: string): \"#000000\" | \"#ffffff\" {\n return isLightColor(hex) ? \"#000000\" : \"#ffffff\";\n}\n\n/**\n * Convert hex to RGB array\n */\nfunction hexToRgbArray(hex: string): [number, number, number] | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return null;\n return [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ];\n}\n\n/**\n * Blend two colors together\n */\nexport function blendColors(\n color1: string,\n color2: string,\n weight: number = 0.5,\n): string {\n const rgb1 = hexToRgbArray(color1);\n const rgb2 = hexToRgbArray(color2);\n\n if (!rgb1 || !rgb2) return color1;\n\n const r = Math.round(rgb1[0] * (1 - weight) + rgb2[0] * weight);\n const g = Math.round(rgb1[1] * (1 - weight) + rgb2[1] * weight);\n const b = Math.round(rgb1[2] * (1 - weight) + rgb2[2] * weight);\n\n return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\n}\n\n/**\n * Lighten a color by a percentage\n */\nexport function lighten(hex: string, percent: number): string {\n return blendColors(hex, \"#ffffff\", percent / 100);\n}\n\n/**\n * Darken a color by a percentage\n */\nexport function darken(hex: string, percent: number): string {\n return blendColors(hex, \"#000000\", percent / 100);\n}\n","/**\n * AIppin Design System - Color Tokens Index\n *\n * Central export for all color-related tokens and utilities.\n *\n * @brand AIppin\n * @version 1.0.0\n */\n\n// Types\nexport type {\n ColorScale,\n PrimitiveColorName,\n SemanticColorName,\n TextColorName,\n BgColorName,\n BorderColorName,\n StateColorName,\n ThemeMode,\n ThemeVariant,\n ColorToken,\n ColorPalette,\n SemanticColor,\n SemanticColorPalette,\n PrimitiveColors,\n ThemeColors,\n GetColorOptions,\n GetColorClassOptions,\n} from \"./types\";\n\nexport { COLOR_SCALES } from \"./types\";\n\n// Primitive color palettes\nexport {\n INDIGO,\n VIOLET,\n CYAN,\n SLATE,\n GRAY,\n EMERALD,\n GREEN,\n AMBER,\n YELLOW,\n ORANGE,\n ROSE,\n RED,\n SKY,\n BLUE,\n FUCHSIA,\n PINK,\n PURPLE,\n TEAL,\n LIME,\n PRIMITIVE_COLORS,\n getPrimitiveColor,\n getPrimitiveColorPalette,\n} from \"./primitives\";\n\n// Semantic colors\nexport {\n SEMANTIC_COLORS,\n SEMANTIC_COLORS_LIGHT,\n SEMANTIC_COLORS_DARK,\n getSemanticColor,\n getSemanticColorRole,\n} from \"./semantic\";\n\n// Utilities\nexport {\n getColor,\n getSemanticColorValue,\n getColorClass,\n getSemanticColorClass,\n getHoverColorClass,\n getFocusColorClass,\n getFocusRingClass,\n withOpacity,\n isLightColor,\n getContrastColor,\n blendColors,\n lighten,\n darken,\n} from \"./utils\";\n\n// Re-export brand colors for convenience\nexport const BRAND_COLORS = {\n primary: {\n name: \"indigo\" as const,\n light: 400 as const,\n default: 500 as const,\n dark: 600 as const,\n },\n secondary: {\n name: \"violet\" as const,\n light: 400 as const,\n default: 500 as const,\n dark: 600 as const,\n },\n accent: {\n name: \"cyan\" as const,\n light: 400 as const,\n default: 500 as const,\n dark: 600 as const,\n },\n} as const;\n","/**\n * Breakpoint Tokens\n *\n * Responsive breakpoints for consistent media queries.\n * Uses Factory Pattern for type-safe breakpoint creation.\n */\n\nexport type BreakpointName = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nexport interface BreakpointToken {\n name: BreakpointName;\n minWidth: number;\n px: string;\n rem: string;\n tailwind: string;\n}\n\n/**\n * Breakpoint Token Factory\n * Creates breakpoint tokens with consistent values\n */\nexport class BreakpointTokenFactory {\n /**\n * Create breakpoint token\n */\n static create(name: BreakpointName): BreakpointToken {\n const breakpointMap: Record<\n BreakpointName,\n { minWidth: number; tailwind: string }\n > = {\n sm: { minWidth: 640, tailwind: \"sm\" },\n md: { minWidth: 768, tailwind: \"md\" },\n lg: { minWidth: 1024, tailwind: \"lg\" },\n xl: { minWidth: 1280, tailwind: \"xl\" },\n \"2xl\": { minWidth: 1536, tailwind: \"2xl\" },\n };\n\n const config = breakpointMap[name];\n return {\n name,\n minWidth: config.minWidth,\n px: `${config.minWidth}px`,\n rem: `${config.minWidth / 16}rem`,\n tailwind: config.tailwind,\n };\n }\n}\n\n/**\n * Pre-defined breakpoint tokens\n */\nexport const BREAKPOINT_TOKENS: Record<BreakpointName, BreakpointToken> = {\n sm: BreakpointTokenFactory.create(\"sm\"),\n md: BreakpointTokenFactory.create(\"md\"),\n lg: BreakpointTokenFactory.create(\"lg\"),\n xl: BreakpointTokenFactory.create(\"xl\"),\n \"2xl\": BreakpointTokenFactory.create(\"2xl\"),\n} as const;\n\n/**\n * Helper function to get breakpoint token\n */\nexport function getBreakpoint(name: BreakpointName): BreakpointToken {\n return BREAKPOINT_TOKENS[name];\n}\n\n/**\n * Helper function to create media query string\n */\nexport function getMediaQuery(\n name: BreakpointName,\n direction: \"min\" | \"max\" = \"min\",\n): string {\n const breakpoint = BREAKPOINT_TOKENS[name];\n const operator = direction === \"min\" ? \"min-width\" : \"max-width\";\n return `@media (${operator}: ${breakpoint.px})`;\n}\n","/**\n * Color Tokens\n *\n * Semantic color system for consistent theming.\n * Uses Strategy Pattern for different color strategies (light, dark, custom).\n *\n * NOTE: This file maintains backward compatibility with the old API.\n * For the new color system, use imports from './colors/index.ts'\n *\n * @brand AIppin\n * @version 2.0.0\n */\n\n// Re-export everything from the new color system\nexport * from \"./colors/index\";\n\n// Legacy type aliases for backward compatibility\nexport type ColorRole =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\"\n | \"neutral\";\n\nexport type ColorShade =\n | 50\n | 100\n | 200\n | 300\n | 400\n | 500\n | 600\n | 700\n | 800\n | 900\n | 950;\n\nexport interface ColorToken {\n hex: string;\n rgb: string;\n tailwind: string;\n}\n\nexport interface SemanticColor {\n light: ColorToken;\n DEFAULT: ColorToken;\n dark: ColorToken;\n contrast: ColorToken;\n}\n\nexport interface ColorPalette {\n [key: number]: ColorToken;\n}\n\n/**\n * Color Strategy Interface\n * Strategy Pattern for different color generation strategies\n */\nexport interface ColorStrategy {\n generatePrimary(): SemanticColor;\n generateSecondary(): SemanticColor;\n generateSuccess(): SemanticColor;\n generateWarning(): SemanticColor;\n generateError(): SemanticColor;\n generateInfo(): SemanticColor;\n generateNeutral(): SemanticColor;\n}\n\n/**\n * Light Theme Color Strategy\n */\nexport class LightColorStrategy implements ColorStrategy {\n generatePrimary(): SemanticColor {\n return {\n light: { hex: \"#818cf8\", rgb: \"129, 140, 248\", tailwind: \"indigo-400\" },\n DEFAULT: { hex: \"#6366f1\", rgb: \"99, 102, 241\", tailwind: \"indigo-500\" },\n dark: { hex: \"#4f46e5\", rgb: \"79, 70, 229\", tailwind: \"indigo-600\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n\n generateSecondary(): SemanticColor {\n return {\n light: { hex: \"#f9a8d4\", rgb: \"249, 168, 212\", tailwind: \"pink-300\" },\n DEFAULT: { hex: \"#ec4899\", rgb: \"236, 72, 153\", tailwind: \"pink-500\" },\n dark: { hex: \"#db2777\", rgb: \"219, 39, 119\", tailwind: \"pink-600\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n\n generateSuccess(): SemanticColor {\n return {\n light: { hex: \"#86efac\", rgb: \"134, 239, 172\", tailwind: \"green-300\" },\n DEFAULT: { hex: \"#22c55e\", rgb: \"34, 197, 94\", tailwind: \"green-500\" },\n dark: { hex: \"#16a34a\", rgb: \"22, 163, 74\", tailwind: \"green-600\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n\n generateWarning(): SemanticColor {\n return {\n light: { hex: \"#fde047\", rgb: \"253, 224, 71\", tailwind: \"yellow-300\" },\n DEFAULT: { hex: \"#eab308\", rgb: \"234, 179, 8\", tailwind: \"yellow-500\" },\n dark: { hex: \"#ca8a04\", rgb: \"202, 138, 4\", tailwind: \"yellow-600\" },\n contrast: { hex: \"#000000\", rgb: \"0, 0, 0\", tailwind: \"black\" },\n };\n }\n\n generateError(): SemanticColor {\n return {\n light: { hex: \"#fca5a5\", rgb: \"252, 165, 165\", tailwind: \"red-300\" },\n DEFAULT: { hex: \"#ef4444\", rgb: \"239, 68, 68\", tailwind: \"red-500\" },\n dark: { hex: \"#dc2626\", rgb: \"220, 38, 38\", tailwind: \"red-600\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n\n generateInfo(): SemanticColor {\n return {\n light: { hex: \"#93c5fd\", rgb: \"147, 197, 253\", tailwind: \"blue-300\" },\n DEFAULT: { hex: \"#3b82f6\", rgb: \"59, 130, 246\", tailwind: \"blue-500\" },\n dark: { hex: \"#2563eb\", rgb: \"37, 99, 235\", tailwind: \"blue-600\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n\n generateNeutral(): SemanticColor {\n return {\n light: { hex: \"#f3f4f6\", rgb: \"243, 244, 246\", tailwind: \"gray-100\" },\n DEFAULT: { hex: \"#6b7280\", rgb: \"107, 114, 128\", tailwind: \"gray-500\" },\n dark: { hex: \"#374151\", rgb: \"55, 65, 81\", tailwind: \"gray-700\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n}\n\n/**\n * Dark Theme Color Strategy\n */\nexport class DarkColorStrategy implements ColorStrategy {\n generatePrimary(): SemanticColor {\n return {\n light: { hex: \"#6366f1\", rgb: \"99, 102, 241\", tailwind: \"indigo-500\" },\n DEFAULT: { hex: \"#818cf8\", rgb: \"129, 140, 248\", tailwind: \"indigo-400\" },\n dark: { hex: \"#a5b4fc\", rgb: \"165, 180, 252\", tailwind: \"indigo-300\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n\n generateSecondary(): SemanticColor {\n return {\n light: { hex: \"#ec4899\", rgb: \"236, 72, 153\", tailwind: \"pink-500\" },\n DEFAULT: { hex: \"#f472b6\", rgb: \"244, 114, 182\", tailwind: \"pink-400\" },\n dark: { hex: \"#f9a8d4\", rgb: \"249, 168, 212\", tailwind: \"pink-300\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n\n generateSuccess(): SemanticColor {\n return {\n light: { hex: \"#22c55e\", rgb: \"34, 197, 94\", tailwind: \"green-500\" },\n DEFAULT: { hex: \"#4ade80\", rgb: \"74, 222, 128\", tailwind: \"green-400\" },\n dark: { hex: \"#86efac\", rgb: \"134, 239, 172\", tailwind: \"green-300\" },\n contrast: { hex: \"#000000\", rgb: \"0, 0, 0\", tailwind: \"black\" },\n };\n }\n\n generateWarning(): SemanticColor {\n return {\n light: { hex: \"#eab308\", rgb: \"234, 179, 8\", tailwind: \"yellow-500\" },\n DEFAULT: { hex: \"#facc15\", rgb: \"250, 204, 21\", tailwind: \"yellow-400\" },\n dark: { hex: \"#fde047\", rgb: \"253, 224, 71\", tailwind: \"yellow-300\" },\n contrast: { hex: \"#000000\", rgb: \"0, 0, 0\", tailwind: \"black\" },\n };\n }\n\n generateError(): SemanticColor {\n return {\n light: { hex: \"#ef4444\", rgb: \"239, 68, 68\", tailwind: \"red-500\" },\n DEFAULT: { hex: \"#f87171\", rgb: \"248, 113, 113\", tailwind: \"red-400\" },\n dark: { hex: \"#fca5a5\", rgb: \"252, 165, 165\", tailwind: \"red-300\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n\n generateInfo(): SemanticColor {\n return {\n light: { hex: \"#3b82f6\", rgb: \"59, 130, 246\", tailwind: \"blue-500\" },\n DEFAULT: { hex: \"#60a5fa\", rgb: \"96, 165, 250\", tailwind: \"blue-400\" },\n dark: { hex: \"#93c5fd\", rgb: \"147, 197, 253\", tailwind: \"blue-300\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n\n generateNeutral(): SemanticColor {\n return {\n light: { hex: \"#374151\", rgb: \"55, 65, 81\", tailwind: \"gray-700\" },\n DEFAULT: { hex: \"#9ca3af\", rgb: \"156, 163, 175\", tailwind: \"gray-400\" },\n dark: { hex: \"#d1d5db\", rgb: \"209, 213, 219\", tailwind: \"gray-300\" },\n contrast: { hex: \"#ffffff\", rgb: \"255, 255, 255\", tailwind: \"white\" },\n };\n }\n}\n\n/**\n * Color Token Factory\n * Uses Strategy Pattern to generate colors based on theme\n */\nexport class ColorTokenFactory {\n private strategy: ColorStrategy;\n\n constructor(strategy: ColorStrategy) {\n this.strategy = strategy;\n }\n\n /**\n * Set color strategy\n */\n setStrategy(strategy: ColorStrategy): void {\n this.strategy = strategy;\n }\n\n /**\n * Generate semantic color palette\n */\n generatePalette(): Record<ColorRole, SemanticColor> {\n return {\n primary: this.strategy.generatePrimary(),\n secondary: this.strategy.generateSecondary(),\n success: this.strategy.generateSuccess(),\n warning: this.strategy.generateWarning(),\n error: this.strategy.generateError(),\n info: this.strategy.generateInfo(),\n neutral: this.strategy.generateNeutral(),\n };\n }\n}\n\n/**\n * Initialize color tokens with error handling\n * Using IIFE to ensure proper initialization order and avoid TDZ errors\n */\nconst initializeColorTokens = (() => {\n let light: Record<ColorRole, SemanticColor>;\n let dark: Record<ColorRole, SemanticColor>;\n\n try {\n const lightFactory = new ColorTokenFactory(new LightColorStrategy());\n light = lightFactory.generatePalette();\n } catch (error) {\n console.error(\"Failed to initialize COLOR_TOKENS_LIGHT:\", error);\n // Fallback: create minimal palette\n const fallbackStrategy = new LightColorStrategy();\n light = {\n primary: fallbackStrategy.generatePrimary(),\n secondary: fallbackStrategy.generateSecondary(),\n success: fallbackStrategy.generateSuccess(),\n warning: fallbackStrategy.generateWarning(),\n error: fallbackStrategy.generateError(),\n info: fallbackStrategy.generateInfo(),\n neutral: fallbackStrategy.generateNeutral(),\n };\n }\n\n try {\n const darkFactory = new ColorTokenFactory(new DarkColorStrategy());\n dark = darkFactory.generatePalette();\n } catch (error) {\n console.error(\"Failed to initialize COLOR_TOKENS_DARK:\", error);\n // Fallback: use light theme as fallback\n dark = light;\n }\n\n return { light, dark };\n})();\n\n/**\n * Light theme colors (default)\n */\nexport const COLOR_TOKENS_LIGHT: Record<ColorRole, SemanticColor> =\n initializeColorTokens.light;\n\n/**\n * Dark theme colors\n */\nexport const COLOR_TOKENS_DARK: Record<ColorRole, SemanticColor> =\n initializeColorTokens.dark;\n\n/**\n * Default color tokens (light theme)\n */\nexport const COLOR_TOKENS: Record<ColorRole, SemanticColor> =\n COLOR_TOKENS_LIGHT;\n\n/**\n * Helper function to get color token\n */\nexport function getColor(\n role: ColorRole,\n shade: \"light\" | \"DEFAULT\" | \"dark\" = \"DEFAULT\",\n): ColorToken {\n // Safety check: ensure COLOR_TOKENS is initialized\n if (!COLOR_TOKENS || typeof COLOR_TOKENS !== \"object\") {\n console.warn(\"COLOR_TOKENS is not initialized, using fallback\");\n return { hex: \"#6b7280\", rgb: \"107, 114, 128\", tailwind: \"gray-500\" }; // Fallback\n }\n\n // Safety check: ensure role exists\n const roleTokens = COLOR_TOKENS[role];\n if (!roleTokens || typeof roleTokens !== \"object\") {\n console.warn(\n `Color role \"${role}\" not found in COLOR_TOKENS, using fallback`,\n );\n return { hex: \"#6b7280\", rgb: \"107, 114, 128\", tailwind: \"gray-500\" }; // Fallback\n }\n\n // Safety check: ensure shade exists\n const token = roleTokens[shade];\n if (!token || typeof token !== \"object\") {\n console.warn(\n `Color shade \"${shade}\" not found for role \"${role}\", using fallback`,\n );\n return { hex: \"#6b7280\", rgb: \"107, 114, 128\", tailwind: \"gray-500\" }; // Fallback\n }\n\n return token;\n}\n\n/**\n * Helper function to get color as Tailwind class\n */\nexport function getColorClass(\n role: ColorRole,\n shade: \"light\" | \"DEFAULT\" | \"dark\" | \"contrast\" = \"DEFAULT\",\n type: \"text\" | \"bg\" | \"border\" = \"text\",\n): string {\n // Safety check: ensure COLOR_TOKENS is initialized\n if (!COLOR_TOKENS || typeof COLOR_TOKENS !== \"object\") {\n console.warn(\"COLOR_TOKENS is not initialized, using fallback\");\n return `${type}-gray-500`; // Fallback color\n }\n\n // Safety check: ensure role exists\n const roleTokens = COLOR_TOKENS[role];\n if (!roleTokens || typeof roleTokens !== \"object\") {\n console.warn(\n `Color role \"${role}\" not found in COLOR_TOKENS, using fallback`,\n );\n return `${type}-gray-500`; // Fallback color\n }\n\n // Safety check: ensure shade exists\n const token = roleTokens[shade];\n if (!token || typeof token !== \"object\" || !token.tailwind) {\n console.warn(\n `Color shade \"${shade}\" not found for role \"${role}\", using fallback`,\n );\n return `${type}-gray-500`; // Fallback color\n }\n\n return `${type}-${token.tailwind}`;\n}\n\n/**\n * Helper function to get hover color class\n * Returns the complete hover class (e.g., 'hover:bg-gray-100')\n * Note: Tailwind needs to see the full class name, so we return it as a complete string\n */\nexport function getHoverColorClass(\n role: ColorRole,\n shade: \"light\" | \"DEFAULT\" | \"dark\" = \"DEFAULT\",\n type: \"text\" | \"bg\" | \"border\" = \"bg\",\n): string {\n const baseClass = getColorClass(role, shade, type);\n // Extract the class name part (e.g., 'bg-gray-100' -> 'bg-gray-100')\n // and prepend 'hover:' prefix\n return `hover:${baseClass}`;\n}\n\n/**\n * Helper function to get focus color class\n * Returns the complete focus class (e.g., 'focus:bg-gray-100')\n */\nexport function getFocusColorClass(\n role: ColorRole,\n shade: \"light\" | \"DEFAULT\" | \"dark\" = \"DEFAULT\",\n type: \"text\" | \"bg\" | \"border\" = \"border\",\n): string {\n const baseClass = getColorClass(role, shade, type);\n return `focus:${baseClass}`;\n}\n\n/**\n * Helper function to get focus ring color class\n * Returns the complete focus ring class (e.g., 'focus:ring-indigo-500')\n * This returns complete classes that Tailwind can detect, avoiding string manipulation.\n *\n * Note: These classes must be in the safelist or used elsewhere in the codebase\n * for Tailwind to include them in the build.\n */\nexport function getFocusRingClass(\n role: ColorRole,\n shade: \"light\" | \"DEFAULT\" | \"dark\" = \"DEFAULT\",\n): string {\n // Map color roles and shades to complete focus ring classes\n // These are complete classes that Tailwind can detect\n const ringClassMap: Record<\n ColorRole,\n Record<\"light\" | \"DEFAULT\" | \"dark\", string>\n > = {\n primary: {\n light: \"focus:ring-indigo-400\",\n DEFAULT: \"focus:ring-indigo-500\",\n dark: \"focus:ring-indigo-600\",\n },\n secondary: {\n light: \"focus:ring-pink-300\",\n DEFAULT: \"focus:ring-pink-500\",\n dark: \"focus:ring-pink-600\",\n },\n success: {\n light: \"focus:ring-green-300\",\n DEFAULT: \"focus:ring-green-500\",\n dark: \"focus:ring-green-600\",\n },\n warning: {\n light: \"focus:ring-yellow-300\",\n DEFAULT: \"focus:ring-yellow-500\",\n dark: \"focus:ring-yellow-600\",\n },\n error: {\n light: \"focus:ring-red-300\",\n DEFAULT: \"focus:ring-red-500\",\n dark: \"focus:ring-red-600\",\n },\n info: {\n light: \"focus:ring-blue-300\",\n DEFAULT: \"focus:ring-blue-500\",\n dark: \"focus:ring-blue-600\",\n },\n neutral: {\n light: \"focus:ring-gray-200\",\n DEFAULT: \"focus:ring-gray-500\",\n dark: \"focus:ring-gray-700\",\n },\n };\n\n return ringClassMap[role]?.[shade] || \"focus:ring-indigo-500\";\n}\n","/**\n * Shadow Tokens\n *\n * Centralized shadow system for consistent elevation and depth.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type ShadowSize = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"inner\";\n\nexport interface ShadowToken {\n value: string;\n tailwind: string;\n description: string;\n}\n\n/**\n * Shadow Token Factory\n * Creates shadow tokens with consistent values\n */\nexport class ShadowTokenFactory {\n /**\n * Create a shadow token\n */\n static create(size: ShadowSize): ShadowToken {\n const shadowMap: Record<\n ShadowSize,\n { value: string; tailwind: string; description: string }\n > = {\n none: {\n value: \"none\",\n tailwind: \"shadow-none\",\n description: \"No shadow\",\n },\n sm: {\n value: \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n tailwind: \"shadow-sm\",\n description: \"Small shadow for subtle elevation\",\n },\n md: {\n value: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-md\",\n description: \"Medium shadow for cards and elevated elements\",\n },\n lg: {\n value:\n \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-lg\",\n description: \"Large shadow for modals and dropdowns\",\n },\n xl: {\n value:\n \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-xl\",\n description: \"Extra large shadow for prominent modals\",\n },\n \"2xl\": {\n value:\n \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-2xl\",\n description: \"2X large shadow for maximum elevation\",\n },\n inner: {\n value: \"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)\",\n tailwind: \"shadow-inner\",\n description: \"Inner shadow for inset elements\",\n },\n };\n\n return shadowMap[size];\n }\n}\n\n/**\n * Pre-defined shadow tokens\n */\nexport const SHADOW_TOKENS = {\n none: ShadowTokenFactory.create(\"none\"),\n sm: ShadowTokenFactory.create(\"sm\"),\n md: ShadowTokenFactory.create(\"md\"),\n lg: ShadowTokenFactory.create(\"lg\"),\n xl: ShadowTokenFactory.create(\"xl\"),\n \"2xl\": ShadowTokenFactory.create(\"2xl\"),\n inner: ShadowTokenFactory.create(\"inner\"),\n} as const;\n\n/**\n * Helper function to get shadow token\n */\nexport function getShadow(size: keyof typeof SHADOW_TOKENS): ShadowToken {\n return SHADOW_TOKENS[size];\n}\n\n/**\n * Helper function to get shadow as Tailwind class\n */\nexport function getShadowClass(size: keyof typeof SHADOW_TOKENS): string {\n return SHADOW_TOKENS[size].tailwind;\n}\n","/**\n * Border Radius Tokens\n *\n * Centralized border radius system for consistent rounded corners.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type RadiusSize =\n | \"none\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"full\";\n\nexport interface RadiusToken {\n value: number;\n rem: string;\n px: string;\n tailwind: string;\n description: string;\n}\n\n/**\n * Radius Token Factory\n * Creates radius tokens with consistent values\n */\nexport class RadiusTokenFactory {\n /**\n * Create a radius token\n */\n static create(size: RadiusSize): RadiusToken {\n const radiusMap: Record<\n RadiusSize,\n { px: number; tailwind: string; description: string }\n > = {\n none: {\n px: 0,\n tailwind: \"rounded-none\",\n description: \"No border radius\",\n },\n sm: {\n px: 2,\n tailwind: \"rounded-sm\",\n description: \"Small radius (2px) for subtle rounding\",\n },\n md: {\n px: 6,\n tailwind: \"rounded-md\",\n description: \"Medium radius (6px) for buttons and inputs\",\n },\n lg: {\n px: 8,\n tailwind: \"rounded-lg\",\n description: \"Large radius (8px) for cards and containers\",\n },\n xl: {\n px: 12,\n tailwind: \"rounded-xl\",\n description: \"Extra large radius (12px) for prominent elements\",\n },\n \"2xl\": {\n px: 16,\n tailwind: \"rounded-2xl\",\n description: \"2X large radius (16px) for large containers\",\n },\n \"3xl\": {\n px: 24,\n tailwind: \"rounded-3xl\",\n description: \"3X large radius (24px) for very large containers\",\n },\n full: {\n px: 9999,\n tailwind: \"rounded-full\",\n description: \"Full radius for circular elements\",\n },\n };\n\n const config = radiusMap[size];\n return {\n value: config.px,\n rem: `${config.px / 16}rem`,\n px: `${config.px}px`,\n tailwind: config.tailwind,\n description: config.description,\n };\n }\n}\n\n/**\n * Pre-defined radius tokens\n */\nexport const RADIUS_TOKENS = {\n none: RadiusTokenFactory.create(\"none\"),\n sm: RadiusTokenFactory.create(\"sm\"),\n md: RadiusTokenFactory.create(\"md\"),\n lg: RadiusTokenFactory.create(\"lg\"),\n xl: RadiusTokenFactory.create(\"xl\"),\n \"2xl\": RadiusTokenFactory.create(\"2xl\"),\n \"3xl\": RadiusTokenFactory.create(\"3xl\"),\n full: RadiusTokenFactory.create(\"full\"),\n} as const;\n\n/**\n * Helper function to get radius token\n */\nexport function getRadius(size: keyof typeof RADIUS_TOKENS): RadiusToken {\n return RADIUS_TOKENS[size];\n}\n\n/**\n * Helper function to get radius as Tailwind class\n */\nexport function getRadiusClass(size: keyof typeof RADIUS_TOKENS): string {\n return RADIUS_TOKENS[size].tailwind;\n}\n","/**\n * Border Tokens\n *\n * Centralized border system for consistent borders and dividers.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type BorderWidth = \"none\" | \"thin\" | \"base\" | \"medium\" | \"thick\";\nexport type BorderStyle = \"solid\" | \"dashed\" | \"dotted\";\n\nexport interface BorderToken {\n width: {\n value: number;\n px: string;\n tailwind: string;\n };\n style: BorderStyle;\n description: string;\n}\n\n/**\n * Border Token Factory\n * Creates border tokens with consistent values\n */\nexport class BorderTokenFactory {\n /**\n * Create a border width token\n */\n static createWidth(width: BorderWidth): BorderToken[\"width\"] {\n const widthMap: Record<BorderWidth, { px: number; tailwind: string }> = {\n none: {\n px: 0,\n tailwind: \"border-0\",\n },\n thin: {\n px: 1,\n tailwind: \"border\",\n },\n base: {\n px: 1,\n tailwind: \"border\",\n },\n medium: {\n px: 2,\n tailwind: \"border-2\",\n },\n thick: {\n px: 4,\n tailwind: \"border-4\",\n },\n };\n\n const config = widthMap[width];\n return {\n value: config.px,\n px: `${config.px}px`,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create a complete border token\n */\n static create(width: BorderWidth, style: BorderStyle = \"solid\"): BorderToken {\n return {\n width: this.createWidth(width),\n style,\n description: `${width} ${style} border`,\n };\n }\n}\n\n/**\n * Pre-defined border tokens\n */\nexport const BORDER_TOKENS = {\n none: BorderTokenFactory.create(\"none\"),\n thin: BorderTokenFactory.create(\"thin\"),\n base: BorderTokenFactory.create(\"base\"),\n medium: BorderTokenFactory.create(\"medium\"),\n thick: BorderTokenFactory.create(\"thick\"),\n // Dashed variants\n thinDashed: BorderTokenFactory.create(\"thin\", \"dashed\"),\n baseDashed: BorderTokenFactory.create(\"base\", \"dashed\"),\n // Dotted variants\n thinDotted: BorderTokenFactory.create(\"thin\", \"dotted\"),\n baseDotted: BorderTokenFactory.create(\"base\", \"dotted\"),\n} as const;\n\n/**\n * Helper function to get border token\n */\nexport function getBorder(size: keyof typeof BORDER_TOKENS): BorderToken {\n return BORDER_TOKENS[size];\n}\n\n/**\n * Helper function to get border width as Tailwind class\n */\nexport function getBorderWidthClass(width: BorderWidth): string {\n return BorderTokenFactory.createWidth(width).tailwind;\n}\n\n/**\n * Helper function to get border style as Tailwind class\n */\nexport function getBorderStyleClass(style: BorderStyle): string {\n const styleMap: Record<BorderStyle, string> = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n };\n return styleMap[style];\n}\n\n/**\n * Helper function to get complete border classes\n */\nexport function getBorderClasses(\n width: BorderWidth,\n style: BorderStyle = \"solid\",\n): string {\n return `${getBorderWidthClass(width)} ${getBorderStyleClass(style)}`;\n}\n","/**\n * Animation Tokens\n *\n * Centralized animation and transition system for consistent timing and easing.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type AnimationDuration = \"fast\" | \"base\" | \"slow\" | \"slower\";\nexport type EasingFunction = \"ease-in\" | \"ease-out\" | \"ease-in-out\" | \"spring\";\n\nexport interface AnimationToken {\n duration: {\n value: string;\n ms: number;\n tailwind: string;\n };\n easing: {\n value: string;\n tailwind: string;\n description: string;\n };\n}\n\nexport interface TransitionToken {\n property: string;\n duration: string;\n timingFunction: string;\n tailwind: string;\n}\n\n/**\n * Animation Token Factory\n * Creates animation tokens with consistent timing and easing\n */\nexport class AnimationTokenFactory {\n /**\n * Create an animation token\n */\n static create(\n duration: AnimationDuration,\n easing: EasingFunction = \"ease-in-out\",\n ): AnimationToken {\n const durationMap: Record<\n AnimationDuration,\n { value: string; ms: number; tailwind: string }\n > = {\n fast: {\n value: \"150ms\",\n ms: 150,\n tailwind: \"duration-150\",\n },\n base: {\n value: \"200ms\",\n ms: 200,\n tailwind: \"duration-200\",\n },\n slow: {\n value: \"300ms\",\n ms: 300,\n tailwind: \"duration-300\",\n },\n slower: {\n value: \"500ms\",\n ms: 500,\n tailwind: \"duration-500\",\n },\n };\n\n const easingMap: Record<\n EasingFunction,\n { value: string; tailwind: string; description: string }\n > = {\n \"ease-in\": {\n value: \"cubic-bezier(0.4, 0, 1, 1)\",\n tailwind: \"ease-in\",\n description: \"Slow start, fast end\",\n },\n \"ease-out\": {\n value: \"cubic-bezier(0, 0, 0.2, 1)\",\n tailwind: \"ease-out\",\n description: \"Fast start, slow end\",\n },\n \"ease-in-out\": {\n value: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n tailwind: \"ease-in-out\",\n description: \"Slow start and end, fast middle\",\n },\n spring: {\n value: \"cubic-bezier(0.68, -0.55, 0.265, 1.55)\",\n tailwind: \"ease-[cubic-bezier(0.68,-0.55,0.265,1.55)]\",\n description: \"Spring-like bounce effect\",\n },\n };\n\n return {\n duration: durationMap[duration],\n easing: easingMap[easing],\n };\n }\n\n /**\n * Create a transition token\n */\n static createTransition(\n property: string | string[],\n duration: AnimationDuration = \"base\",\n easing: EasingFunction = \"ease-in-out\",\n ): TransitionToken {\n const durationToken = this.create(duration, easing);\n const properties = Array.isArray(property) ? property.join(\", \") : property;\n const tailwindClasses = [\n durationToken.duration.tailwind,\n durationToken.easing.tailwind,\n ].join(\" \");\n\n return {\n property: properties,\n duration: durationToken.duration.value,\n timingFunction: durationToken.easing.value,\n tailwind: tailwindClasses,\n };\n }\n}\n\n/**\n * Pre-defined animation tokens\n */\nexport const ANIMATION_TOKENS = {\n fast: AnimationTokenFactory.create(\"fast\"),\n base: AnimationTokenFactory.create(\"base\"),\n slow: AnimationTokenFactory.create(\"slow\"),\n slower: AnimationTokenFactory.create(\"slower\"),\n\n // Common transitions\n colors: AnimationTokenFactory.createTransition(\n [\"color\", \"background-color\", \"border-color\"],\n \"base\",\n ),\n opacity: AnimationTokenFactory.createTransition(\"opacity\", \"fast\"),\n transform: AnimationTokenFactory.createTransition(\"transform\", \"base\"),\n all: AnimationTokenFactory.createTransition(\"all\", \"base\"),\n} as const;\n\n/**\n * Helper function to get animation token\n */\nexport function getAnimation(\n duration: AnimationDuration,\n easing?: EasingFunction,\n): AnimationToken {\n return AnimationTokenFactory.create(duration, easing);\n}\n\n/**\n * Helper function to get animation classes\n */\nexport function getAnimationClass(\n duration: AnimationDuration,\n easing: EasingFunction = \"ease-in-out\",\n): string {\n const token = AnimationTokenFactory.create(duration, easing);\n return `${token.duration.tailwind} ${token.easing.tailwind}`;\n}\n\n/**\n * Helper function to get transition classes\n */\nexport function getTransitionClass(\n property: string | string[],\n duration: AnimationDuration = \"base\",\n easing: EasingFunction = \"ease-in-out\",\n): string {\n const transition = AnimationTokenFactory.createTransition(\n property,\n duration,\n easing,\n );\n return transition.tailwind;\n}\n","/**\n * Z-Index Tokens\n *\n * Centralized z-index system for consistent layering.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type ZIndexLayer =\n | \"base\"\n | \"dropdown\"\n | \"sticky\"\n | \"fixed\"\n | \"modal-backdrop\"\n | \"modal\"\n | \"popover\"\n | \"tooltip\"\n | \"toast\";\n\nexport interface ZIndexToken {\n value: number;\n tailwind: string;\n description: string;\n}\n\n/**\n * Z-Index Token Factory\n * Creates z-index tokens with consistent layering\n */\nexport class ZIndexTokenFactory {\n /**\n * Create a z-index token\n */\n static create(layer: ZIndexLayer): ZIndexToken {\n const layerMap: Record<\n ZIndexLayer,\n { value: number; tailwind: string; description: string }\n > = {\n base: {\n value: 0,\n tailwind: \"z-0\",\n description: \"Base layer for normal content\",\n },\n dropdown: {\n value: 1000,\n tailwind: \"z-[1000]\",\n description: \"Dropdown menus and select options\",\n },\n sticky: {\n value: 1020,\n tailwind: \"z-[1020]\",\n description: \"Sticky headers and navigation\",\n },\n fixed: {\n value: 1030,\n tailwind: \"z-[1030]\",\n description: \"Fixed position elements\",\n },\n \"modal-backdrop\": {\n value: 1040,\n tailwind: \"z-[1040]\",\n description: \"Modal backdrop/overlay\",\n },\n modal: {\n value: 1050,\n tailwind: \"z-[1050]\",\n description: \"Modal dialogs and drawers\",\n },\n popover: {\n value: 1060,\n tailwind: \"z-[1060]\",\n description: \"Popovers and tooltips\",\n },\n tooltip: {\n value: 1070,\n tailwind: \"z-[1070]\",\n description: \"Tooltips (highest priority)\",\n },\n toast: {\n value: 1080,\n tailwind: \"z-[1080]\",\n description: \"Toast notifications (highest priority)\",\n },\n };\n\n return layerMap[layer];\n }\n}\n\n/**\n * Pre-defined z-index tokens\n */\nexport const Z_INDEX_TOKENS = {\n base: ZIndexTokenFactory.create(\"base\"),\n dropdown: ZIndexTokenFactory.create(\"dropdown\"),\n sticky: ZIndexTokenFactory.create(\"sticky\"),\n fixed: ZIndexTokenFactory.create(\"fixed\"),\n \"modal-backdrop\": ZIndexTokenFactory.create(\"modal-backdrop\"),\n modal: ZIndexTokenFactory.create(\"modal\"),\n popover: ZIndexTokenFactory.create(\"popover\"),\n tooltip: ZIndexTokenFactory.create(\"tooltip\"),\n toast: ZIndexTokenFactory.create(\"toast\"),\n} as const;\n\n/**\n * Helper function to get z-index token\n */\nexport function getZIndex(layer: ZIndexLayer): ZIndexToken {\n return ZIndexTokenFactory.create(layer);\n}\n\n/**\n * Helper function to get z-index as Tailwind class\n */\nexport function getZIndexClass(layer: ZIndexLayer): string {\n return ZIndexTokenFactory.create(layer).tailwind;\n}\n","/**\n * Opacity Tokens\n *\n * Centralized opacity system for consistent transparency values.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type OpacityValue =\n | 0\n | 5\n | 10\n | 20\n | 25\n | 30\n | 40\n | 50\n | 60\n | 70\n | 75\n | 80\n | 90\n | 95\n | 100;\n\nexport interface OpacityToken {\n value: OpacityValue;\n decimal: number;\n tailwind: string;\n description: string;\n}\n\n/**\n * Opacity Token Factory\n * Creates opacity tokens with consistent values\n */\nexport class OpacityTokenFactory {\n /**\n * Create an opacity token\n */\n static create(value: OpacityValue): OpacityToken {\n const decimal = value / 100;\n\n const descriptionMap: Record<OpacityValue, string> = {\n 0: \"Fully transparent\",\n 5: \"Very light overlay\",\n 10: \"Light overlay\",\n 20: \"Subtle overlay\",\n 25: \"Quarter opacity\",\n 30: \"Light background\",\n 40: \"Semi-transparent\",\n 50: \"Half opacity\",\n 60: \"Semi-opaque\",\n 70: \"Mostly opaque\",\n 75: \"Three-quarter opacity\",\n 80: \"High opacity\",\n 90: \"Very high opacity\",\n 95: \"Nearly opaque\",\n 100: \"Fully opaque\",\n };\n\n // Map to Tailwind classes\n const tailwindMap: Record<OpacityValue, string> = {\n 0: \"opacity-0\",\n 5: \"opacity-5\",\n 10: \"opacity-10\",\n 20: \"opacity-20\",\n 25: \"opacity-25\",\n 30: \"opacity-30\",\n 40: \"opacity-40\",\n 50: \"opacity-50\",\n 60: \"opacity-60\",\n 70: \"opacity-70\",\n 75: \"opacity-75\",\n 80: \"opacity-80\",\n 90: \"opacity-90\",\n 95: \"opacity-95\",\n 100: \"opacity-100\",\n };\n\n return {\n value,\n decimal,\n tailwind: tailwindMap[value],\n description: descriptionMap[value],\n };\n }\n}\n\n/**\n * Pre-defined opacity tokens\n */\nexport const OPACITY_TOKENS = {\n transparent: OpacityTokenFactory.create(0),\n \"5\": OpacityTokenFactory.create(5),\n \"10\": OpacityTokenFactory.create(10),\n \"20\": OpacityTokenFactory.create(20),\n \"25\": OpacityTokenFactory.create(25),\n \"30\": OpacityTokenFactory.create(30),\n \"40\": OpacityTokenFactory.create(40),\n \"50\": OpacityTokenFactory.create(50),\n \"60\": OpacityTokenFactory.create(60),\n \"70\": OpacityTokenFactory.create(70),\n \"75\": OpacityTokenFactory.create(75),\n \"80\": OpacityTokenFactory.create(80),\n \"90\": OpacityTokenFactory.create(90),\n \"95\": OpacityTokenFactory.create(95),\n opaque: OpacityTokenFactory.create(100),\n} as const;\n\n/**\n * Helper function to get opacity token\n */\nexport function getOpacity(value: OpacityValue): OpacityToken {\n return OpacityTokenFactory.create(value);\n}\n\n/**\n * Helper function to get opacity as Tailwind class\n */\nexport function getOpacityClass(value: OpacityValue): string {\n return OpacityTokenFactory.create(value).tailwind;\n}\n","/**\n * Gradient Tokens\n *\n * Centralized gradient system for consistent color gradients.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nimport { COLOR_TOKENS_LIGHT } from \"./colors\";\n\nexport type GradientDirection =\n | \"to-r\"\n | \"to-l\"\n | \"to-t\"\n | \"to-b\"\n | \"to-tr\"\n | \"to-tl\"\n | \"to-br\"\n | \"to-bl\";\nexport type GradientRole =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\";\n\nexport interface GradientToken {\n value: string;\n tailwind: string;\n description: string;\n from: string;\n via?: string;\n to: string;\n}\n\n/**\n * Gradient Token Factory\n * Creates gradient tokens with consistent color schemes\n */\nexport class GradientTokenFactory {\n /**\n * Create a gradient token\n */\n static create(\n role: GradientRole,\n direction: GradientDirection = \"to-r\",\n ): GradientToken {\n const colorMap: Record<\n GradientRole,\n { from: string; via?: string; to: string; description: string }\n > = {\n primary: {\n from: COLOR_TOKENS_LIGHT.primary.light.hex,\n via: COLOR_TOKENS_LIGHT.primary.DEFAULT.hex,\n to: COLOR_TOKENS_LIGHT.primary.dark.hex,\n description: \"Primary color gradient\",\n },\n secondary: {\n from: COLOR_TOKENS_LIGHT.secondary.light.hex,\n via: COLOR_TOKENS_LIGHT.secondary.DEFAULT.hex,\n to: COLOR_TOKENS_LIGHT.secondary.dark.hex,\n description: \"Secondary color gradient\",\n },\n success: {\n from: COLOR_TOKENS_LIGHT.success.light.hex,\n to: COLOR_TOKENS_LIGHT.success.dark.hex,\n description: \"Success color gradient\",\n },\n error: {\n from: COLOR_TOKENS_LIGHT.error.light.hex,\n to: COLOR_TOKENS_LIGHT.error.dark.hex,\n description: \"Error color gradient\",\n },\n info: {\n from: COLOR_TOKENS_LIGHT.info.light.hex,\n to: COLOR_TOKENS_LIGHT.info.dark.hex,\n description: \"Info color gradient\",\n },\n warning: {\n from: COLOR_TOKENS_LIGHT.warning.light.hex,\n to: COLOR_TOKENS_LIGHT.warning.dark.hex,\n description: \"Warning color gradient\",\n },\n };\n\n const colors = colorMap[role];\n const directionMap: Record<GradientDirection, string> = {\n \"to-r\": \"to right\",\n \"to-l\": \"to left\",\n \"to-t\": \"to top\",\n \"to-b\": \"to bottom\",\n \"to-tr\": \"to top right\",\n \"to-tl\": \"to top left\",\n \"to-br\": \"to bottom right\",\n \"to-bl\": \"to bottom left\",\n };\n\n // Build CSS gradient value\n let gradientValue = `linear-gradient(${directionMap[direction]}, ${colors.from}`;\n if (colors.via) {\n gradientValue += `, ${colors.via}`;\n }\n gradientValue += `, ${colors.to})`;\n\n // Build Tailwind classes\n const tailwindParts: string[] = [];\n\n // Direction class\n tailwindParts.push(`bg-gradient-${direction.replace(\"to-\", \"\")}`);\n\n // Color classes (using from-*, via-*, to-* syntax)\n // Note: We'll use arbitrary values for custom colors\n tailwindParts.push(`from-[${colors.from}]`);\n if (colors.via) {\n tailwindParts.push(`via-[${colors.via}]`);\n }\n tailwindParts.push(`to-[${colors.to}]`);\n\n return {\n value: gradientValue,\n tailwind: tailwindParts.join(\" \"),\n description: colors.description,\n from: colors.from,\n via: colors.via,\n to: colors.to,\n };\n }\n\n /**\n * Convert hex color to approximate Tailwind color class\n * This is a helper for documentation, actual implementation uses arbitrary values\n * @deprecated Not currently used, kept for potential future use\n */\n // @ts-expect-error - Method kept for potential future use\n private static hexToTailwindColor(_hex: string): string {\n // This is a simplified mapping for documentation purposes\n // In practice, we use arbitrary values like from-[#hex]\n return _hex;\n }\n}\n\n/**\n * Pre-defined gradient tokens\n */\nexport const GRADIENT_TOKENS = {\n primary: GradientTokenFactory.create(\"primary\"),\n secondary: GradientTokenFactory.create(\"secondary\"),\n success: GradientTokenFactory.create(\"success\"),\n error: GradientTokenFactory.create(\"error\"),\n info: GradientTokenFactory.create(\"info\"),\n warning: GradientTokenFactory.create(\"warning\"),\n\n // Common directions\n \"primary-to-r\": GradientTokenFactory.create(\"primary\", \"to-r\"),\n \"primary-to-b\": GradientTokenFactory.create(\"primary\", \"to-b\"),\n \"secondary-to-r\": GradientTokenFactory.create(\"secondary\", \"to-r\"),\n \"success-to-r\": GradientTokenFactory.create(\"success\", \"to-r\"),\n \"error-to-r\": GradientTokenFactory.create(\"error\", \"to-r\"),\n} as const;\n\n/**\n * Helper function to get gradient token\n */\nexport function getGradient(\n role: GradientRole,\n direction?: GradientDirection,\n): GradientToken {\n return GradientTokenFactory.create(role, direction);\n}\n\n/**\n * Helper function to get gradient as Tailwind classes\n */\nexport function getGradientClass(\n role: GradientRole,\n direction: GradientDirection = \"to-r\",\n): string {\n return GradientTokenFactory.create(role, direction).tailwind;\n}\n","/**\n * Tokens Factory\n *\n * Main factory for creating all types of tokens.\n * Implements Factory Pattern for unified token creation.\n */\n\nimport {\n SpacingTokenFactory,\n type SpacingScale,\n type SpacingToken,\n} from \"./spacing\";\nimport {\n TypographyTokenFactory,\n type TypographyToken,\n type FontSize,\n type LineHeight,\n type FontWeight,\n} from \"./typography\";\nimport {\n ColorTokenFactory,\n type ColorRole,\n type SemanticColor,\n LightColorStrategy,\n DarkColorStrategy,\n type ThemeMode,\n} from \"./colors\";\nimport {\n BreakpointTokenFactory,\n type BreakpointName,\n type BreakpointToken,\n} from \"./breakpoints\";\nimport {\n ShadowTokenFactory,\n type ShadowSize,\n type ShadowToken,\n} from \"./shadows\";\nimport {\n RadiusTokenFactory,\n type RadiusSize,\n type RadiusToken,\n} from \"./radius\";\nimport {\n BorderTokenFactory,\n type BorderWidth,\n type BorderToken,\n} from \"./borders\";\nimport {\n AnimationTokenFactory,\n type AnimationDuration,\n type EasingFunction,\n type AnimationToken,\n} from \"./animations\";\nimport {\n ZIndexTokenFactory,\n type ZIndexLayer,\n type ZIndexToken,\n} from \"./z-index\";\nimport {\n OpacityTokenFactory,\n type OpacityValue,\n type OpacityToken,\n} from \"./opacity\";\nimport {\n GradientTokenFactory,\n type GradientRole,\n type GradientDirection,\n type GradientToken,\n} from \"./gradients\";\n\nexport interface TokenSet {\n spacing: Record<string, SpacingToken>;\n typography: Record<string, TypographyToken>;\n colors: Record<ColorRole, SemanticColor>;\n breakpoints: Record<BreakpointName, BreakpointToken>;\n shadows: Record<string, ShadowToken>;\n radius: Record<string, RadiusToken>;\n borders: Record<string, BorderToken>;\n animations: Record<string, AnimationToken>;\n zIndex: Record<string, ZIndexToken>;\n opacity: Record<string, OpacityToken>;\n gradients: Record<string, GradientToken>;\n}\n\n/**\n * Tokens Factory\n * Main factory for creating complete token sets\n */\nexport class TokensFactory {\n private colorFactory: ColorTokenFactory;\n\n constructor(theme: ThemeMode = \"light\") {\n const strategy =\n theme === \"light\" ? new LightColorStrategy() : new DarkColorStrategy();\n this.colorFactory = new ColorTokenFactory(strategy);\n }\n\n /**\n * Create spacing token\n */\n createSpacing(scale: SpacingScale): SpacingToken {\n return SpacingTokenFactory.create(scale);\n }\n\n /**\n * Create typography token\n */\n createTypography(\n size: FontSize,\n lineHeight?: LineHeight,\n weight?: FontWeight,\n ): TypographyToken {\n return TypographyTokenFactory.create(size, lineHeight, weight);\n }\n\n /**\n * Create color palette\n */\n createColorPalette(): Record<ColorRole, SemanticColor> {\n return this.colorFactory.generatePalette();\n }\n\n /**\n * Create breakpoint token\n */\n createBreakpoint(name: BreakpointName): BreakpointToken {\n return BreakpointTokenFactory.create(name);\n }\n\n /**\n * Create shadow token\n */\n createShadow(size: ShadowSize): ShadowToken {\n return ShadowTokenFactory.create(size);\n }\n\n /**\n * Create radius token\n */\n createRadius(size: RadiusSize): RadiusToken {\n return RadiusTokenFactory.create(size);\n }\n\n /**\n * Create border token\n */\n createBorder(width: BorderWidth): BorderToken {\n return BorderTokenFactory.create(width);\n }\n\n /**\n * Create animation token\n */\n createAnimation(\n duration: AnimationDuration,\n easing?: EasingFunction,\n ): AnimationToken {\n return AnimationTokenFactory.create(duration, easing);\n }\n\n /**\n * Create z-index token\n */\n createZIndex(layer: ZIndexLayer): ZIndexToken {\n return ZIndexTokenFactory.create(layer);\n }\n\n /**\n * Create opacity token\n */\n createOpacity(value: OpacityValue): OpacityToken {\n return OpacityTokenFactory.create(value);\n }\n\n /**\n * Create gradient token\n */\n createGradient(\n role: GradientRole,\n direction?: GradientDirection,\n ): GradientToken {\n return GradientTokenFactory.create(role, direction);\n }\n\n /**\n * Create complete token set for a theme\n */\n createTokenSet(): TokenSet {\n return {\n spacing: {\n xs: this.createSpacing(1),\n sm: this.createSpacing(2),\n md: this.createSpacing(3),\n base: this.createSpacing(4),\n lg: this.createSpacing(6),\n xl: this.createSpacing(8),\n \"2xl\": this.createSpacing(10),\n \"3xl\": this.createSpacing(12),\n \"4xl\": this.createSpacing(16),\n },\n typography: {\n h1: this.createTypography(\"4xl\", \"tight\", \"bold\"),\n h2: this.createTypography(\"3xl\", \"tight\", \"bold\"),\n h3: this.createTypography(\"2xl\", \"snug\", \"semibold\"),\n body: this.createTypography(\"base\", \"relaxed\", \"normal\"),\n label: this.createTypography(\"sm\", \"normal\", \"medium\"),\n caption: this.createTypography(\"xs\", \"normal\", \"normal\"),\n },\n colors: this.createColorPalette(),\n breakpoints: {\n sm: this.createBreakpoint(\"sm\"),\n md: this.createBreakpoint(\"md\"),\n lg: this.createBreakpoint(\"lg\"),\n xl: this.createBreakpoint(\"xl\"),\n \"2xl\": this.createBreakpoint(\"2xl\"),\n },\n shadows: {\n none: this.createShadow(\"none\"),\n sm: this.createShadow(\"sm\"),\n md: this.createShadow(\"md\"),\n lg: this.createShadow(\"lg\"),\n xl: this.createShadow(\"xl\"),\n \"2xl\": this.createShadow(\"2xl\"),\n inner: this.createShadow(\"inner\"),\n },\n radius: {\n none: this.createRadius(\"none\"),\n sm: this.createRadius(\"sm\"),\n md: this.createRadius(\"md\"),\n lg: this.createRadius(\"lg\"),\n xl: this.createRadius(\"xl\"),\n \"2xl\": this.createRadius(\"2xl\"),\n \"3xl\": this.createRadius(\"3xl\"),\n full: this.createRadius(\"full\"),\n },\n borders: {\n none: this.createBorder(\"none\"),\n thin: this.createBorder(\"thin\"),\n base: this.createBorder(\"base\"),\n medium: this.createBorder(\"medium\"),\n thick: this.createBorder(\"thick\"),\n },\n animations: {\n fast: this.createAnimation(\"fast\"),\n base: this.createAnimation(\"base\"),\n slow: this.createAnimation(\"slow\"),\n slower: this.createAnimation(\"slower\"),\n },\n zIndex: {\n base: this.createZIndex(\"base\"),\n dropdown: this.createZIndex(\"dropdown\"),\n sticky: this.createZIndex(\"sticky\"),\n fixed: this.createZIndex(\"fixed\"),\n \"modal-backdrop\": this.createZIndex(\"modal-backdrop\"),\n modal: this.createZIndex(\"modal\"),\n popover: this.createZIndex(\"popover\"),\n tooltip: this.createZIndex(\"tooltip\"),\n toast: this.createZIndex(\"toast\"),\n },\n opacity: {\n transparent: this.createOpacity(0),\n \"5\": this.createOpacity(5),\n \"10\": this.createOpacity(10),\n \"25\": this.createOpacity(25),\n \"50\": this.createOpacity(50),\n \"75\": this.createOpacity(75),\n \"90\": this.createOpacity(90),\n opaque: this.createOpacity(100),\n },\n gradients: {\n primary: this.createGradient(\"primary\"),\n secondary: this.createGradient(\"secondary\"),\n success: this.createGradient(\"success\"),\n error: this.createGradient(\"error\"),\n info: this.createGradient(\"info\"),\n warning: this.createGradient(\"warning\"),\n },\n };\n }\n\n /**\n * Switch theme\n */\n setTheme(theme: ThemeMode): void {\n const strategy =\n theme === \"light\" ? new LightColorStrategy() : new DarkColorStrategy();\n this.colorFactory.setStrategy(strategy);\n }\n}\n\n/**\n * Default factory instance (light theme)\n */\nexport const defaultTokensFactory = new TokensFactory(\"light\");\n\n/**\n * Helper function to create token set\n */\nexport function createTokenSet(theme: ThemeMode = \"light\"): TokenSet {\n const factory = new TokensFactory(theme);\n return factory.createTokenSet();\n}\n","/**\n * Light Theme Tokens\n *\n * Light theme color palette and tokens.\n */\n\nimport { COLOR_TOKENS_LIGHT } from \"../colors\";\nimport { SPACING_TOKENS } from \"../spacing\";\nimport { TYPOGRAPHY_TOKENS } from \"../typography\";\nimport { BREAKPOINT_TOKENS } from \"../breakpoints\";\n\nexport const LIGHT_THEME = {\n colors: COLOR_TOKENS_LIGHT,\n spacing: SPACING_TOKENS,\n typography: TYPOGRAPHY_TOKENS,\n breakpoints: BREAKPOINT_TOKENS,\n mode: \"light\" as const,\n} as const;\n","/**\n * Dark Theme Tokens\n *\n * Dark theme color palette and tokens.\n */\n\nimport { COLOR_TOKENS_DARK } from \"../colors\";\nimport { SPACING_TOKENS } from \"../spacing\";\nimport { TYPOGRAPHY_TOKENS } from \"../typography\";\nimport { BREAKPOINT_TOKENS } from \"../breakpoints\";\n\nexport const DARK_THEME = {\n colors: COLOR_TOKENS_DARK,\n spacing: SPACING_TOKENS,\n typography: TYPOGRAPHY_TOKENS,\n breakpoints: BREAKPOINT_TOKENS,\n mode: \"dark\" as const,\n} as const;\n","/**\n * Switch Design Tokens\n *\n * Component-scoped tokens for the Switch primitive. These dimensions are\n * anatomical to the control (track / thumb / on-state translation) and do\n * not belong in the global spacing scale — keeping them here prevents the\n * scale from being polluted with one-off values like w-9 / w-11 / w-14 /\n * h-7 that only ever make sense on a switch.\n *\n * Sizes mirror the SwitchSize variants (\"sm\" | \"md\" | \"lg\").\n */\n\nexport type SwitchSizeToken = \"sm\" | \"md\" | \"lg\";\n\nexport const SWITCH_TOKENS = {\n /**\n * Track (the rounded background bar).\n * w * h:\n * sm — 36 × 20 px\n * md — 44 × 24 px\n * lg — 56 × 28 px\n */\n track: {\n sm: { w: \"w-9\", h: \"h-5\" },\n md: { w: \"w-11\", h: \"h-6\" },\n lg: { w: \"w-14\", h: \"h-7\" },\n },\n\n /**\n * Thumb (the circular knob).\n * w * h:\n * sm — 16 × 16 px\n * md — 20 × 20 px\n * lg — 24 × 24 px\n */\n thumb: {\n sm: { w: \"w-4\", h: \"h-4\" },\n md: { w: \"w-5\", h: \"h-5\" },\n lg: { w: \"w-6\", h: \"h-6\" },\n },\n\n /**\n * Translation distance of the thumb when the switch is on. Matches the\n * track width minus the thumb width and border for visual symmetry.\n * sm — 16 px\n * md — 20 px\n * lg — 28 px\n */\n translate: {\n sm: \"translate-x-4\",\n md: \"translate-x-5\",\n lg: \"translate-x-7\",\n },\n} as const;\n\n/**\n * Helper: returns the full set of classes for a given switch size.\n */\nexport function getSwitchClasses(size: SwitchSizeToken): {\n track: string;\n thumb: string;\n translate: string;\n} {\n return {\n track: `${SWITCH_TOKENS.track[size].w} ${SWITCH_TOKENS.track[size].h}`,\n thumb: `${SWITCH_TOKENS.thumb[size].w} ${SWITCH_TOKENS.thumb[size].h}`,\n translate: SWITCH_TOKENS.translate[size],\n };\n}\n"],"names":["SIDEBAR_TOKENS","getNestedIndentClass","level","SpacingTokenFactory","scale","px","rem","__publicField","SPACING_TOKENS","getSpacing","getSpacingClass","direction","value","TypographyTokenFactory","size","config","height","weight","lineHeight","FONT_FAMILY_TOKENS","FONT_WEIGHT_TOKENS","TYPOGRAPHY_TOKENS","getTypography","variant","getTypographyClasses","token","getTypographySize","getTypographySizeFromFontSize","getTypographyWeight","getTypographyWeightFromFontWeight","getTypographyLineHeight","COLOR_SCALES","createToken","hex","colorName","rgb","hexToRgb","hsl","hexToHsl","result","g","b","max","min","h","s","l","d","INDIGO","VIOLET","CYAN","SLATE","GRAY","EMERALD","GREEN","AMBER","YELLOW","ORANGE","ROSE","RED","SKY","BLUE","FUCHSIA","PINK","PURPLE","TEAL","LIME","PRIMITIVE_COLORS","getPrimitiveColor","name","getPrimitiveColorPalette","SEMANTIC_COLORS_LIGHT","SEMANTIC_COLORS_DARK","SEMANTIC_COLORS","getSemanticColor","role","shade","theme","getSemanticColorRole","getColor","options","format","opacity","getSemanticColorValue","getColorClass","type","hover","focus","active","classes","getSemanticColorClass","hoverToken","activeToken","getHoverColorClass","getFocusColorClass","getFocusRingClass","withOpacity","isLightColor","hexToRgbArray","getContrastColor","blendColors","color1","color2","rgb1","rgb2","r","lighten","percent","darken","BRAND_COLORS","BreakpointTokenFactory","BREAKPOINT_TOKENS","getBreakpoint","getMediaQuery","breakpoint","LightColorStrategy","DarkColorStrategy","ColorTokenFactory","strategy","initializeColorTokens","light","dark","error","fallbackStrategy","COLOR_TOKENS_LIGHT","COLOR_TOKENS_DARK","COLOR_TOKENS","roleTokens","_a","ShadowTokenFactory","SHADOW_TOKENS","getShadow","getShadowClass","RadiusTokenFactory","RADIUS_TOKENS","getRadius","getRadiusClass","BorderTokenFactory","width","style","BORDER_TOKENS","getBorder","getBorderWidthClass","getBorderStyleClass","getBorderClasses","AnimationTokenFactory","duration","easing","durationMap","easingMap","property","durationToken","properties","tailwindClasses","ANIMATION_TOKENS","getAnimation","getAnimationClass","getTransitionClass","ZIndexTokenFactory","layer","Z_INDEX_TOKENS","getZIndex","getZIndexClass","OpacityTokenFactory","decimal","descriptionMap","OPACITY_TOKENS","getOpacity","getOpacityClass","GradientTokenFactory","colors","gradientValue","tailwindParts","_hex","GRADIENT_TOKENS","getGradient","getGradientClass","TokensFactory","defaultTokensFactory","createTokenSet","LIGHT_THEME","DARK_THEME","SWITCH_TOKENS","getSwitchClasses"],"mappings":"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"}
@@ -1,122 +0,0 @@
1
- /**
2
- * Color Tokens
3
- *
4
- * Semantic color system for consistent theming.
5
- * Uses Strategy Pattern for different color strategies (light, dark, custom).
6
- *
7
- * NOTE: This file maintains backward compatibility with the old API.
8
- * For the new color system, use imports from './colors/index.ts'
9
- *
10
- * @brand AIppin
11
- * @version 2.0.0
12
- */
13
- export * from "./colors/index";
14
- export type ColorRole = "primary" | "secondary" | "success" | "warning" | "error" | "info" | "neutral";
15
- export type ColorShade = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950;
16
- export interface ColorToken {
17
- hex: string;
18
- rgb: string;
19
- tailwind: string;
20
- }
21
- export interface SemanticColor {
22
- light: ColorToken;
23
- DEFAULT: ColorToken;
24
- dark: ColorToken;
25
- contrast: ColorToken;
26
- }
27
- export interface ColorPalette {
28
- [key: number]: ColorToken;
29
- }
30
- /**
31
- * Color Strategy Interface
32
- * Strategy Pattern for different color generation strategies
33
- */
34
- export interface ColorStrategy {
35
- generatePrimary(): SemanticColor;
36
- generateSecondary(): SemanticColor;
37
- generateSuccess(): SemanticColor;
38
- generateWarning(): SemanticColor;
39
- generateError(): SemanticColor;
40
- generateInfo(): SemanticColor;
41
- generateNeutral(): SemanticColor;
42
- }
43
- /**
44
- * Light Theme Color Strategy
45
- */
46
- export declare class LightColorStrategy implements ColorStrategy {
47
- generatePrimary(): SemanticColor;
48
- generateSecondary(): SemanticColor;
49
- generateSuccess(): SemanticColor;
50
- generateWarning(): SemanticColor;
51
- generateError(): SemanticColor;
52
- generateInfo(): SemanticColor;
53
- generateNeutral(): SemanticColor;
54
- }
55
- /**
56
- * Dark Theme Color Strategy
57
- */
58
- export declare class DarkColorStrategy implements ColorStrategy {
59
- generatePrimary(): SemanticColor;
60
- generateSecondary(): SemanticColor;
61
- generateSuccess(): SemanticColor;
62
- generateWarning(): SemanticColor;
63
- generateError(): SemanticColor;
64
- generateInfo(): SemanticColor;
65
- generateNeutral(): SemanticColor;
66
- }
67
- /**
68
- * Color Token Factory
69
- * Uses Strategy Pattern to generate colors based on theme
70
- */
71
- export declare class ColorTokenFactory {
72
- private strategy;
73
- constructor(strategy: ColorStrategy);
74
- /**
75
- * Set color strategy
76
- */
77
- setStrategy(strategy: ColorStrategy): void;
78
- /**
79
- * Generate semantic color palette
80
- */
81
- generatePalette(): Record<ColorRole, SemanticColor>;
82
- }
83
- /**
84
- * Light theme colors (default)
85
- */
86
- export declare const COLOR_TOKENS_LIGHT: Record<ColorRole, SemanticColor>;
87
- /**
88
- * Dark theme colors
89
- */
90
- export declare const COLOR_TOKENS_DARK: Record<ColorRole, SemanticColor>;
91
- /**
92
- * Default color tokens (light theme)
93
- */
94
- export declare const COLOR_TOKENS: Record<ColorRole, SemanticColor>;
95
- /**
96
- * Helper function to get color token
97
- */
98
- export declare function getColor(role: ColorRole, shade?: "light" | "DEFAULT" | "dark"): ColorToken;
99
- /**
100
- * Helper function to get color as Tailwind class
101
- */
102
- export declare function getColorClass(role: ColorRole, shade?: "light" | "DEFAULT" | "dark" | "contrast", type?: "text" | "bg" | "border"): string;
103
- /**
104
- * Helper function to get hover color class
105
- * Returns the complete hover class (e.g., 'hover:bg-gray-100')
106
- * Note: Tailwind needs to see the full class name, so we return it as a complete string
107
- */
108
- export declare function getHoverColorClass(role: ColorRole, shade?: "light" | "DEFAULT" | "dark", type?: "text" | "bg" | "border"): string;
109
- /**
110
- * Helper function to get focus color class
111
- * Returns the complete focus class (e.g., 'focus:bg-gray-100')
112
- */
113
- export declare function getFocusColorClass(role: ColorRole, shade?: "light" | "DEFAULT" | "dark", type?: "text" | "bg" | "border"): string;
114
- /**
115
- * Helper function to get focus ring color class
116
- * Returns the complete focus ring class (e.g., 'focus:ring-indigo-500')
117
- * This returns complete classes that Tailwind can detect, avoiding string manipulation.
118
- *
119
- * Note: These classes must be in the safelist or used elsewhere in the codebase
120
- * for Tailwind to include them in the build.
121
- */
122
- export declare function getFocusRingClass(role: ColorRole, shade?: "light" | "DEFAULT" | "dark"): string;
@@ -1,56 +0,0 @@
1
- /**
2
- * Gradient Tokens
3
- *
4
- * Centralized gradient system for consistent color gradients.
5
- * Uses Factory Pattern for type-safe token creation.
6
- */
7
- export type GradientDirection = "to-r" | "to-l" | "to-t" | "to-b" | "to-tr" | "to-tl" | "to-br" | "to-bl";
8
- export type GradientRole = "primary" | "secondary" | "success" | "error" | "info" | "warning";
9
- export interface GradientToken {
10
- value: string;
11
- tailwind: string;
12
- description: string;
13
- from: string;
14
- via?: string;
15
- to: string;
16
- }
17
- /**
18
- * Gradient Token Factory
19
- * Creates gradient tokens with consistent color schemes
20
- */
21
- export declare class GradientTokenFactory {
22
- /**
23
- * Create a gradient token
24
- */
25
- static create(role: GradientRole, direction?: GradientDirection): GradientToken;
26
- /**
27
- * Convert hex color to approximate Tailwind color class
28
- * This is a helper for documentation, actual implementation uses arbitrary values
29
- * @deprecated Not currently used, kept for potential future use
30
- */
31
- private static hexToTailwindColor;
32
- }
33
- /**
34
- * Pre-defined gradient tokens
35
- */
36
- export declare const GRADIENT_TOKENS: {
37
- readonly primary: GradientToken;
38
- readonly secondary: GradientToken;
39
- readonly success: GradientToken;
40
- readonly error: GradientToken;
41
- readonly info: GradientToken;
42
- readonly warning: GradientToken;
43
- readonly "primary-to-r": GradientToken;
44
- readonly "primary-to-b": GradientToken;
45
- readonly "secondary-to-r": GradientToken;
46
- readonly "success-to-r": GradientToken;
47
- readonly "error-to-r": GradientToken;
48
- };
49
- /**
50
- * Helper function to get gradient token
51
- */
52
- export declare function getGradient(role: GradientRole, direction?: GradientDirection): GradientToken;
53
- /**
54
- * Helper function to get gradient as Tailwind classes
55
- */
56
- export declare function getGradientClass(role: GradientRole, direction?: GradientDirection): string;
@@ -1,42 +0,0 @@
1
- /**
2
- * Dark Theme Tokens
3
- *
4
- * Dark theme color palette and tokens.
5
- */
6
- export declare const DARK_THEME: {
7
- readonly colors: Record<import("../colors").ColorRole, import("../colors").SemanticColor>;
8
- readonly spacing: {
9
- readonly none: import("..").SpacingToken;
10
- readonly "0.5": import("..").SpacingToken;
11
- readonly xs: import("..").SpacingToken;
12
- readonly "1.5": import("..").SpacingToken;
13
- readonly sm: import("..").SpacingToken;
14
- readonly "2.5": import("..").SpacingToken;
15
- readonly md: import("..").SpacingToken;
16
- readonly "3.5": import("..").SpacingToken;
17
- readonly base: import("..").SpacingToken;
18
- readonly lg: import("..").SpacingToken;
19
- readonly xl: import("..").SpacingToken;
20
- readonly "2xl": import("..").SpacingToken;
21
- readonly "3xl": import("..").SpacingToken;
22
- readonly "4xl": import("..").SpacingToken;
23
- readonly "5xl": import("..").SpacingToken;
24
- readonly "6xl": import("..").SpacingToken;
25
- };
26
- readonly typography: {
27
- readonly h1: import("..").TypographyToken;
28
- readonly h2: import("..").TypographyToken;
29
- readonly h3: import("..").TypographyToken;
30
- readonly h4: import("..").TypographyToken;
31
- readonly h5: import("..").TypographyToken;
32
- readonly h6: import("..").TypographyToken;
33
- readonly body: import("..").TypographyToken;
34
- readonly bodySmall: import("..").TypographyToken;
35
- readonly bodyLarge: import("..").TypographyToken;
36
- readonly label: import("..").TypographyToken;
37
- readonly caption: import("..").TypographyToken;
38
- readonly button: import("..").TypographyToken;
39
- };
40
- readonly breakpoints: Record<import("..").BreakpointName, import("..").BreakpointToken>;
41
- readonly mode: "dark";
42
- };