@omnitron-dev/prism 0.1.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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -0
  3. package/bin/prism.js +13 -0
  4. package/dist/accessibility/index.d.ts +157 -0
  5. package/dist/accessibility/index.js +186 -0
  6. package/dist/accessibility/index.js.map +1 -0
  7. package/dist/blocks/index.d.ts +1239 -0
  8. package/dist/blocks/index.js +1712 -0
  9. package/dist/blocks/index.js.map +1 -0
  10. package/dist/chunk-77KIJLPP.js +37 -0
  11. package/dist/chunk-77KIJLPP.js.map +1 -0
  12. package/dist/chunk-BTIT7WYH.js +339 -0
  13. package/dist/chunk-BTIT7WYH.js.map +1 -0
  14. package/dist/chunk-BV32OJ2A.js +1409 -0
  15. package/dist/chunk-BV32OJ2A.js.map +1 -0
  16. package/dist/chunk-DDY7TLUI.js +139 -0
  17. package/dist/chunk-DDY7TLUI.js.map +1 -0
  18. package/dist/chunk-DXXZ3ITR.js +4227 -0
  19. package/dist/chunk-DXXZ3ITR.js.map +1 -0
  20. package/dist/chunk-E3XANPTO.js +2319 -0
  21. package/dist/chunk-E3XANPTO.js.map +1 -0
  22. package/dist/chunk-FU52GL2E.js +3 -0
  23. package/dist/chunk-FU52GL2E.js.map +1 -0
  24. package/dist/chunk-GYDT5EKX.js +16505 -0
  25. package/dist/chunk-GYDT5EKX.js.map +1 -0
  26. package/dist/chunk-HO2GKTWJ.js +28 -0
  27. package/dist/chunk-HO2GKTWJ.js.map +1 -0
  28. package/dist/chunk-JDTC2SBY.js +140 -0
  29. package/dist/chunk-JDTC2SBY.js.map +1 -0
  30. package/dist/chunk-JNU4QHJK.js +6 -0
  31. package/dist/chunk-JNU4QHJK.js.map +1 -0
  32. package/dist/chunk-LAEY5USO.js +2621 -0
  33. package/dist/chunk-LAEY5USO.js.map +1 -0
  34. package/dist/chunk-UR6X3W5I.js +530 -0
  35. package/dist/chunk-UR6X3W5I.js.map +1 -0
  36. package/dist/chunk-WC2WM2JD.js +883 -0
  37. package/dist/chunk-WC2WM2JD.js.map +1 -0
  38. package/dist/chunk-XWL6J6IO.js +40 -0
  39. package/dist/chunk-XWL6J6IO.js.map +1 -0
  40. package/dist/cli/index.js +2695 -0
  41. package/dist/cli/index.js.map +1 -0
  42. package/dist/config-BA6IeTq9.d.ts +100 -0
  43. package/dist/core/index.d.ts +454 -0
  44. package/dist/core/index.js +9 -0
  45. package/dist/core/index.js.map +1 -0
  46. package/dist/forms/index.d.ts +562 -0
  47. package/dist/forms/index.js +545 -0
  48. package/dist/forms/index.js.map +1 -0
  49. package/dist/hooks/index.d.ts +7 -0
  50. package/dist/hooks/index.js +10 -0
  51. package/dist/hooks/index.js.map +1 -0
  52. package/dist/http/index.d.ts +233 -0
  53. package/dist/http/index.js +282 -0
  54. package/dist/http/index.js.map +1 -0
  55. package/dist/index-odhPSv9I.d.ts +2491 -0
  56. package/dist/index.css +131 -0
  57. package/dist/index.css.map +1 -0
  58. package/dist/index.d.ts +9109 -0
  59. package/dist/index.js +13280 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/layouts/index.d.ts +854 -0
  62. package/dist/layouts/index.js +6 -0
  63. package/dist/layouts/index.js.map +1 -0
  64. package/dist/netron/index.d.ts +4 -0
  65. package/dist/netron/index.js +4 -0
  66. package/dist/netron/index.js.map +1 -0
  67. package/dist/registry/index.d.ts +352 -0
  68. package/dist/registry/index.js +4 -0
  69. package/dist/registry/index.js.map +1 -0
  70. package/dist/registry-BrDNftd5.d.ts +574 -0
  71. package/dist/settings-plpR26Xk.d.ts +455 -0
  72. package/dist/state/index.d.ts +981 -0
  73. package/dist/state/index.js +5 -0
  74. package/dist/state/index.js.map +1 -0
  75. package/dist/theme/index.d.ts +1049 -0
  76. package/dist/theme/index.js +5 -0
  77. package/dist/theme/index.js.map +1 -0
  78. package/dist/theme-CrXLfP1c.d.ts +389 -0
  79. package/dist/types/index.d.ts +146 -0
  80. package/dist/types/index.js +5 -0
  81. package/dist/types/index.js.map +1 -0
  82. package/dist/use-timeout-D7U3EAtH.d.ts +808 -0
  83. package/package.json +194 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/theme/utils/color.ts","../src/theme/colors/base.ts","../src/theme/palette/builder.ts","../src/theme/components/theme-utils.ts","../src/theme/components/Button.ts","../src/theme/mixins.ts","../src/theme/components/Chip.ts","../src/theme/components/TextField.ts","../src/theme/components/FormControls.tsx","../src/theme/components/Tabs.ts","../src/theme/components/index.ts","../src/theme/shadows.ts","../src/theme/typography.ts","../src/theme/colors/luxury.ts","../src/theme/presets/arctic.ts","../src/theme/presets/dracula.ts","../src/theme/presets/ember.ts","../src/theme/presets/midnight.ts","../src/theme/presets/retro.ts","../src/theme/presets/minimal.ts","../src/theme/create-theme.ts"],"names":["getLuminance","getContrastText","grey","base","hover","softVariants","dashedVariants","disabledVariants","svgIconClasses","newPrimary","getDensityMultiplier","lightPalette","darkPalette","muiCreateTheme"],"mappings":"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","file":"chunk-DXXZ3ITR.js","sourcesContent":["/**\n * Color Utilities\n *\n * Functions for color manipulation, channel generation, and palette creation.\n * Uses HSL-based color math for perceptually correct results.\n * Combines Aurora's sophisticated color system with Prism's extensibility.\n *\n * @module @omnitron-dev/prism/theme/utils/color\n */\n\nimport type {\n ColorScale,\n ColorScaleWithChannels,\n ColorShadeKey,\n PaletteColor,\n PaletteColorWithChannels,\n} from '../../types/theme.js';\n\n// =============================================================================\n// COLOR CONVERSION\n// =============================================================================\n\n/**\n * Convert hex color to RGB values.\n *\n * @param hex - Hex color string (e.g., '#FF5630' or 'FF5630')\n * @returns RGB tuple [r, g, b]\n */\nexport function hexToRgb(hex: string): [number, number, number] {\n const h = hex.replace('#', '');\n const expanded =\n h.length === 3\n ? h\n .split('')\n .map((c) => c + c)\n .join('')\n : h;\n const bigint = parseInt(expanded, 16);\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n return [r, g, b];\n}\n\n/**\n * Convert hex color to RGB channel string.\n *\n * @param hex - Hex color string\n * @returns RGB channel string (e.g., '255 86 48')\n */\nexport function hexToRgbChannel(hex: string): string {\n const [r, g, b] = hexToRgb(hex);\n return `${r} ${g} ${b}`;\n}\n\n/**\n * Convert RGB values to hex color.\n *\n * @param r - Red (0-255)\n * @param g - Green (0-255)\n * @param b - Blue (0-255)\n * @returns Hex color string (e.g., '#FF5630')\n */\nexport function rgbToHex(r: number, g: number, b: number): string {\n const to2 = (n: number) => Math.round(n).toString(16).padStart(2, '0');\n return `#${to2(r)}${to2(g)}${to2(b)}`.toUpperCase();\n}\n\n/**\n * Convert hex to HSL values.\n *\n * @param hex - Hex color string\n * @returns HSL values { h: 0-360, s: 0-100, l: 0-100 }\n */\nexport function hexToHsl(hex: string): { h: number; s: number; l: number } {\n const [r, g, b] = hexToRgb(hex);\n const r1 = r / 255;\n const g1 = g / 255;\n const b1 = b / 255;\n const max = Math.max(r1, g1, b1);\n const min = Math.min(r1, g1, b1);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n const d = max - min;\n\n if (d !== 0) {\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r1:\n h = (g1 - b1) / d + (g1 < b1 ? 6 : 0);\n break;\n case g1:\n h = (b1 - r1) / d + 2;\n break;\n default:\n h = (r1 - g1) / d + 4;\n }\n h /= 6;\n }\n\n return { h: h * 360, s: s * 100, l: l * 100 };\n}\n\n/**\n * Convert HSL values to hex color.\n *\n * @param h - Hue (0-360)\n * @param s - Saturation (0-100)\n * @param l - Lightness (0-100)\n * @returns Hex color string\n */\nexport function hslToHex(h: number, s: number, l: number): string {\n const s1 = s / 100;\n const l1 = l / 100;\n const c = (1 - Math.abs(2 * l1 - 1)) * s1;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = l1 - c / 2;\n let r1: number;\n let g1: number;\n let b1: number;\n\n if (h >= 0 && h < 60) {\n [r1, g1, b1] = [c, x, 0];\n } else if (h >= 60 && h < 120) {\n [r1, g1, b1] = [x, c, 0];\n } else if (h >= 120 && h < 180) {\n [r1, g1, b1] = [0, c, x];\n } else if (h >= 180 && h < 240) {\n [r1, g1, b1] = [0, x, c];\n } else if (h >= 240 && h < 300) {\n [r1, g1, b1] = [x, 0, c];\n } else {\n [r1, g1, b1] = [c, 0, x];\n }\n\n return rgbToHex(Math.round((r1 + m) * 255), Math.round((g1 + m) * 255), Math.round((b1 + m) * 255));\n}\n\n// =============================================================================\n// RGBA UTILITIES\n// =============================================================================\n\n/**\n * Create CSS rgba() from hex color.\n *\n * @param color - Hex color string\n * @param alpha - Alpha value (0-1)\n * @returns CSS rgba string\n */\nexport function rgba(color: string, alpha: number): string {\n const [r, g, b] = hexToRgb(color);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\n/**\n * Create CSS rgba() from RGB channel string.\n * Useful for CSS variable references.\n *\n * @param channel - RGB channel string (e.g., '255 86 48')\n * @param alpha - Alpha value (0-1)\n * @returns CSS rgba string using modern syntax\n */\nexport function cssVarRgba(channel: string, alpha: number): string {\n return `rgba(${channel} / ${alpha})`;\n}\n\n// =============================================================================\n// CHANNEL GENERATION\n// =============================================================================\n\n/**\n * Generate palette color with channel values.\n *\n * @param color - Palette color object\n * @returns Palette color with channel values\n */\nexport function generatePaletteColorWithChannels(color: PaletteColor): PaletteColorWithChannels {\n return {\n ...color,\n lighterChannel: hexToRgbChannel(color.lighter),\n lightChannel: hexToRgbChannel(color.light),\n mainChannel: hexToRgbChannel(color.main),\n darkChannel: hexToRgbChannel(color.dark),\n darkerChannel: hexToRgbChannel(color.darker),\n contrastTextChannel: hexToRgbChannel(color.contrastText),\n };\n}\n\n/**\n * Generate color scale with channel values.\n *\n * @param scale - Color scale object\n * @returns Color scale with channel values\n */\nexport function generateColorScaleWithChannels(scale: ColorScale): ColorScaleWithChannels {\n const shadeKeys: ColorShadeKey[] = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];\n const channels = {} as Record<`${ColorShadeKey}Channel`, string>;\n\n for (const key of shadeKeys) {\n const channelKey = `${key}Channel` as `${ColorShadeKey}Channel`;\n channels[channelKey] = hexToRgbChannel(scale[key]);\n }\n\n return { ...scale, ...channels };\n}\n\n// =============================================================================\n// SHADE GENERATION\n// =============================================================================\n\n/**\n * Clamp a number between min and max.\n */\nfunction clamp(n: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, n));\n}\n\n/**\n * Generate 11-shade color scale from a base color.\n * Uses HSL manipulation to create consistent, accessible shades.\n *\n * @param baseColor - Base hex color (typically the 500 shade)\n * @returns Full 11-shade color scale\n */\nexport function generateColorScale(baseColor: string): ColorScale {\n const base = hexToHsl(baseColor);\n\n const tones: Array<{ key: ColorShadeKey; lDelta: number }> = [\n { key: 50, lDelta: +40 },\n { key: 100, lDelta: +32 },\n { key: 200, lDelta: +24 },\n { key: 300, lDelta: +16 },\n { key: 400, lDelta: +8 },\n { key: 500, lDelta: 0 },\n { key: 600, lDelta: -8 },\n { key: 700, lDelta: -16 },\n { key: 800, lDelta: -24 },\n { key: 900, lDelta: -32 },\n { key: 950, lDelta: -40 },\n ];\n\n const scale = {} as ColorScale;\n\n for (const { key, lDelta } of tones) {\n const l = clamp(base.l + lDelta, 5, 95);\n scale[key] = hslToHex(base.h, base.s, l);\n }\n\n return scale;\n}\n\n/**\n * Generate primary color shades from a base color.\n * Alias for generateColorScale for compatibility with Aurora's naming.\n */\nexport const generatePrimaryShades = generateColorScale;\n\n// =============================================================================\n// PALETTE HELPERS\n// =============================================================================\n\n/**\n * Calculate relative luminance of a hex color for WCAG contrast calculations.\n */\nfunction getLuminanceForContrast(hex: string): number {\n const rgb = hex.replace('#', '').match(/.{2}/g);\n if (!rgb) return 0;\n const [r, g, b] = rgb.map((c) => {\n const val = parseInt(c, 16) / 255;\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n/**\n * Get appropriate contrast text color for WCAG AA compliance.\n * Uses luminance to determine if white or dark text provides better contrast.\n * Threshold of 0.4 ensures colored buttons get white text for better UX.\n */\nfunction getContrastTextColor(bgColor: string): string {\n const luminance = getLuminanceForContrast(bgColor);\n // Higher threshold (0.4) ensures most colored backgrounds get white text\n // Only very bright colors like yellow/warning get dark text\n return luminance < 0.4 ? '#FFFFFF' : '#212121';\n}\n\n/**\n * Create semantic palette color from a color scale.\n * Maps 11-shade scale to 5-shade semantic naming.\n *\n * @param scale - Full color scale\n * @param mode - Light or dark mode\n * @returns Semantic palette color\n */\nexport function createPaletteColorFromScale(scale: ColorScale, mode: 'light' | 'dark' = 'light'): PaletteColor {\n const mainColor = mode === 'dark' ? scale[400] : scale[500];\n const contrastText = getContrastTextColor(mainColor);\n\n if (mode === 'dark') {\n return {\n lighter: scale[950],\n light: scale[700],\n main: mainColor,\n dark: scale[300],\n darker: scale[100],\n contrastText,\n };\n }\n\n return {\n lighter: scale[50],\n light: scale[400],\n main: mainColor,\n dark: scale[600],\n darker: scale[900],\n contrastText,\n };\n}\n\n/**\n * Create inverted color scale for dark mode.\n * Swaps light and dark shades for proper dark mode contrast.\n *\n * @param scale - Original color scale\n * @returns Inverted color scale\n */\nexport function invertColorScale(scale: ColorScale): ColorScale {\n return {\n 50: scale[950],\n 100: scale[800],\n 200: scale[700],\n 300: scale[600],\n 400: scale[500],\n 500: scale[400],\n 600: scale[300],\n 700: scale[200],\n 800: scale[100],\n 900: scale[50],\n 950: '#FFFFFF',\n };\n}\n\n// =============================================================================\n// CONTRAST UTILITIES\n// =============================================================================\n\n/**\n * Calculate relative luminance of a color.\n *\n * @param hex - Hex color string\n * @returns Relative luminance (0-1)\n */\nexport function getLuminance(hex: string): number {\n const [r, g, b] = hexToRgb(hex).map((c) => {\n const sRgb = c / 255;\n return sRgb <= 0.03928 ? sRgb / 12.92 : Math.pow((sRgb + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n/**\n * Calculate contrast ratio between two colors.\n *\n * @param color1 - First hex color\n * @param color2 - Second hex color\n * @returns Contrast ratio (1-21)\n */\nexport function getContrastRatio(color1: string, color2: string): number {\n const l1 = getLuminance(color1);\n const l2 = getLuminance(color2);\n const lighter = Math.max(l1, l2);\n const darker = Math.min(l1, l2);\n return (lighter + 0.05) / (darker + 0.05);\n}\n\n/**\n * Determine if a color is light or dark.\n *\n * @param hex - Hex color string\n * @returns True if color is light\n */\nexport function isLightColor(hex: string): boolean {\n return getLuminance(hex) > 0.5;\n}\n\n/**\n * Get optimal contrast text color for a background.\n *\n * @param background - Background hex color\n * @param lightText - Light text color (default: white)\n * @param darkText - Dark text color (default: black)\n * @returns Best contrast text color\n */\nexport function getContrastText(background: string, lightText = '#FFFFFF', darkText = '#000000'): string {\n return isLightColor(background) ? darkText : lightText;\n}\n\n// =============================================================================\n// HSL-BASED COLOR MANIPULATION\n// =============================================================================\n\n/**\n * Lighten a color using HSL.\n * Preserves hue and saturation while increasing lightness.\n *\n * @param hex - Hex color string\n * @param amount - Amount to lighten (0-100 percentage points)\n * @returns Lightened hex color\n */\nexport function lighten(hex: string, amount: number): string {\n const hsl = hexToHsl(hex);\n const newL = clamp(hsl.l + amount, 0, 100);\n return hslToHex(hsl.h, hsl.s, newL);\n}\n\n/**\n * Darken a color using HSL.\n * Preserves hue and saturation while decreasing lightness.\n *\n * @param hex - Hex color string\n * @param amount - Amount to darken (0-100 percentage points)\n * @returns Darkened hex color\n */\nexport function darken(hex: string, amount: number): string {\n const hsl = hexToHsl(hex);\n const newL = clamp(hsl.l - amount, 0, 100);\n return hslToHex(hsl.h, hsl.s, newL);\n}\n\n/**\n * Saturate a color using HSL.\n *\n * @param hex - Hex color string\n * @param amount - Amount to increase saturation (0-100 percentage points)\n * @returns Saturated hex color\n */\nexport function saturate(hex: string, amount: number): string {\n const hsl = hexToHsl(hex);\n const newS = clamp(hsl.s + amount, 0, 100);\n return hslToHex(hsl.h, newS, hsl.l);\n}\n\n/**\n * Desaturate a color using HSL.\n *\n * @param hex - Hex color string\n * @param amount - Amount to decrease saturation (0-100 percentage points)\n * @returns Desaturated hex color\n */\nexport function desaturate(hex: string, amount: number): string {\n const hsl = hexToHsl(hex);\n const newS = clamp(hsl.s - amount, 0, 100);\n return hslToHex(hsl.h, newS, hsl.l);\n}\n\n/**\n * Adjust hue of a color.\n *\n * @param hex - Hex color string\n * @param degrees - Degrees to rotate hue (-360 to 360)\n * @returns Color with adjusted hue\n */\nexport function adjustHue(hex: string, degrees: number): string {\n const hsl = hexToHsl(hex);\n const newH = (hsl.h + degrees + 360) % 360;\n return hslToHex(newH, hsl.s, hsl.l);\n}\n\n/**\n * Mix two colors together.\n *\n * @param color1 - First hex color\n * @param color2 - Second hex color\n * @param weight - Weight of first color (0-1, default: 0.5)\n * @returns Mixed hex color\n */\nexport function mix(color1: string, color2: string, weight = 0.5): string {\n const [r1, g1, b1] = hexToRgb(color1);\n const [r2, g2, b2] = hexToRgb(color2);\n const w = clamp(weight, 0, 1);\n const newR = Math.round(r1 * w + r2 * (1 - w));\n const newG = Math.round(g1 * w + g2 * (1 - w));\n const newB = Math.round(b1 * w + b2 * (1 - w));\n return rgbToHex(newR, newG, newB);\n}\n\n// =============================================================================\n// CSS VARIABLE ALPHA UTILITIES (Aurora pattern)\n// =============================================================================\n\n/**\n * Validate and normalize opacity value.\n *\n * @param opacity - Opacity value (number 0-1, percentage string, or CSS variable)\n * @param color - Color string for error messages\n * @returns Normalized opacity as percentage string\n * @throws Error if opacity is invalid\n */\nfunction validateOpacity(opacity: string | number, color: string): string {\n const isCSSVar = (val: string) => val.includes('var(--');\n const isPercentage = (val: string) => val.trim().endsWith('%');\n\n const errors = {\n invalid: `[varAlpha]: Invalid opacity \"${opacity}\" for \"${color}\".`,\n range: 'Must be a number between 0 and 1 (e.g., 0.48).',\n format: 'Must be a percentage (e.g., \"48%\") or CSS variable (e.g., \"var(--opacity)\").',\n };\n\n if (typeof opacity === 'string') {\n // Already a percentage - return as-is\n if (isPercentage(opacity)) return opacity;\n\n // CSS variable - wrap in calc to convert to percentage\n if (isCSSVar(opacity)) return `calc(${opacity} * 100%)`;\n\n // Try parsing as a number string\n const parsed = parseFloat(opacity.trim());\n if (!isNaN(parsed) && parsed >= 0 && parsed <= 1) {\n return `${Number((parsed * 100).toFixed(2))}%`;\n }\n\n throw new Error(`${errors.invalid} ${errors.format}`);\n }\n\n if (typeof opacity === 'number') {\n if (opacity >= 0 && opacity <= 1) {\n return `${Number((opacity * 100).toFixed(2))}%`;\n }\n throw new Error(`${errors.invalid} ${errors.range}`);\n }\n\n throw new Error(`${errors.invalid}`);\n}\n\n/**\n * Create CSS rgba() using a CSS variable channel.\n * Essential for dynamic alpha with CSS custom properties.\n *\n * Supports:\n * - RGB channel strings: \"200 250 214\"\n * - CSS variables: \"var(--palette-primary-mainChannel)\"\n * - currentColor (via color-mix)\n *\n * Does NOT support (will throw):\n * - Hex colors: \"#00B8D9\"\n * - RGB: \"rgb(0, 184, 217)\"\n * - RGBA: \"rgba(0, 184, 217, 1)\"\n *\n * @example\n * ```tsx\n * // With CSS variable channel\n * varAlpha('var(--palette-primary-mainChannel)', 0.5)\n * // Returns: \"rgba(var(--palette-primary-mainChannel) / 50%)\"\n *\n * // With RGB channel string\n * varAlpha('200 250 214', 0.8)\n * // Returns: \"rgba(200 250 214 / 80%)\"\n *\n * // With percentage opacity\n * varAlpha('var(--palette-primary-mainChannel)', '50%')\n * // Returns: \"rgba(var(--palette-primary-mainChannel) / 50%)\"\n *\n * // With CSS variable opacity\n * varAlpha('var(--palette-primary-mainChannel)', 'var(--opacity)')\n * // Returns: \"rgba(var(--palette-primary-mainChannel) / calc(var(--opacity) * 100%))\"\n *\n * // With currentColor\n * varAlpha('currentColor', 0.5)\n * // Returns: \"color-mix(in srgb, currentColor 50%, transparent)\"\n * ```\n *\n * @param color - CSS variable reference for the RGB channel, RGB channel string, or 'currentColor'\n * @param opacity - Alpha value (0-1 number, percentage string, or CSS variable)\n * @returns CSS rgba/color-mix string\n * @throws Error if color format is unsupported or opacity is invalid\n */\nexport function varAlpha(color: string, opacity: string | number = 1): string {\n // Validate color input\n if (!color?.trim()) {\n throw new Error('[varAlpha]: Color is undefined or empty!');\n }\n\n // Check for unsupported color formats\n const isUnsupported =\n color.startsWith('#') ||\n color.startsWith('rgb(') ||\n color.startsWith('rgba(') ||\n (!color.includes('var') && color.includes('Channel'));\n\n if (isUnsupported) {\n throw new Error(\n [\n `[varAlpha]: Unsupported color format \"${color}\"`,\n '✅ Supported formats:',\n ' - RGB channels: \"0 184 217\"',\n ' - CSS variables: \"var(--palette-primary-mainChannel)\"',\n ' - currentColor',\n '❌ Unsupported formats:',\n ' - Hex: \"#00B8D9\"',\n ' - RGB: \"rgb(0, 184, 217)\"',\n ' - RGBA: \"rgba(0, 184, 217, 1)\"',\n ].join('\\n')\n );\n }\n\n // Validate and normalize opacity\n const alpha = validateOpacity(opacity, color);\n\n // Handle currentColor specially using color-mix\n if (color.toLowerCase() === 'currentcolor') {\n return `color-mix(in srgb, currentColor ${alpha}, transparent)`;\n }\n\n return `rgba(${color} / ${alpha})`;\n}\n\n/**\n * Create palette channel CSS variables object.\n * Maps semantic color keys to CSS variable references.\n *\n * @param prefix - CSS variable prefix (e.g., '--palette-primary')\n * @returns Object with channel variable references\n */\nexport function createPaletteChannelVars(prefix: string): Record<string, string> {\n return {\n lighterChannel: `var(${prefix}-lighterChannel)`,\n lightChannel: `var(${prefix}-lightChannel)`,\n mainChannel: `var(${prefix}-mainChannel)`,\n darkChannel: `var(${prefix}-darkChannel)`,\n darkerChannel: `var(${prefix}-darkerChannel)`,\n contrastTextChannel: `var(${prefix}-contrastTextChannel)`,\n };\n}\n\n// =============================================================================\n// CSS VARIABLE UTILITIES\n// =============================================================================\n\n/**\n * Parse CSS variable name from a var() expression.\n *\n * @param cssVar - CSS var() expression (e.g., 'var(--prism-primary-main)' or '--prism-primary-main')\n * @returns Variable name without -- prefix, or null if invalid\n *\n * @example\n * ```ts\n * parseCssVar('var(--prism-primary-main)') // 'prism-primary-main'\n * parseCssVar('var(--color, #fff)') // 'color'\n * parseCssVar('--my-variable') // 'my-variable'\n * parseCssVar('invalid') // null\n * ```\n */\nexport function parseCssVar(cssVar: string): string | null {\n if (!cssVar) return null;\n\n // Handle var(--name) or var(--name, fallback) format\n const varMatch = cssVar.match(/var\\(\\s*--([^,)]+)\\s*(?:,\\s*[^)]*)?\\)/);\n if (varMatch) {\n return varMatch[1].trim();\n }\n\n // Handle --name format (direct CSS variable name)\n if (cssVar.startsWith('--')) {\n return cssVar.slice(2);\n }\n\n return null;\n}\n\n/**\n * Check if a value is a CSS variable expression.\n *\n * @param value - Value to check\n * @returns True if value is a var() expression or --variable\n */\nexport function isCssVar(value: string): boolean {\n return value.startsWith('var(') || value.startsWith('--');\n}\n\n/**\n * Extract all CSS variables from a theme.vars object path.\n *\n * @param varsPath - Dot-separated path to CSS variables (e.g., 'palette.primary')\n * @param vars - Theme vars object (from theme.vars)\n * @returns Object with variable names as keys and CSS var expressions as values\n *\n * @example\n * ```ts\n * const vars = extractCssVars('palette.primary', theme.vars);\n * // { main: 'var(--prism-palette-primary-main)', light: '...', dark: '...' }\n * ```\n */\nexport function extractCssVars(varsPath: string, vars: Record<string, unknown>): Record<string, string> {\n const parts = varsPath.split('.');\n let current: Record<string, unknown> = vars;\n\n for (const part of parts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part] as Record<string, unknown>;\n } else {\n return {};\n }\n }\n\n const result: Record<string, string> = {};\n for (const [key, value] of Object.entries(current)) {\n if (typeof value === 'string' && isCssVar(value)) {\n result[key] = value;\n }\n }\n return result;\n}\n","/**\n * Base Color Scales\n *\n * Foundation colors used across all presets.\n * 11-shade scales (50-950) for maximum flexibility.\n *\n * @module @omnitron-dev/prism/theme/colors/base\n */\n\nimport type { ColorScale } from '../../types/theme.js';\n\n// =============================================================================\n// NEUTRAL COLORS\n// =============================================================================\n\n/**\n * Grey scale - neutral foundation.\n */\nexport const grey: ColorScale = {\n 50: '#F7FAFC',\n 100: '#EBF2F5',\n 200: '#DBE6EB',\n 300: '#C3D3DB',\n 400: '#9CAEB8',\n 500: '#77878F',\n 600: '#4D595E',\n 700: '#262D30',\n 800: '#1B2124',\n 900: '#111417',\n 950: '#06080A',\n};\n\n// =============================================================================\n// PRIMARY COLORS\n// =============================================================================\n\n/**\n * Blue - default primary.\n */\nexport const blue: ColorScale = {\n 50: '#EAF3FD',\n 100: '#C6DDFB',\n 200: '#A1C7F8',\n 300: '#7DB1F5',\n 400: '#589BF3',\n 500: '#3385F0',\n 600: '#2B71CC',\n 700: '#245DA8',\n 800: '#1C4984',\n 900: '#143560',\n 950: '#0A1B30',\n};\n\n/**\n * Green - success/teal variant.\n */\nexport const green: ColorScale = {\n 50: '#E6F5F0',\n 100: '#BBE4D5',\n 200: '#8ED3BA',\n 300: '#62C29F',\n 400: '#35B084',\n 500: '#099F69',\n 600: '#088759',\n 700: '#066F49',\n 800: '#05573A',\n 900: '#04402A',\n 950: '#022015',\n};\n\n/**\n * Purple - secondary.\n */\nexport const purple: ColorScale = {\n 50: '#F2E4FE',\n 100: '#E6CAFE',\n 200: '#D6A8FD',\n 300: '#C686FC',\n 400: '#B663FB',\n 500: '#A641FA',\n 600: '#8D37D5',\n 700: '#742DAF',\n 800: '#5B2489',\n 900: '#421A64',\n 950: '#210D32',\n};\n\n// =============================================================================\n// SEMANTIC COLORS\n// =============================================================================\n\n/**\n * Red - error/destructive.\n */\nexport const red: ColorScale = {\n 50: '#F9E2E6',\n 100: '#F2C1CA',\n 200: '#E99AA8',\n 300: '#E17286',\n 400: '#D84A63',\n 500: '#D02241',\n 600: '#B11D37',\n 700: '#91182D',\n 800: '#721324',\n 900: '#530E1A',\n 950: '#3A0A12',\n};\n\n/**\n * Orange - warning.\n */\nexport const orange: ColorScale = {\n 50: '#FEEFE1',\n 100: '#FCDFC4',\n 200: '#FBCB9D',\n 300: '#F9B677',\n 400: '#F8A250',\n 500: '#F68D2A',\n 600: '#D17824',\n 700: '#AC631D',\n 800: '#874E17',\n 900: '#623811',\n 950: '#372412',\n};\n\n/**\n * Light Blue - info.\n */\nexport const lightBlue: ColorScale = {\n 50: '#E0F3FA',\n 100: '#BCE6F4',\n 200: '#90D6EC',\n 300: '#64C6E5',\n 400: '#39B6DD',\n 500: '#0DA6D6',\n 600: '#0B8DB6',\n 700: '#097496',\n 800: '#075B76',\n 900: '#054256',\n 950: '#03212B',\n};\n\n// =============================================================================\n// BASIC COLORS\n// =============================================================================\n\n/**\n * Basic black and white.\n */\nexport const basic = {\n white: '#FFFFFF',\n black: '#000000',\n} as const;\n\n// =============================================================================\n// EXPORTS\n// =============================================================================\n\n/**\n * All base color scales.\n */\nexport const baseColors = {\n grey,\n blue,\n green,\n purple,\n red,\n orange,\n lightBlue,\n basic,\n} as const;\n","/**\n * Palette Builder\n *\n * Creates MUI-native palette structures with full channel support.\n * Designed for maximum integration with MUI's colorSchemes and CSS variables.\n *\n * Key MUI Integration Points:\n * - Uses MUI's PaletteOptions structure directly\n * - Generates channel values for use with `theme.vars.palette.*.mainChannel`\n * - Supports MUI's `applyStyles` for dark mode variants\n * - Works seamlessly with MUI's CSS variable system\n *\n * @module @omnitron-dev/prism/theme/palette/builder\n */\n\nimport type { PaletteOptions } from '@mui/material/styles';\nimport type {\n ColorScale,\n PaletteColor,\n PaletteColorWithChannels,\n VibrantPalette,\n ChartPalette,\n} from '../../types/theme.js';\nimport {\n hexToRgbChannel,\n generateColorScaleWithChannels,\n generatePaletteColorWithChannels,\n cssVarRgba,\n} from '../utils/color.js';\nimport { grey as baseGrey, blue, green, purple, red, orange, lightBlue, basic } from '../colors/base.js';\n\n// =============================================================================\n// PALETTE COLOR BUILDER\n// =============================================================================\n\n/**\n * Calculate relative luminance of a hex color.\n * Used for determining if text should be light or dark for contrast.\n */\nfunction getLuminance(hex: string): number {\n const rgb = hex.replace('#', '').match(/.{2}/g);\n if (!rgb) return 0;\n const [r, g, b] = rgb.map((c) => {\n const val = parseInt(c, 16) / 255;\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n/**\n * Get appropriate contrast text color for a background.\n * Uses luminance to determine if white or dark text provides better contrast.\n * Threshold of 0.4 ensures colored buttons get white text for better UX.\n */\nfunction getContrastText(bgColor: string): string {\n const luminance = getLuminance(bgColor);\n // Threshold 0.179 is WCAG standard; 0.3 balances WCAG AA compliance\n // with UX preference for white text on colored buttons.\n // Colors brighter than 0.3 luminance (e.g. yellow, light orange) get dark text.\n return luminance < 0.3 ? '#FFFFFF' : '#212121';\n}\n\n/**\n * Build palette color from color scale.\n *\n * @param scale - 11-shade color scale\n * @param mode - Light or dark mode\n * @returns Palette color with channels\n */\nexport function buildPaletteColor(scale: ColorScale, mode: 'light' | 'dark' = 'light'): PaletteColorWithChannels {\n // Determine main color and calculate appropriate contrast text\n const mainColor = mode === 'dark' ? scale[400] : scale[500];\n const contrastText = getContrastText(mainColor);\n\n const color: PaletteColor =\n mode === 'dark'\n ? {\n lighter: scale[950],\n light: scale[700],\n main: mainColor,\n dark: scale[300],\n darker: scale[100],\n contrastText,\n }\n : {\n lighter: scale[50],\n light: scale[400],\n main: mainColor,\n dark: scale[600],\n darker: scale[900],\n contrastText,\n };\n\n return generatePaletteColorWithChannels(color);\n}\n\n// =============================================================================\n// BACKGROUND BUILDER\n// =============================================================================\n\nexport interface BackgroundColors {\n default: string;\n paper: string;\n neutral: string;\n elevation1: string;\n elevation2: string;\n elevation3: string;\n elevation4: string;\n menu: string;\n menuElevation1: string;\n menuElevation2: string;\n}\n\n/**\n * Build background palette from grey scale.\n *\n * @param grey - Grey color scale\n * @param mode - Light or dark mode\n * @returns Background colors\n */\nexport function buildBackground(grey: ColorScale, mode: 'light' | 'dark' = 'light'): BackgroundColors {\n if (mode === 'dark') {\n return {\n default: grey[950],\n paper: grey[900],\n neutral: grey[800],\n elevation1: grey[800],\n elevation2: grey[700],\n elevation3: grey[600],\n elevation4: grey[500],\n menu: grey[900],\n menuElevation1: grey[800],\n menuElevation2: grey[700],\n };\n }\n\n return {\n default: '#FFFFFF',\n paper: '#FFFFFF',\n neutral: grey[50],\n elevation1: grey[50],\n elevation2: grey[100],\n elevation3: grey[200],\n elevation4: grey[300],\n menu: '#FFFFFF',\n menuElevation1: grey[50],\n menuElevation2: grey[100],\n };\n}\n\n// =============================================================================\n// TEXT BUILDER\n// =============================================================================\n\nexport interface TextColors {\n primary: string;\n secondary: string;\n disabled: string;\n primaryChannel: string;\n secondaryChannel: string;\n disabledChannel: string;\n}\n\n/**\n * Build text colors from grey scale.\n *\n * @param grey - Grey color scale\n * @param mode - Light or dark mode\n * @returns Text colors with channels\n */\nexport function buildText(grey: ColorScale, mode: 'light' | 'dark' = 'light'): TextColors {\n const colors =\n mode === 'dark'\n ? {\n primary: grey[50],\n secondary: grey[300],\n disabled: grey[500],\n }\n : {\n primary: grey[900],\n secondary: grey[600],\n disabled: grey[400],\n };\n\n return {\n ...colors,\n primaryChannel: hexToRgbChannel(colors.primary),\n secondaryChannel: hexToRgbChannel(colors.secondary),\n disabledChannel: hexToRgbChannel(colors.disabled),\n };\n}\n\n// =============================================================================\n// ACTION BUILDER\n// =============================================================================\n\nexport interface ActionColors {\n active: string;\n hover: string;\n selected: string;\n disabled: string;\n disabledBackground: string;\n focus: string;\n}\n\n/**\n * Build action colors from grey scale.\n *\n * @param grey - Grey color scale\n * @param mode - Light or dark mode\n * @returns Action colors\n */\nexport function buildAction(grey: ColorScale, mode: 'light' | 'dark' = 'light'): ActionColors {\n if (mode === 'dark') {\n return {\n active: grey[400],\n hover: grey[700],\n selected: grey[700],\n disabled: grey[600],\n disabledBackground: grey[800],\n focus: grey[600],\n };\n }\n\n return {\n active: grey[500],\n hover: grey[100],\n selected: grey[100],\n disabled: grey[400],\n disabledBackground: grey[200],\n focus: grey[300],\n };\n}\n\n// =============================================================================\n// VIBRANT BUILDER\n// =============================================================================\n\n/**\n * Build vibrant colors for overlays and glass effects.\n *\n * @param commonWhiteChannel - White color channel\n * @param textPrimary - Primary text color\n * @param mode - Light or dark mode\n * @returns Vibrant palette\n */\nexport function buildVibrant(\n commonWhiteChannel: string,\n textPrimary: string,\n mode: 'light' | 'dark' = 'light'\n): VibrantPalette {\n const textChannel = hexToRgbChannel(textPrimary);\n\n return {\n listItemHover: cssVarRgba(commonWhiteChannel, mode === 'dark' ? 0.08 : 0.5),\n buttonHover: cssVarRgba(commonWhiteChannel, mode === 'dark' ? 0.12 : 0.7),\n textFieldHover: cssVarRgba(commonWhiteChannel, mode === 'dark' ? 0.12 : 0.7),\n text: {\n secondary: cssVarRgba(textChannel, 0.76),\n disabled: cssVarRgba(textChannel, 0.4),\n },\n overlay: cssVarRgba(commonWhiteChannel, mode === 'dark' ? 0.16 : 0.7),\n };\n}\n\n// =============================================================================\n// CHART COLORS BUILDER\n// =============================================================================\n\n/**\n * Build chart color palette.\n *\n * @param options - Color scales for charts\n * @returns Chart palette\n */\nexport function buildChartColors(options: {\n grey: ColorScale;\n red: ColorScale;\n blue: ColorScale;\n green: ColorScale;\n orange: ColorScale;\n lightBlue: ColorScale;\n purple: ColorScale;\n}): ChartPalette {\n return {\n chGrey: generateColorScaleWithChannels(options.grey),\n chRed: generateColorScaleWithChannels(options.red),\n chBlue: generateColorScaleWithChannels(options.blue),\n chGreen: generateColorScaleWithChannels(options.green),\n chOrange: generateColorScaleWithChannels(options.orange),\n chLightBlue: generateColorScaleWithChannels(options.lightBlue),\n chPurple: generateColorScaleWithChannels(options.purple),\n };\n}\n\n// =============================================================================\n// FULL PALETTE BUILDER\n// =============================================================================\n\nexport interface BuildPaletteOptions {\n /** Primary color scale */\n primary: ColorScale;\n /** Secondary color scale */\n secondary: ColorScale;\n /** Info color scale */\n info: ColorScale;\n /** Success color scale */\n success: ColorScale;\n /** Warning color scale */\n warning: ColorScale;\n /** Error color scale */\n error: ColorScale;\n /** Neutral/grey color scale */\n grey: ColorScale;\n /** Light or dark mode */\n mode: 'light' | 'dark';\n /** Custom background default color */\n backgroundDefault?: string;\n /** Custom paper color */\n paperColor?: string;\n}\n\n/**\n * Build complete MUI-compatible palette.\n *\n * @param options - Palette build options\n * @returns Complete MUI palette options\n */\nexport function buildPalette(options: BuildPaletteOptions): PaletteOptions {\n const { primary, secondary, info, success, warning, error, grey, mode, backgroundDefault, paperColor } = options;\n\n const greyWithChannels = generateColorScaleWithChannels(grey);\n const background = buildBackground(grey, mode);\n const text = buildText(grey, mode);\n const action = buildAction(grey, mode);\n\n // Override with custom colors if provided\n if (backgroundDefault) {\n background.default = backgroundDefault;\n }\n if (paperColor) {\n background.paper = paperColor;\n background.menu = paperColor;\n }\n\n const common = {\n black: basic.black,\n white: basic.white,\n blackChannel: hexToRgbChannel(basic.black),\n whiteChannel: hexToRgbChannel(basic.white),\n };\n\n const vibrant = buildVibrant(common.whiteChannel, text.primary, mode);\n\n const chart = buildChartColors({\n grey,\n red,\n blue,\n green,\n orange,\n lightBlue,\n purple,\n });\n\n // Dividers\n const divider = mode === 'dark' ? grey[700] : grey[300];\n const dividerLight = cssVarRgba(hexToRgbChannel(grey[mode === 'dark' ? 700 : 300]), 0.6);\n const menuDivider = cssVarRgba(hexToRgbChannel(grey[700]), 0);\n\n return {\n mode,\n common,\n grey: greyWithChannels,\n primary: buildPaletteColor(primary, mode),\n secondary: buildPaletteColor(secondary, mode),\n info: buildPaletteColor(info, mode),\n success: buildPaletteColor(success, mode),\n warning: buildPaletteColor(warning, mode),\n error: buildPaletteColor(error, mode),\n neutral: buildPaletteColor(grey, mode),\n background,\n text,\n action,\n divider,\n dividerLight,\n menuDivider,\n vibrant,\n chart,\n } as PaletteOptions;\n}\n\n// =============================================================================\n// DEFAULT PALETTES\n// =============================================================================\n\n/**\n * Default light palette.\n */\nexport const defaultLightPalette = buildPalette({\n primary: blue,\n secondary: purple,\n info: lightBlue,\n success: green,\n warning: orange,\n error: red,\n grey: baseGrey,\n mode: 'light',\n});\n\n/**\n * Default dark palette.\n */\nexport const defaultDarkPalette = buildPalette({\n primary: blue,\n secondary: purple,\n info: lightBlue,\n success: green,\n warning: orange,\n error: red,\n grey: baseGrey,\n mode: 'dark',\n});\n","/**\n * Shared Theme Utilities for Component Overrides\n *\n * Centralized color channel helpers and density utilities.\n * Used across all component override modules.\n *\n * @module @omnitron-dev/prism/theme/components/theme-utils\n */\n\nimport type { Theme } from '@mui/material/styles';\nimport type { ComponentsConfig } from '../../types/theme.js';\n\n// =============================================================================\n// COLOR CHANNEL HELPERS\n// =============================================================================\n\n/**\n * Safely get a grey color channel from theme.vars or return fallback.\n * MUI's Color type doesn't include channel properties, so we access dynamically.\n */\nexport function getGreyChannel(theme: Theme, shade: '500' | '900' = '500'): string {\n const channelKey = `${shade}Channel` as const;\n const vars = theme.vars?.palette.grey as Record<string, string> | undefined;\n const fallbacks: Record<string, string> = {\n '500': '145 158 171',\n '900': '0 0 0',\n };\n return vars?.[channelKey] ?? fallbacks[shade];\n}\n\n/**\n * Safely get a semantic color channel from theme.vars.\n */\nexport function getColorChannel(theme: Theme, color: 'primary' | 'success' | 'error' | 'warning' | 'info'): string {\n const vars = theme.vars?.palette[color] as { mainChannel?: string } | undefined;\n const fallbacks: Record<string, string> = {\n primary: '51 133 240',\n success: '9 159 105',\n error: '208 34 65',\n warning: '246 141 42',\n info: '13 166 214',\n };\n return vars?.mainChannel ?? fallbacks[color];\n}\n\n// =============================================================================\n// DENSITY HELPERS\n// =============================================================================\n\n/**\n * Get density multiplier from config.\n */\nexport function getDensityMultiplier(density: ComponentsConfig['density']): number {\n switch (density) {\n case 'compact':\n return 0.75;\n case 'comfortable':\n return 1.25;\n default:\n return 1;\n }\n}\n","/**\n * Button Component Overrides\n *\n * MUI Button customization with custom variants: soft, dashed, shapes.\n *\n * @module @omnitron-dev/prism/theme/components/Button\n */\n\nimport type { Components, Theme, ButtonProps, ComponentsVariants } from '@mui/material';\nimport type { ComponentsConfig } from '../../types/theme.js';\n\nimport { buttonClasses } from '@mui/material/Button';\n\nimport { getDensityMultiplier } from './theme-utils.js';\n\n// =============================================================================\n// MODULE AUGMENTATION\n// =============================================================================\n\ndeclare module '@mui/material/Button' {\n interface ButtonPropsVariantOverrides {\n /** Soft variant - subtle background with colored text */\n soft: true;\n /** Dashed variant - dashed border */\n dashed: true;\n }\n\n interface ButtonPropsColorOverrides {\n /** Neutral color option */\n neutral: true;\n }\n\n interface ButtonPropsSizeOverrides {\n /** Extra-large size */\n xLarge: true;\n }\n\n interface ButtonOwnProps {\n /** Shape variant for icon buttons */\n shape?: 'square' | 'circle';\n }\n}\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\ntype PaletteColorKey = 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error';\ntype ButtonVariants = ComponentsVariants<Theme>['MuiButton'];\n\nconst btnColors: PaletteColorKey[] = ['primary', 'secondary', 'info', 'success', 'warning', 'error'];\n\n// =============================================================================\n// SOFT VARIANT\n// =============================================================================\n\nconst softVariants = [\n ...btnColors.map((color) => ({\n props: { variant: 'soft' as const, color: color as ButtonProps['color'] },\n style: ({ theme }: { theme: Theme }) => ({\n backgroundColor: `rgba(var(--prism-${color}-main-channel, 51 133 240) / 0.16)`,\n color: theme.vars?.palette[color]?.dark || theme.palette[color].dark,\n boxShadow: 'none',\n '&:hover': {\n backgroundColor: `rgba(var(--prism-${color}-main-channel, 51 133 240) / 0.32)`,\n boxShadow: 'none',\n },\n '&:active': {\n backgroundColor: `rgba(var(--prism-${color}-main-channel, 51 133 240) / 0.4)`,\n },\n }),\n })),\n // Neutral soft variant\n {\n props: { variant: 'soft' as const, color: 'neutral' as ButtonProps['color'] },\n style: ({ theme }: { theme: Theme }) => ({\n backgroundColor: theme.vars?.palette.background.elevation2 || theme.palette.grey[100],\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n boxShadow: 'none',\n '&:hover': {\n backgroundColor: theme.vars?.palette.background.elevation3 || theme.palette.grey[200],\n boxShadow: 'none',\n },\n }),\n },\n // Inherit soft variant\n {\n props: { variant: 'soft' as const, color: 'inherit' as ButtonProps['color'] },\n style: ({ theme }: { theme: Theme }) => ({\n backgroundColor: theme.vars?.palette.action.selected || theme.palette.action.selected,\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n boxShadow: 'none',\n '&:hover': {\n backgroundColor: theme.vars?.palette.action.hover || theme.palette.action.hover,\n boxShadow: 'none',\n },\n }),\n },\n] satisfies ButtonVariants;\n\n// =============================================================================\n// DASHED VARIANT\n// =============================================================================\n\nconst dashedVariants = [\n ...btnColors.map((color) => ({\n props: { variant: 'dashed' as const, color: color as ButtonProps['color'] },\n style: ({ theme }: { theme: Theme }) => ({\n border: `1px dashed ${theme.vars?.palette[color]?.main || theme.palette[color].main}`,\n backgroundColor: 'transparent',\n color: theme.vars?.palette[color]?.main || theme.palette[color].main,\n '&:hover': {\n backgroundColor: `rgba(var(--prism-${color}-main-channel, 51 133 240) / 0.08)`,\n borderColor: theme.vars?.palette[color]?.dark || theme.palette[color].dark,\n },\n }),\n })),\n // Inherit dashed variant\n {\n props: { variant: 'dashed' as const, color: 'inherit' as ButtonProps['color'] },\n style: ({ theme }: { theme: Theme }) => ({\n border: `1px dashed ${theme.vars?.palette.grey?.[500] || theme.palette.grey[500]}`,\n backgroundColor: 'transparent',\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n '&:hover': {\n backgroundColor: theme.vars?.palette.action.hover || theme.palette.action.hover,\n borderColor: theme.vars?.palette.text.primary || theme.palette.text.primary,\n },\n }),\n },\n] satisfies ButtonVariants;\n\n// =============================================================================\n// SHAPE VARIANTS\n// =============================================================================\n\nconst shapes = ['circle', 'square'] as const;\nconst shapeSizes: Record<string, number> = { small: 30, medium: 36, large: 42, xLarge: 52 };\n\nconst shapeVariants = shapes.flatMap((shape) =>\n Object.keys(shapeSizes).map((size) => ({\n props: { shape, size: size as ButtonProps['size'] },\n style: {\n height: shapeSizes[size],\n minWidth: shapeSizes[size],\n padding: 0,\n borderRadius: shape === 'circle' ? '50%' : undefined,\n },\n }))\n) satisfies ButtonVariants;\n\n// =============================================================================\n// OUTLINED NEUTRAL VARIANT\n// =============================================================================\n\nconst outlinedNeutralVariants = [\n {\n props: { variant: 'outlined' as const, color: 'neutral' as ButtonProps['color'] },\n style: ({ theme }: { theme: Theme }) => ({\n borderColor: theme.vars?.palette.divider || theme.palette.divider,\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n '&:hover': {\n backgroundColor: theme.vars?.palette.background.elevation2 || theme.palette.grey[100],\n borderColor: theme.vars?.palette.text.secondary || theme.palette.text.secondary,\n },\n }),\n },\n] satisfies ButtonVariants;\n\n// =============================================================================\n// DISABLED VARIANTS\n// =============================================================================\n\nconst disabledVariants = [\n {\n props: { variant: 'soft' as const },\n style: ({ theme }: { theme: Theme }) => ({\n [`&.${buttonClasses.disabled}`]: {\n backgroundColor: theme.vars?.palette.action.disabledBackground || theme.palette.action.disabledBackground,\n },\n }),\n },\n {\n props: { variant: 'dashed' as const },\n style: ({ theme }: { theme: Theme }) => ({\n [`&.${buttonClasses.disabled}`]: {\n borderStyle: 'dashed',\n },\n }),\n },\n] satisfies ButtonVariants;\n\n// =============================================================================\n// MAIN EXPORT\n// =============================================================================\n\nexport function createButtonOverrides(config: ComponentsConfig): Components<Theme>['MuiButton'] {\n const { borderRadius, density } = config;\n const dm = getDensityMultiplier(density);\n\n const sizeVariants = [\n {\n props: { size: 'xLarge' as const },\n style: {\n minHeight: 56,\n fontSize: '15px',\n padding: `${10 * dm}px ${22 * dm}px`,\n lineHeight: 1.467,\n },\n },\n ] satisfies ButtonVariants;\n\n return {\n defaultProps: {\n disableElevation: true,\n },\n styleOverrides: {\n root: {\n textTransform: 'none',\n fontSize: '14px',\n fontWeight: 600,\n borderRadius,\n padding: `${8 * dm}px ${16 * dm}px`,\n lineHeight: 1.429,\n variants: [\n ...softVariants,\n ...dashedVariants,\n ...shapeVariants,\n ...outlinedNeutralVariants,\n ...sizeVariants,\n ...disabledVariants,\n ],\n },\n sizeLarge: {\n fontSize: '16px',\n padding: `${10 * dm}px ${22 * dm}px`,\n lineHeight: 1.375,\n },\n sizeSmall: {\n padding: `${6 * dm}px ${10 * dm}px`,\n fontSize: '13px',\n lineHeight: 1.286,\n },\n outlinedSizeLarge: {\n paddingTop: 9 * dm,\n paddingBottom: 9 * dm,\n },\n outlinedSizeMedium: {\n paddingTop: 7 * dm,\n paddingBottom: 7 * dm,\n },\n outlinedSizeSmall: {\n paddingTop: 5 * dm,\n paddingBottom: 5 * dm,\n },\n startIcon: {\n marginRight: 4,\n [`& > *:first-of-type`]: {\n fontSize: 16,\n },\n },\n endIcon: {\n marginLeft: 4,\n [`& > *:first-of-type`]: {\n fontSize: 16,\n },\n },\n },\n };\n}\n\nexport function createButtonBaseOverrides(): Components<Theme>['MuiButtonBase'] {\n return {\n defaultProps: {\n disableRipple: false,\n },\n };\n}\n\nexport function createButtonGroupOverrides(config: ComponentsConfig): Components<Theme>['MuiButtonGroup'] {\n return {\n defaultProps: {\n disableElevation: true,\n },\n styleOverrides: {\n root: {\n borderRadius: config.borderRadius,\n },\n },\n };\n}\n","/**\n * Theme Mixins\n *\n * Reusable style utilities for component overrides.\n * Based on Minimals template patterns.\n *\n * @module @omnitron-dev/prism/theme/mixins\n */\n\nimport type { Theme, CSSObject } from '@mui/material/styles';\nimport { varAlpha } from './utils/color.js';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Color key types for style variants.\n */\nexport type PaletteColorKey = 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error';\nexport type CommonColorsKeys = 'black' | 'white';\nexport type ColorKey = CommonColorsKeys | PaletteColorKey | 'default' | 'inherit';\n\n/**\n * Options for style variants.\n */\nexport interface StyleOptions {\n hover?: boolean | CSSObject;\n}\n\n/**\n * Options for paper styles.\n */\nexport interface PaperStyleOptions {\n blur?: number;\n color?: string;\n dropdown?: boolean;\n}\n\n/**\n * Background gradient options.\n */\nexport interface BgGradientOptions {\n images?: string[];\n sizes?: string[];\n positions?: string[];\n colors?: string[];\n direction?: string;\n}\n\n// Re-export varAlpha for backwards compatibility\nexport { varAlpha } from './utils/color.js';\n\n/**\n * Helper to generate hover styles.\n */\nfunction getHoverStyles(hoverOption: StyleOptions['hover'], hoverBase: CSSObject): CSSObject {\n if (!hoverOption) return {};\n\n return {\n '&:hover': {\n ...hoverBase,\n ...(typeof hoverOption === 'object' ? hoverOption : {}),\n },\n };\n}\n\n// =============================================================================\n// STYLE VARIANTS\n// =============================================================================\n\n/**\n * Generate filled style variant for components.\n *\n * @example\n * ```tsx\n * // In component styleOverrides\n * ...filledStyles(theme, 'primary', { hover: true })\n * ...filledStyles(theme, 'inherit', { hover: { boxShadow: theme.vars.customShadows.z8 } })\n * ```\n */\nexport function filledStyles(theme: Theme, colorKey: ColorKey, options?: StyleOptions): CSSObject {\n if (!colorKey) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Prism filledStyles] Missing colorKey parameter.');\n }\n return {};\n }\n\n const palette = theme.vars?.palette || theme.palette;\n const grey = palette.grey;\n\n if (colorKey === 'default') {\n const base: CSSObject = {\n color: grey[800],\n backgroundColor: grey[300],\n };\n const hover = getHoverStyles(options?.hover, {\n backgroundColor: grey[400],\n });\n return { ...base, ...hover };\n }\n\n if (colorKey === 'inherit') {\n const base: CSSObject = {\n color: palette.common.white,\n backgroundColor: grey[800],\n };\n const hover = getHoverStyles(options?.hover, {\n backgroundColor: grey[700],\n });\n return { ...base, ...hover };\n }\n\n if (colorKey === 'white' || colorKey === 'black') {\n const oppositeColor = colorKey === 'white' ? 'black' : 'white';\n const base: CSSObject = {\n color: palette.common[oppositeColor],\n backgroundColor: palette.common[colorKey],\n };\n const hover = getHoverStyles(options?.hover, {\n opacity: 0.8,\n });\n return { ...base, ...hover };\n }\n\n // Palette colors (primary, secondary, info, success, warning, error)\n const paletteColor = palette[colorKey];\n const base: CSSObject = {\n color: paletteColor.contrastText,\n backgroundColor: paletteColor.main,\n };\n const hover = getHoverStyles(options?.hover, {\n backgroundColor: paletteColor.dark,\n });\n\n return { ...base, ...hover };\n}\n\n/**\n * Generate soft style variant for components.\n *\n * @example\n * ```tsx\n * // In component styleOverrides\n * ...softStyles(theme, 'primary')\n * ...softStyles(theme, 'inherit', { hover: true })\n * ```\n */\nexport function softStyles(theme: Theme, colorKey: ColorKey, options?: StyleOptions): CSSObject {\n if (!colorKey) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Prism softStyles] Missing colorKey parameter.');\n }\n return {};\n }\n\n const palette = theme.vars?.palette || theme.palette;\n const grey = palette.grey;\n\n if (colorKey === 'default') {\n return {\n ...filledStyles(theme, 'default', options),\n boxShadow: 'none',\n };\n }\n\n if (colorKey === 'inherit') {\n const greyChannel = (grey as { ['500Channel']?: string })['500Channel'] || '145, 158, 171';\n const base: CSSObject = {\n boxShadow: 'none',\n backgroundColor: varAlpha(greyChannel, 0.16),\n };\n const hover = getHoverStyles(options?.hover, {\n backgroundColor: varAlpha(greyChannel, 0.32),\n });\n return { ...base, ...hover };\n }\n\n if (colorKey === 'white' || colorKey === 'black') {\n const base: CSSObject = {\n boxShadow: 'none',\n color: palette.common[colorKey],\n backgroundColor: varAlpha('currentColor', 0.08),\n };\n const hover = getHoverStyles(options?.hover, {\n backgroundColor: varAlpha('currentColor', 0.16),\n });\n return { ...base, ...hover };\n }\n\n // Palette colors\n const paletteColor = palette[colorKey];\n const mainChannel =\n (paletteColor as { mainChannel?: string }).mainChannel ||\n (palette.primary as { mainChannel?: string }).mainChannel ||\n '51, 133, 240';\n\n const base: CSSObject = {\n boxShadow: 'none',\n color: paletteColor.dark,\n backgroundColor: varAlpha(mainChannel, 0.16),\n };\n const hover = getHoverStyles(options?.hover, {\n backgroundColor: varAlpha(mainChannel, 0.32),\n });\n\n return { ...base, ...hover };\n}\n\n/**\n * Generate background gradient styles.\n *\n * @example\n * ```tsx\n * ...bgGradient({\n * colors: ['rgba(0,0,0,0.5)', 'rgba(0,0,0,0.8)'],\n * direction: 'to bottom'\n * })\n * ```\n */\nexport function bgGradient(options: BgGradientOptions): CSSObject {\n const { images, sizes, positions, colors, direction = 'to bottom' } = options;\n\n if (colors && colors.length > 0) {\n return {\n background: `linear-gradient(${direction}, ${colors.join(', ')})`,\n };\n }\n\n if (images && images.length > 0) {\n return {\n backgroundImage: images.join(', '),\n backgroundSize: sizes?.join(', ') || 'cover',\n backgroundPosition: positions?.join(', ') || 'center',\n backgroundRepeat: 'no-repeat',\n };\n }\n\n return {};\n}\n\n/**\n * Generate blur background styles.\n *\n * @example\n * ```tsx\n * ...bgBlur({ blur: 20, color: 'rgba(255,255,255,0.8)' })\n * ```\n */\nexport function bgBlur(options: { blur?: number; color?: string }): CSSObject {\n const { blur = 20, color = 'rgba(255, 255, 255, 0.8)' } = options;\n\n return {\n backdropFilter: `blur(${blur}px)`,\n WebkitBackdropFilter: `blur(${blur}px)`,\n backgroundColor: color,\n };\n}\n\n/**\n * Generate paper styles with glass effect.\n *\n * @example\n * ```tsx\n * ...paperStyles(theme, { dropdown: true })\n * ```\n */\nexport function paperStyles(theme: Theme, options?: PaperStyleOptions): CSSObject {\n const { blur = 20, color, dropdown } = options ?? {};\n const palette = theme.vars?.palette || theme.palette;\n\n const baseStyles: CSSObject = {\n backdropFilter: `blur(${blur}px)`,\n WebkitBackdropFilter: `blur(${blur}px)`,\n backgroundColor: color ?? varAlpha('255, 255, 255', 0.9),\n };\n\n if (dropdown) {\n const customShadows = (theme as { customShadows?: { dropdown?: string } }).customShadows;\n const greyChannel = (palette.grey as { ['500Channel']?: string })['500Channel'] || '145, 158, 171';\n return {\n ...baseStyles,\n padding: theme.spacing(0.5),\n boxShadow:\n customShadows?.dropdown ||\n `0 0 2px 0 rgba(${greyChannel}, 0.24), -20px 20px 40px -4px rgba(${greyChannel}, 0.24)`,\n borderRadius: `${Number(theme.shape.borderRadius) * 1.25}px`,\n };\n }\n\n return baseStyles;\n}\n\n/**\n * Generate menu item styles.\n *\n * @example\n * ```tsx\n * ...menuItemStyles(theme)\n * ```\n */\nexport function menuItemStyles(theme: Theme): CSSObject {\n const palette = theme.vars?.palette || theme.palette;\n\n return {\n ...theme.typography.body2,\n padding: theme.spacing(0.75, 1),\n borderRadius: Number(theme.shape.borderRadius) * 0.75,\n '&:not(:last-of-type)': {\n marginBottom: 4,\n },\n '&.Mui-selected': {\n fontWeight: theme.typography.fontWeightMedium,\n backgroundColor: palette.action.selected,\n '&:hover': { backgroundColor: palette.action.hover },\n },\n };\n}\n\n/**\n * Generate max lines text truncation.\n *\n * @example\n * ```tsx\n * ...maxLine({ lines: 2 })\n * ```\n */\nexport function maxLine(options: { lines: number; lineHeight?: number }): CSSObject {\n const { lines, lineHeight = 1.5 } = options;\n\n return {\n overflow: 'hidden',\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: lines,\n textOverflow: 'ellipsis',\n ...(lineHeight && { lineHeight }),\n };\n}\n\n/**\n * Generate text gradient effect.\n *\n * @example\n * ```tsx\n * ...textGradient('to right', '#FF5630', '#00AB55')\n * ```\n */\nexport function textGradient(direction: string, ...colors: string[]): CSSObject {\n return {\n background: `linear-gradient(${direction}, ${colors.join(', ')})`,\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n backgroundClip: 'text',\n textFillColor: 'transparent',\n display: 'inline-block',\n };\n}\n\n/**\n * Generate border gradient effect using background-clip trick.\n *\n * @example\n * ```tsx\n * ...borderGradient({ color: 'linear-gradient(135deg, #FF5630, #00AB55)', borderWidth: 2 })\n * ```\n */\nexport function borderGradient(options: { color?: string; borderWidth?: number; borderRadius?: number }): CSSObject {\n const { color = 'linear-gradient(135deg, #FF5630, #00AB55)', borderWidth = 2, borderRadius = 0 } = options;\n\n return {\n position: 'relative' as const,\n border: 'none',\n borderRadius,\n '&::before': {\n content: '\"\"',\n position: 'absolute' as const,\n inset: 0,\n borderRadius: 'inherit',\n padding: borderWidth,\n background: color,\n WebkitMask: 'linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)',\n WebkitMaskComposite: 'xor',\n maskComposite: 'exclude',\n pointerEvents: 'none' as const,\n },\n };\n}\n\n/**\n * Generate theme-aware scrollbar styles.\n * Uses CSS variables for proper dark mode support.\n *\n * @example\n * ```tsx\n * ...scrollbarStyles(theme)\n * ```\n */\nexport function scrollbarStyles(theme: Theme): CSSObject {\n const palette = theme.vars?.palette || theme.palette;\n const greyChannel = (palette.grey as { ['500Channel']?: string })['500Channel'] || '145, 158, 171';\n\n return {\n scrollbarWidth: 'thin' as const,\n scrollbarColor: `${varAlpha(greyChannel, 0.4)} ${varAlpha(greyChannel, 0.08)}`,\n '&::-webkit-scrollbar': {\n width: 6,\n height: 6,\n },\n '&::-webkit-scrollbar-track': {\n backgroundColor: 'transparent',\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: varAlpha(greyChannel, 0.4),\n borderRadius: 3,\n '&:hover': {\n backgroundColor: varAlpha(greyChannel, 0.6),\n },\n },\n };\n}\n\n// =============================================================================\n// KEYFRAME ANIMATIONS\n// =============================================================================\n\n/**\n * Spin animation keyframes (for loading spinners).\n */\nexport const spinKeyframes = {\n '@keyframes prism-spin': {\n from: { transform: 'rotate(0deg)' },\n to: { transform: 'rotate(360deg)' },\n },\n};\n\n/**\n * Dash animation keyframes (for SVG stroke animations).\n */\nexport const dashKeyframes = {\n '@keyframes prism-dash': {\n '0%': { strokeDasharray: '1, 200', strokeDashoffset: 0 },\n '50%': { strokeDasharray: '100, 200', strokeDashoffset: -15 },\n '100%': { strokeDasharray: '100, 200', strokeDashoffset: -125 },\n },\n};\n\n/**\n * Pulse animation keyframes.\n */\nexport const pulseKeyframes = {\n '@keyframes prism-pulse': {\n '0%': { transform: 'scale(1)', opacity: 1 },\n '50%': { transform: 'scale(1.05)', opacity: 0.7 },\n '100%': { transform: 'scale(1)', opacity: 1 },\n },\n};\n\n/**\n * Shimmer animation for skeleton loading.\n */\nexport const shimmerKeyframes = {\n '@keyframes prism-shimmer': {\n '0%': { backgroundPosition: '-200% 0' },\n '100%': { backgroundPosition: '200% 0' },\n },\n};\n\n/**\n * Fade in animation.\n */\nexport const fadeInKeyframes = {\n '@keyframes prism-fadeIn': {\n from: { opacity: 0 },\n to: { opacity: 1 },\n },\n};\n\n/**\n * Slide up animation.\n */\nexport const slideUpKeyframes = {\n '@keyframes prism-slideUp': {\n from: { transform: 'translateY(16px)', opacity: 0 },\n to: { transform: 'translateY(0)', opacity: 1 },\n },\n};\n\n// =============================================================================\n// BASIC MIXINS\n// =============================================================================\n\n/**\n * MUI mixins configuration.\n */\nexport const mixins = {\n toolbar: {\n minHeight: 56,\n '@media (min-width:0px)': {\n '@media (orientation: landscape)': {\n minHeight: 48,\n },\n },\n '@media (min-width:600px)': {\n minHeight: 64,\n },\n },\n // Extended mixins\n hideScrollX: {\n msOverflowStyle: 'none' as const,\n scrollbarWidth: 'none' as const,\n overflowX: 'auto' as const,\n '&::-webkit-scrollbar': { display: 'none' },\n },\n hideScrollY: {\n msOverflowStyle: 'none' as const,\n scrollbarWidth: 'none' as const,\n overflowY: 'auto' as const,\n '&::-webkit-scrollbar': { display: 'none' },\n },\n // Style functions (attached at theme creation)\n bgBlur,\n bgGradient,\n maxLine,\n softStyles,\n filledStyles,\n paperStyles,\n menuItemStyles,\n varAlpha,\n textGradient,\n borderGradient,\n scrollbarStyles,\n};\n\n/**\n * Hide scrollbar mixin.\n */\nexport const hideScrollbarMixin = {\n scrollbarWidth: 'none' as const,\n msOverflowStyle: 'none' as const,\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n};\n\n/**\n * Custom scrollbar mixin.\n */\nexport function customScrollbarMixin(theme: Theme): CSSObject {\n const palette = theme.vars?.palette || theme.palette;\n const greyChannel = (palette.grey as { ['500Channel']?: string })['500Channel'] || '145, 158, 171';\n\n return {\n scrollbarWidth: 'thin' as const,\n scrollbarColor: `${varAlpha(greyChannel, 0.4)} ${varAlpha(greyChannel, 0.08)}`,\n '&::-webkit-scrollbar': {\n width: 6,\n height: 6,\n },\n '&::-webkit-scrollbar-track': {\n backgroundColor: 'transparent',\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: varAlpha(greyChannel, 0.4),\n borderRadius: 3,\n '&:hover': {\n backgroundColor: varAlpha(greyChannel, 0.6),\n },\n },\n };\n}\n\n/**\n * Text overflow ellipsis mixin.\n */\nexport const textEllipsisMixin = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap' as const,\n};\n\n/**\n * Multi-line text overflow mixin.\n */\nexport function multiLineEllipsisMixin(lines: number) {\n return {\n overflow: 'hidden',\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical' as const,\n WebkitLineClamp: lines,\n };\n}\n\n/**\n * Focus visible ring mixin.\n */\nexport const focusRingMixin = {\n '&:focus-visible': {\n outline: 'none',\n boxShadow: '0 0 0 2px var(--prism-background, #FFF), 0 0 0 4px var(--prism-primary, #3385F0)',\n },\n};\n\n/**\n * Glass/blur background mixin.\n */\nexport const glassMixin = {\n backdropFilter: 'blur(20px)',\n backgroundColor: 'var(--prism-vibrant-overlay, rgba(255, 255, 255, 0.7))',\n};\n","/**\n * Chip Component Overrides\n *\n * MUI Chip customization with custom variants: soft, dashed.\n * Follows MUI v7 best practices: chipClasses selectors, slot-based styleOverrides,\n * variants inside styleOverrides.root.\n *\n * @module @omnitron-dev/prism/theme/components/Chip\n */\n\nimport type { Components, Theme, ChipProps, ComponentsVariants } from '@mui/material';\nimport type { ComponentsConfig } from '../../types/theme.js';\n\nimport { chipClasses } from '@mui/material/Chip';\n\nimport { getDensityMultiplier } from './theme-utils.js';\n\n// =============================================================================\n// MODULE AUGMENTATION\n// =============================================================================\n\ndeclare module '@mui/material/Chip' {\n interface ChipPropsVariantOverrides {\n /** Soft variant - subtle background with colored text */\n soft: true;\n /** Dashed variant - dashed border */\n dashed: true;\n }\n\n interface ChipPropsColorOverrides {\n /** Neutral color option */\n neutral: true;\n }\n\n interface ChipPropsSizeOverrides {\n /** Extra-small size */\n xSmall: true;\n }\n}\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\ntype PaletteColorKey = 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error';\nconst chipColors: PaletteColorKey[] = ['primary', 'secondary', 'info', 'success', 'warning', 'error'];\n\ntype ChipVariants = ComponentsVariants<Theme>['MuiChip'];\n\n// =============================================================================\n// SOFT VARIANT\n// =============================================================================\n\nconst softVariants = [\n ...chipColors.map((color) => ({\n props: (props: ChipProps) => props.variant === 'soft' && props.color === color,\n style: ({ theme }: { theme: Theme }) => ({\n backgroundColor: `rgba(var(--prism-${color}-main-channel, 51 133 240) / 0.16)`,\n color: theme.vars?.palette[color]?.dark || theme.palette[color].dark,\n }),\n })),\n // Neutral soft variant\n {\n props: (props: ChipProps) => props.variant === 'soft' && props.color === 'neutral',\n style: ({ theme }: { theme: Theme }) => ({\n backgroundColor: theme.vars?.palette.background.elevation2 || theme.palette.grey[100],\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n }),\n },\n // Default soft variant (no color specified)\n {\n props: (props: ChipProps) => props.variant === 'soft' && !props.color,\n style: ({ theme }: { theme: Theme }) => ({\n backgroundColor: theme.vars?.palette.background.elevation2 || theme.palette.grey[100],\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n }),\n },\n] satisfies ChipVariants;\n\n// =============================================================================\n// DASHED VARIANT\n// =============================================================================\n\nconst dashedVariants = [\n ...chipColors.map((color) => ({\n props: (props: ChipProps) => props.variant === 'dashed' && props.color === color,\n style: ({ theme }: { theme: Theme }) => ({\n border: `1px dashed ${theme.vars?.palette[color]?.main || theme.palette[color].main}`,\n backgroundColor: 'transparent',\n color: theme.vars?.palette[color]?.main || theme.palette[color].main,\n }),\n })),\n // Neutral dashed variant\n {\n props: (props: ChipProps) => props.variant === 'dashed' && props.color === 'neutral',\n style: ({ theme }: { theme: Theme }) => ({\n border: `1px dashed ${theme.vars?.palette.divider || theme.palette.divider}`,\n backgroundColor: 'transparent',\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n }),\n },\n] satisfies ChipVariants;\n\n// =============================================================================\n// OUTLINED NEUTRAL VARIANT\n// =============================================================================\n\nconst outlinedNeutralVariant = [\n {\n props: (props: ChipProps) => props.variant === 'outlined' && props.color === 'neutral',\n style: ({ theme }: { theme: Theme }) => ({\n borderColor: theme.vars?.palette.divider || theme.palette.divider,\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n }),\n },\n] satisfies ChipVariants;\n\n// =============================================================================\n// FILLED NEUTRAL VARIANT\n// =============================================================================\n\nconst filledNeutralVariant = [\n {\n props: (props: ChipProps) => props.variant === 'filled' && props.color === 'neutral',\n style: ({ theme }: { theme: Theme }) => ({\n backgroundColor: theme.vars?.palette.grey[300] || theme.palette.grey[300],\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n }),\n },\n] satisfies ChipVariants;\n\n// =============================================================================\n// DISABLED VARIANTS\n// =============================================================================\n\nconst disabledVariants = [\n {\n props: {},\n style: ({ theme }: { theme: Theme }) => ({\n [`&.${chipClasses.disabled}`]: {\n opacity: 1,\n color: theme.vars?.palette.action.disabled || theme.palette.action.disabled,\n [`&:not(.${chipClasses.outlined})`]: {\n backgroundColor: theme.vars?.palette.action.disabledBackground || theme.palette.action.disabledBackground,\n },\n [`&.${chipClasses.outlined}`]: {\n borderColor: theme.vars?.palette.action.disabledBackground || theme.palette.action.disabledBackground,\n },\n },\n }),\n },\n] satisfies ChipVariants;\n\n// =============================================================================\n// XSMALL SIZE VARIANT\n// =============================================================================\n\nconst xSmallVariant = [\n {\n props: { size: 'xSmall' as const },\n style: {\n height: 20,\n fontSize: '0.6875rem',\n padding: '0 6px',\n },\n },\n] satisfies ChipVariants;\n\n// =============================================================================\n// MAIN EXPORT\n// =============================================================================\n\nexport function createChipOverrides(config: ComponentsConfig): Components<Theme>['MuiChip'] {\n const { borderRadius, density } = config;\n const densityMultiplier = getDensityMultiplier(density);\n\n return {\n styleOverrides: {\n root: {\n borderRadius,\n fontWeight: 500,\n variants: [\n ...softVariants,\n ...dashedVariants,\n ...outlinedNeutralVariant,\n ...filledNeutralVariant,\n ...disabledVariants,\n ...xSmallVariant,\n ],\n },\n sizeSmall: {\n height: 24 * densityMultiplier,\n },\n sizeMedium: {\n height: 32 * densityMultiplier,\n },\n label: {\n fontWeight: 500,\n },\n labelSmall: {\n fontSize: '0.75rem',\n paddingLeft: 8,\n paddingRight: 8,\n },\n labelMedium: {\n fontSize: '0.8125rem',\n paddingLeft: 12,\n paddingRight: 12,\n },\n icon: {\n fontSize: 18,\n color: 'currentColor',\n },\n deleteIcon: {\n fontSize: 18,\n opacity: 0.48,\n color: 'currentColor',\n '&:hover': {\n opacity: 0.8,\n color: 'currentColor',\n },\n },\n },\n };\n}\n","/**\n * TextField Component Overrides\n *\n * Refined styling for text inputs based on Minimals patterns.\n * Uses MUI v7 class constants for type-safe selectors.\n *\n * @module @omnitron-dev/prism/theme/components/TextField\n */\n\nimport type { Theme, Components, CSSObject } from '@mui/material/styles';\nimport type { ComponentsConfig } from '../../types/theme.js';\nimport { varAlpha } from '../mixins.js';\nimport { getGreyChannel } from './theme-utils.js';\n\nimport { inputBaseClasses } from '@mui/material/InputBase';\nimport { outlinedInputClasses } from '@mui/material/OutlinedInput';\nimport { filledInputClasses } from '@mui/material/FilledInput';\nimport { inputAdornmentClasses } from '@mui/material/InputAdornment';\nimport { inputLabelClasses } from '@mui/material/InputLabel';\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\n/**\n * Input typography configuration.\n */\nexport const INPUT_TYPOGRAPHY = {\n fontSize: { base: 15, responsive: 16 },\n lineHeight: 24,\n} as const;\n\n/**\n * Input padding configuration for different variants and sizes.\n */\nexport const INPUT_PADDING: Record<string, Record<string, CSSObject>> = {\n base: {\n small: { paddingTop: 0, paddingBottom: 4 },\n medium: { paddingTop: 4, paddingBottom: 4 },\n },\n outlined: {\n small: { paddingTop: 8, paddingBottom: 8 },\n medium: { paddingTop: 16, paddingBottom: 16 },\n },\n filled: {\n small: { paddingTop: 20 },\n medium: { paddingTop: 24 },\n smallHidden: { paddingTop: 8, paddingBottom: 8 },\n mediumHidden: { paddingTop: 16, paddingBottom: 16 },\n },\n};\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/**\n * Get input typography styles.\n */\nexport function getInputTypography(theme: Theme, keys: Array<'fontSize' | 'height' | 'lineHeight'>): CSSObject {\n const { fontSize, lineHeight } = INPUT_TYPOGRAPHY;\n\n const baseStyles = {\n fontSize: theme.typography.pxToRem(fontSize.base),\n height: `${lineHeight}px`,\n lineHeight: `${lineHeight}px`,\n };\n\n const responsiveStyles = {\n fontSize: theme.typography.pxToRem(fontSize.responsive),\n height: `${lineHeight}px`,\n lineHeight: `${lineHeight}px`,\n };\n\n return {\n ...Object.fromEntries(keys.map((k) => [k, baseStyles[k]])),\n [theme.breakpoints.down('sm')]: Object.fromEntries(keys.map((k) => [k, responsiveStyles[k]])),\n };\n}\n\n// =============================================================================\n// COLOR CHANNEL HELPERS\n// =============================================================================\n\n/**\n * Safely access error channel from theme with fallback.\n */\nfunction getErrorChannel(theme: Theme): string {\n const vars = theme.vars?.palette.error as Record<string, string> | undefined;\n return vars?.mainChannel ?? '208 34 65';\n}\n\n// =============================================================================\n// COMPONENT OVERRIDES\n// =============================================================================\n\n/**\n * Create InputBase overrides.\n */\nexport function createInputBaseOverrides(_config: ComponentsConfig): Components<Theme>['MuiInputBase'] {\n return {\n styleOverrides: {\n root: ({ theme }) => ({\n '--disabled-color': theme.vars?.palette.action.disabled || theme.palette.action.disabled,\n ...getInputTypography(theme, ['lineHeight']),\n [`&.${inputBaseClasses.disabled}`]: {\n [`& .${inputAdornmentClasses.root} *`]: { color: 'var(--disabled-color)' },\n },\n }),\n input: ({ theme }) => ({\n ...getInputTypography(theme, ['fontSize', 'height', 'lineHeight']),\n '&:focus': { borderRadius: 'inherit' },\n '&::placeholder': {\n color: theme.vars?.palette.text.disabled || theme.palette.text.disabled,\n opacity: 1,\n },\n }),\n },\n };\n}\n\n/**\n * Create Input (standard variant underline) overrides.\n */\nexport function createInputOverrides(_config: ComponentsConfig): Components<Theme>['MuiInput'] {\n return {\n styleOverrides: {\n root: ({ theme }) => ({\n '&::before': {\n borderBottomColor: varAlpha(getGreyChannel(theme), 0.2),\n },\n '&::after': {\n borderBottomColor: theme.vars?.palette.text.primary || theme.palette.text.primary,\n },\n }),\n },\n };\n}\n\n/**\n * Create OutlinedInput overrides.\n */\nexport function createOutlinedInputOverrides(config: ComponentsConfig): Components<Theme>['MuiOutlinedInput'] {\n const { borderRadius } = config;\n\n return {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius,\n [`&.${outlinedInputClasses.focused}:not(.${outlinedInputClasses.error})`]: {\n [`& .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: theme.vars?.palette.text.primary || theme.palette.text.primary,\n },\n },\n [`&.${outlinedInputClasses.disabled}`]: {\n [`& .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: theme.vars?.palette.action.disabledBackground || theme.palette.action.disabledBackground,\n },\n },\n }),\n input: {\n ...INPUT_PADDING.outlined.medium,\n '&.MuiInputBase-inputSizeSmall': {\n ...INPUT_PADDING.outlined.small,\n },\n '&.MuiInputBase-inputMultiline': {\n paddingTop: 0,\n paddingBottom: 0,\n },\n },\n notchedOutline: ({ theme }) => ({\n borderColor: varAlpha(getGreyChannel(theme), 0.2),\n transition: theme.transitions.create(['border-color'], {\n duration: theme.transitions.duration.shortest,\n }),\n // Align fieldset font-size with InputLabel (14px) so the legend\n // notch width (0.75em) matches the visually-scaled label exactly.\n fontSize: theme.typography.pxToRem(14),\n '& legend > span': { paddingInline: 3 },\n }),\n },\n };\n}\n\n/**\n * Create FilledInput overrides.\n */\nexport function createFilledInputOverrides(config: ComponentsConfig): Components<Theme>['MuiFilledInput'] {\n const { borderRadius } = config;\n\n return {\n defaultProps: {\n disableUnderline: true,\n },\n styleOverrides: {\n root: ({ theme }) => {\n const greyChannel = getGreyChannel(theme);\n const errChannel = getErrorChannel(theme);\n const baseBg = varAlpha(greyChannel, 0.08);\n const hoverBg = varAlpha(greyChannel, 0.16);\n const errorBg = varAlpha(errChannel, 0.08);\n const errorHoverBg = varAlpha(errChannel, 0.16);\n const disabledBg = theme.vars?.palette.action.disabledBackground || theme.palette.action.disabledBackground;\n\n return {\n backgroundColor: baseBg,\n borderRadius,\n [`&:hover, &.${filledInputClasses.focused}`]: { backgroundColor: hoverBg },\n [`&.${filledInputClasses.error}`]: {\n backgroundColor: errorBg,\n [`&:hover, &.${filledInputClasses.focused}`]: { backgroundColor: errorHoverBg },\n },\n [`&.${filledInputClasses.disabled}`]: { backgroundColor: disabledBg },\n };\n },\n input: {\n ...INPUT_PADDING.filled.medium,\n '&.MuiInputBase-inputSizeSmall': {\n ...INPUT_PADDING.filled.small,\n },\n '&.MuiInputBase-inputMultiline': {\n paddingTop: 0,\n paddingBottom: 0,\n },\n },\n },\n };\n}\n\n/**\n * Create TextField overrides.\n */\nexport function createTextFieldOverrides(config: ComponentsConfig): Components<Theme>['MuiTextField'] {\n return {\n defaultProps: {\n variant: 'outlined',\n size: config.density === 'compact' ? 'small' : 'medium',\n },\n };\n}\n\n/**\n * Create InputLabel overrides with shrink variants.\n */\nexport function createInputLabelOverrides(_config: ComponentsConfig): Components<Theme>['MuiInputLabel'] {\n return {\n styleOverrides: {\n root: ({ theme }) => ({\n fontSize: theme.typography.pxToRem(14),\n lineHeight: 1.5,\n variants: [\n {\n props: (props: Record<string, unknown>) => !props.shrink,\n style: {\n ...getInputTypography(theme, ['fontSize', 'lineHeight']),\n color: theme.vars?.palette.text.disabled || theme.palette.text.disabled,\n },\n },\n {\n props: (props: Record<string, unknown>) => !!props.shrink,\n style: {\n fontWeight: 600,\n [`&.${inputLabelClasses.focused}:not(.${inputLabelClasses.error})`]: {\n color: 'inherit',\n },\n },\n },\n ],\n }),\n },\n };\n}\n\n/**\n * Create FormHelperText overrides with flex layout for icon support.\n */\nexport function createFormHelperTextOverrides(_config: ComponentsConfig): Components<Theme>['MuiFormHelperText'] {\n return {\n defaultProps: {\n component: 'div',\n },\n styleOverrides: {\n root: ({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n marginTop: theme.spacing(0.75),\n fontSize: theme.typography.pxToRem(12),\n lineHeight: 1.5,\n '& > svg': { width: 16, height: 16 },\n }),\n },\n };\n}\n","/**\n * Form Control Component Overrides\n *\n * Refined styling for Checkbox, Radio, Switch, and FormLabel with custom icons.\n * Based on Minimals template patterns with MUI v7 best practices.\n *\n * @module @omnitron-dev/prism/theme/components/FormControls\n */\n\nimport * as React from 'react';\nimport type { Theme, Components, ComponentsVariants } from '@mui/material/styles';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport type { SvgIconProps } from '@mui/material/SvgIcon';\nimport { checkboxClasses } from '@mui/material/Checkbox';\nimport { radioClasses } from '@mui/material/Radio';\nimport { switchClasses } from '@mui/material/Switch';\nimport { formLabelClasses } from '@mui/material/FormLabel';\nimport type { ComponentsConfig } from '../../types/theme.js';\nimport { getGreyChannel } from './theme-utils.js';\nimport { varAlpha } from '../mixins.js';\n\n// =============================================================================\n// CUSTOM ICONS\n// =============================================================================\n\n/**\n * Checkbox unchecked icon.\n */\nexport function CheckboxIcon(props: SvgIconProps): React.ReactNode {\n return (\n <SvgIcon {...props}>\n <path d=\"M17.9 2.318A5 5 0 0 1 22.895 7.1l.005.217v10a5 5 0 0 1-4.783 4.995l-.217.005h-10a5 5 0 0 1-4.995-4.783l-.005-.217v-10a5 5 0 0 1 4.783-4.996l.217-.004h10Zm-.5 1.5h-9a4 4 0 0 0-4 4v9a4 4 0 0 0 4 4h9a4 4 0 0 0 4-4v-9a4 4 0 0 0-4-4Z\" />\n </SvgIcon>\n );\n}\n\n/**\n * Checkbox checked icon.\n */\nexport function CheckboxCheckedIcon(props: SvgIconProps): React.ReactNode {\n return (\n <SvgIcon {...props}>\n <path d=\"M17 2a5 5 0 0 1 5 5v10a5 5 0 0 1-5 5H7a5 5 0 0 1-5-5V7a5 5 0 0 1 5-5Zm-1.625 7.255-4.13 4.13-1.75-1.75a.881.881 0 0 0-1.24 0c-.34.34-.34.89 0 1.24l2.38 2.37c.17.17.39.25.61.25.23 0 .45-.08.62-.25l4.75-4.75c.34-.34.34-.89 0-1.24a.881.881 0 0 0-1.24 0Z\" />\n </SvgIcon>\n );\n}\n\n/**\n * Checkbox indeterminate icon.\n */\nexport function CheckboxIndeterminateIcon(props: SvgIconProps): React.ReactNode {\n return (\n <SvgIcon {...props}>\n <path d=\"M17,2 C19.7614,2 22,4.23858 22,7 L22,7 L22,17 C22,19.7614 19.7614,22 17,22 L17,22 L7,22 C4.23858,22 2,19.7614 2,17 L2,17 L2,7 C2,4.23858 4.23858,2 7,2 L7,2 Z M15,11 L9,11 C8.44772,11 8,11.4477 8,12 C8,12.5523 8.44772,13 9,13 L15,13 C15.5523,13 16,12.5523 16,12 C16,11.4477 15.5523,11 15,11 Z\" />\n </SvgIcon>\n );\n}\n\n// =============================================================================\n// SWITCH DIMENSIONS\n// =============================================================================\n\nconst SWITCH_DIMENSIONS: Record<\n 'small' | 'medium',\n { thumb: number; track: number; trackRadius: number; translateX: string }\n> = {\n small: { thumb: 10, track: 16, trackRadius: 8, translateX: '10px' },\n medium: { thumb: 14, track: 20, trackRadius: 10, translateX: '14px' },\n};\n\n// =============================================================================\n// SWITCH VARIANT DEFINITIONS\n// =============================================================================\n\ntype SwitchVariants = ComponentsVariants<Theme>['MuiSwitch'];\n\nconst switchColorVariants = [\n {\n props: (props) => props.color === 'default',\n style: ({ theme }) => ({\n [`&.${switchClasses.checked}`]: {\n [`& + .${switchClasses.track}`]: {\n backgroundColor: theme.vars?.palette.text.primary,\n },\n [`& .${switchClasses.thumb}`]: {\n ...theme.applyStyles('dark', {\n color: theme.vars?.palette.grey[800],\n }),\n },\n },\n }),\n },\n] satisfies SwitchVariants;\n\nconst switchCheckedVariants = [\n {\n props: {},\n style: {\n [`&.${switchClasses.checked}`]: {\n transform: `translateX(${SWITCH_DIMENSIONS.medium.translateX})`,\n [`& + .${switchClasses.track}`]: {\n opacity: 1,\n },\n },\n },\n },\n] satisfies SwitchVariants;\n\nconst switchDisabledVariants = [\n {\n props: {},\n style: ({ theme }) => ({\n [`&.${switchClasses.disabled}`]: {\n [`& + .${switchClasses.track}`]: {\n opacity: 0.48,\n },\n [`& .${switchClasses.thumb}`]: {\n ...theme.applyStyles('dark', {\n opacity: 0.48,\n }),\n },\n },\n }),\n },\n] satisfies SwitchVariants;\n\nconst switchSizeVariants = [\n {\n props: (props) => props.size === 'small',\n style: {\n [`& .${switchClasses.switchBase}`]: {\n [`&.${switchClasses.checked}`]: {\n transform: `translateX(${SWITCH_DIMENSIONS.small.translateX})`,\n },\n },\n [`& .${switchClasses.thumb}`]: {\n width: SWITCH_DIMENSIONS.small.thumb,\n height: SWITCH_DIMENSIONS.small.thumb,\n },\n [`& .${switchClasses.track}`]: {\n height: SWITCH_DIMENSIONS.small.track,\n borderRadius: SWITCH_DIMENSIONS.small.trackRadius,\n },\n },\n },\n] satisfies SwitchVariants;\n\n// =============================================================================\n// COMPONENT OVERRIDES\n// =============================================================================\n\n/**\n * Create Checkbox overrides with custom icons.\n * Uses MUI v7 variants inside styleOverrides.root and class constants.\n */\nexport function createCheckboxOverrides(config: ComponentsConfig): Components<Theme>['MuiCheckbox'] {\n return {\n defaultProps: {\n size: config.density === 'compact' ? 'small' : 'medium',\n icon: <CheckboxIcon />,\n checkedIcon: <CheckboxCheckedIcon />,\n indeterminateIcon: <CheckboxIndeterminateIcon />,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n padding: theme.spacing(1),\n variants: [\n {\n props: (props) => props.color === 'default',\n style: {\n [`&.${checkboxClasses.checked}`]: {\n color: theme.vars?.palette.text.primary,\n },\n },\n },\n ...(['primary', 'secondary', 'info', 'success', 'warning', 'error'] as const).map((color) => ({\n props: { color },\n style: {\n '&:hover': {\n backgroundColor: varAlpha(\n (theme.vars?.palette[color] as { mainChannel?: string })?.mainChannel ?? '51 133 240',\n 0.12\n ),\n },\n },\n })),\n ],\n }),\n sizeSmall: {\n '& svg': { fontSize: 16 },\n },\n sizeMedium: {\n '& svg': { fontSize: 20 },\n },\n },\n };\n}\n\n/**\n * Create Radio overrides.\n * Uses radioClasses constants and color === 'default' variant per reference.\n */\nexport function createRadioOverrides(config: ComponentsConfig): Components<Theme>['MuiRadio'] {\n return {\n defaultProps: {\n size: config.density === 'compact' ? 'small' : 'medium',\n },\n styleOverrides: {\n root: ({ theme }) => ({\n padding: theme.spacing(1),\n variants: [\n {\n props: (props) => props.color === 'default',\n style: {\n [`&.${radioClasses.checked}`]: {\n color: theme.vars?.palette.text.primary,\n },\n },\n },\n ],\n }),\n },\n };\n}\n\n/**\n * Create Switch overrides with refined styling.\n * Uses switchClasses constants, variants on switchBase slot, and size variants on root.\n */\nexport function createSwitchOverrides(config: ComponentsConfig): Components<Theme>['MuiSwitch'] {\n return {\n defaultProps: {\n size: config.density === 'compact' ? 'small' : 'medium',\n },\n styleOverrides: {\n root: {\n alignItems: 'center',\n variants: [...switchSizeVariants],\n },\n switchBase: {\n top: 'auto',\n left: '6px',\n variants: [...switchColorVariants, ...switchCheckedVariants, ...switchDisabledVariants],\n },\n thumb: ({ theme }) => ({\n width: SWITCH_DIMENSIONS.medium.thumb,\n height: SWITCH_DIMENSIONS.medium.thumb,\n color: theme.vars?.palette.common.white,\n }),\n track: ({ theme }) => ({\n height: SWITCH_DIMENSIONS.medium.track,\n borderRadius: SWITCH_DIMENSIONS.medium.trackRadius,\n backgroundColor: varAlpha(getGreyChannel(theme), 0.48),\n opacity: 1,\n }),\n },\n };\n}\n\n/**\n * Create FormLabel overrides.\n * Applies label styles to Checkbox, RadioGroup, Switch.\n */\nexport function createFormLabelOverrides(_config: ComponentsConfig): Components<Theme>['MuiFormLabel'] {\n return {\n styleOverrides: {\n root: ({ theme }) => ({\n [`&.${formLabelClasses.disabled}`]: {\n color: theme.vars?.palette.action.disabled,\n },\n variants: [\n {\n props: (props) => !props.error,\n style: {\n [`&.${formLabelClasses.focused}`]: {\n color: theme.vars?.palette.text.secondary,\n },\n },\n },\n ],\n }),\n },\n };\n}\n\n/**\n * Create FormControlLabel overrides.\n */\nexport function createFormControlLabelOverrides(_config: ComponentsConfig): Components<Theme>['MuiFormControlLabel'] {\n return {\n styleOverrides: {\n label: ({ theme }) => ({\n ...theme.typography.body2,\n }),\n },\n };\n}\n\n/**\n * Create FormControl overrides.\n */\nexport function createFormControlOverrides(_config: ComponentsConfig): Components<Theme>['MuiFormControl'] {\n return {\n defaultProps: {\n variant: 'outlined',\n },\n styleOverrides: {\n root: {\n '& .MuiFormLabel-root': {\n marginBottom: 8,\n },\n },\n },\n };\n}\n","/**\n * Tabs Component Overrides\n *\n * MUI v7 best practices: typed class selectors, ComponentsVariants,\n * density-aware sizing via shared getDensityMultiplier.\n *\n * @module @omnitron-dev/prism/theme/components/Tabs\n */\n\nimport type { Theme, Components, ComponentsVariants } from '@mui/material/styles';\nimport type { ComponentsConfig } from '../../types/theme.js';\n\nimport { tabClasses } from '@mui/material/Tab';\nimport { svgIconClasses } from '@mui/material/SvgIcon';\nimport { getDensityMultiplier } from './theme-utils.js';\n\n// =============================================================================\n// VARIANT TYPES\n// =============================================================================\n\ntype TabsVariants = ComponentsVariants<Theme>['MuiTabs'];\ntype TabVariants = ComponentsVariants<Theme>['MuiTab'];\n\n// =============================================================================\n// VARIANTS\n// =============================================================================\n\nconst tabsVariants = {\n root: [\n {\n props: (props: { indicatorColor?: string }) => props.indicatorColor === 'inherit',\n style: {\n '& .MuiTabs-indicator': {\n backgroundColor: 'currentColor',\n },\n },\n },\n ] satisfies TabsVariants,\n list: [\n {\n props: {},\n style: ({ theme }) => ({\n gap: theme.spacing(1),\n }),\n },\n ] satisfies TabsVariants,\n};\n\nconst tabVariants = [\n {\n props: {},\n style: ({ theme }) => ({\n [`&.${tabClasses.selected}`]: {\n fontWeight: 600,\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n },\n }),\n },\n {\n props: (props) => !!props.icon && !!props.label,\n style: {\n minHeight: 'auto',\n },\n },\n] satisfies TabVariants;\n\n// =============================================================================\n// COMPONENT OVERRIDES\n// =============================================================================\n\n/**\n * Create Tabs overrides.\n * Density-aware compact dimensions with indicator styling.\n */\nexport function createTabsOverrides(config: ComponentsConfig): Components<Theme>['MuiTabs'] {\n const dm = getDensityMultiplier(config.density);\n\n return {\n defaultProps: {\n variant: 'scrollable',\n textColor: 'inherit',\n indicatorColor: 'primary',\n allowScrollButtonsMobile: true,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n minHeight: 36 * dm,\n variants: [...tabsVariants.root],\n }),\n list: {\n variants: [...tabsVariants.list],\n },\n indicator: {\n borderRadius: 2,\n },\n },\n };\n}\n\n/**\n * Create Tab overrides.\n * Compact styling with typed class selectors for selected state and icon sizing.\n */\nexport function createTabOverrides(config: ComponentsConfig): Components<Theme>['MuiTab'] {\n const dm = getDensityMultiplier(config.density);\n\n return {\n defaultProps: {\n disableRipple: true,\n iconPosition: 'start',\n },\n styleOverrides: {\n root: ({ theme }) => ({\n padding: 8 * dm,\n minHeight: 36 * dm,\n minWidth: 36 * dm,\n opacity: 1,\n textTransform: 'none',\n fontWeight: theme.typography.fontWeightMedium,\n color: theme.vars?.palette.text.secondary || theme.palette.text.secondary,\n lineHeight: theme.typography.body2.lineHeight,\n [`& .${svgIconClasses.root}`]: {\n fontSize: 20,\n },\n variants: [...tabVariants],\n }),\n },\n };\n}\n","/**\n * Component Overrides\n *\n * MUI component customizations for Prism themes.\n * Combines best practices from Minimals and Aurora templates.\n *\n * Key Features:\n * - Density-based spacing (compact/standard/comfortable)\n * - Custom variants (soft, dashed, shapes)\n * - Refined input styling with proper typography\n * - Custom checkbox/radio/switch icons\n * - Full CSS variable integration\n *\n * @module @omnitron-dev/prism/theme/components\n */\n\nimport type { Components, Theme } from '@mui/material/styles';\nimport type { ComponentsConfig } from '../../types/theme.js';\n\nimport { iconButtonClasses } from '@mui/material/IconButton';\nimport { accordionClasses } from '@mui/material/Accordion';\nimport { accordionSummaryClasses } from '@mui/material/AccordionSummary';\nimport { autocompleteClasses } from '@mui/material/Autocomplete';\nimport { svgIconClasses } from '@mui/material/SvgIcon';\nimport { tableRowClasses } from '@mui/material/TableRow';\nimport { tableCellClasses } from '@mui/material/TableCell';\nimport { stepIconClasses } from '@mui/material/StepIcon';\nimport { stepLabelClasses } from '@mui/material/StepLabel';\nimport { toggleButtonClasses } from '@mui/material/ToggleButton';\nimport { paginationItemClasses } from '@mui/material/PaginationItem';\n\nimport { getGreyChannel, getColorChannel, getDensityMultiplier } from './theme-utils.js';\nimport { createButtonOverrides, createButtonBaseOverrides, createButtonGroupOverrides } from './Button.js';\nimport { createChipOverrides } from './Chip.js';\nimport {\n createInputBaseOverrides,\n createInputOverrides,\n createOutlinedInputOverrides,\n createFilledInputOverrides,\n createTextFieldOverrides,\n createInputLabelOverrides,\n createFormHelperTextOverrides,\n} from './TextField.js';\nimport {\n createCheckboxOverrides,\n createRadioOverrides,\n createSwitchOverrides,\n createFormControlLabelOverrides,\n createFormControlOverrides,\n createFormLabelOverrides,\n} from './FormControls.js';\nimport { createTabsOverrides, createTabOverrides } from './Tabs.js';\n\n// =============================================================================\n// MAIN EXPORT\n// =============================================================================\n\n/**\n * Generate MUI component overrides based on configuration.\n * Combines best practices from Minimals (refined inputs, custom shadows)\n * and Aurora (compact dimensions, shape variants).\n *\n * @param config - Components configuration\n * @returns MUI components overrides\n */\nexport function componentOverrides(config: ComponentsConfig): Components<Theme> & Record<string, unknown> {\n const { density, borderRadius } = config;\n const dm = getDensityMultiplier(density);\n\n return {\n // =========================================================================\n // BUTTONS (Modular)\n // =========================================================================\n MuiButton: createButtonOverrides(config),\n MuiButtonBase: createButtonBaseOverrides(),\n MuiButtonGroup: createButtonGroupOverrides(config),\n\n // =========================================================================\n // ICON BUTTON\n // =========================================================================\n MuiIconButton: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius,\n '&:hover': {\n backgroundColor: theme.vars?.palette.action.hover || theme.palette.action.hover,\n },\n }),\n },\n },\n MuiInputAdornment: {\n styleOverrides: {\n root: {\n [`& .${iconButtonClasses.root}:hover`]: {\n backgroundColor: 'transparent',\n },\n },\n },\n },\n\n // =========================================================================\n // FAB\n // =========================================================================\n MuiFab: {\n defaultProps: {\n color: 'primary',\n },\n styleOverrides: {\n root: ({ theme }) => ({\n boxShadow: `0 8px 16px 0 rgba(${getColorChannel(theme, 'primary')} / 0.24)`,\n '&:hover': {\n boxShadow: `0 8px 16px 0 rgba(${getColorChannel(theme, 'primary')} / 0.32)`,\n },\n }),\n },\n },\n\n // =========================================================================\n // INPUTS (Refined - from Minimals patterns)\n // =========================================================================\n MuiInputBase: createInputBaseOverrides(config),\n MuiInput: createInputOverrides(config),\n MuiTextField: createTextFieldOverrides(config),\n MuiOutlinedInput: createOutlinedInputOverrides(config),\n MuiFilledInput: createFilledInputOverrides(config),\n MuiInputLabel: createInputLabelOverrides(config),\n MuiFormHelperText: createFormHelperTextOverrides(config),\n MuiSelect: {\n styleOverrides: {\n select: {\n // Reset minHeight so Select matches TextField height exactly.\n minHeight: 'auto',\n display: 'flex',\n alignItems: 'center',\n },\n icon: {\n right: 10,\n width: 18,\n height: 18,\n top: 'calc(50% - 9px)',\n },\n },\n },\n MuiNativeSelect: {\n styleOverrides: {\n icon: {\n right: 10,\n width: 18,\n height: 18,\n top: 'calc(50% - 9px)',\n },\n },\n },\n MuiAutocomplete: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius,\n boxShadow: `0 0 2px 0 rgba(${getGreyChannel(theme)} / 0.24), -20px 20px 40px -4px rgba(${getGreyChannel(theme)} / 0.24)`,\n }),\n listbox: {\n padding: 4,\n },\n option: ({ theme }) => ({\n borderRadius: borderRadius - 2,\n margin: 2,\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: theme.vars?.palette.action.hover || theme.palette.action.hover,\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: theme.vars?.palette.action.selected || theme.palette.action.selected,\n fontWeight: 500,\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: theme.vars?.palette.action.hover || theme.palette.action.hover,\n },\n },\n }),\n popupIndicator: {\n [`& .${svgIconClasses.root}`]: {\n fontSize: 20,\n },\n },\n clearIndicator: {\n [`& .${svgIconClasses.root}`]: {\n fontSize: 18,\n },\n },\n },\n },\n\n // =========================================================================\n // CARDS\n // =========================================================================\n MuiCard: {\n defaultProps: {\n elevation: 0,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n position: 'relative',\n zIndex: 0, // Safari stacking context fix\n borderRadius: borderRadius * 1.5,\n border: `1px solid ${theme.vars?.palette.divider || theme.palette.divider}`,\n backgroundImage: 'none',\n boxShadow: `0 0 2px 0 rgba(${getGreyChannel(theme)} / 0.2), 0 12px 24px -4px rgba(${getGreyChannel(theme)} / 0.12)`,\n }),\n },\n },\n MuiCardHeader: {\n defaultProps: {\n titleTypographyProps: { variant: 'h6' },\n subheaderTypographyProps: { variant: 'body2' },\n },\n styleOverrides: {\n root: {\n padding: `${16 * dm}px ${20 * dm}px`,\n },\n title: ({ theme }) => ({\n fontSize: theme.typography.pxToRem(16),\n fontWeight: 600,\n lineHeight: 1.5,\n }),\n subheader: ({ theme }) => ({\n fontSize: theme.typography.pxToRem(14),\n lineHeight: 22 / 14,\n color: theme.vars?.palette.text.secondary || theme.palette.text.secondary,\n }),\n },\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: `${16 * dm}px ${20 * dm}px`,\n '&:last-child': {\n paddingBottom: 16 * dm,\n },\n },\n },\n },\n MuiCardActions: {\n styleOverrides: {\n root: {\n padding: `${12 * dm}px ${20 * dm}px`,\n gap: 8,\n },\n },\n },\n\n // =========================================================================\n // PAPER & SURFACES\n // =========================================================================\n MuiPaper: {\n defaultProps: {\n elevation: 0,\n },\n styleOverrides: {\n root: {\n backgroundImage: 'none',\n },\n rounded: {\n borderRadius: borderRadius * 1.5,\n },\n outlined: ({ theme }) => ({\n borderColor: `rgba(${getGreyChannel(theme)} / 0.16)`,\n }),\n elevation1: ({ theme }) => ({\n boxShadow: `0 1px 2px 0 rgba(${getGreyChannel(theme, '900')} / 0.08)`,\n }),\n elevation2: ({ theme }) => ({\n boxShadow: `0 2px 4px 0 rgba(${getGreyChannel(theme, '900')} / 0.08), 0 1px 2px 0 rgba(${getGreyChannel(theme, '900')} / 0.04)`,\n }),\n elevation3: ({ theme }) => ({\n boxShadow: `0 4px 8px 0 rgba(${getGreyChannel(theme, '900')} / 0.08), 0 2px 4px 0 rgba(${getGreyChannel(theme, '900')} / 0.04)`,\n }),\n elevation4: ({ theme }) => ({\n boxShadow: `0 8px 16px 0 rgba(${getGreyChannel(theme, '900')} / 0.08), 0 4px 8px 0 rgba(${getGreyChannel(theme, '900')} / 0.04)`,\n }),\n elevation5: ({ theme }) => ({\n boxShadow: `0 12px 24px -4px rgba(${getGreyChannel(theme, '900')} / 0.08), 0 8px 16px 0 rgba(${getGreyChannel(theme, '900')} / 0.04)`,\n }),\n },\n },\n\n // =========================================================================\n // DIALOGS\n // =========================================================================\n MuiDialog: {\n styleOverrides: {\n paper: ({ theme }) => ({\n boxShadow: `0 24px 48px -12px rgba(${getGreyChannel(theme, '900')} / 0.24)`,\n // Mobile-first: fullscreen on < sm (600px)\n [theme.breakpoints.down('sm')]: {\n margin: 0,\n width: '100% !important',\n maxWidth: 'none !important',\n maxHeight: 'none !important',\n height: '100%',\n borderRadius: '0 !important',\n },\n variants: [\n {\n props: (props: Record<string, unknown>) => !props.fullScreen,\n style: {\n borderRadius: borderRadius * 2,\n [theme.breakpoints.up('sm')]: {\n margin: theme.spacing(2),\n },\n },\n },\n ],\n }),\n },\n },\n MuiDialogTitle: {\n styleOverrides: {\n root: ({ theme }) => ({\n padding: `${20 * dm}px ${24 * dm}px`,\n fontSize: theme.typography.pxToRem(18),\n fontWeight: 600,\n lineHeight: 28 / 18,\n }),\n },\n },\n MuiDialogContent: {\n styleOverrides: {\n root: {\n padding: `${16 * dm}px ${24 * dm}px`,\n },\n },\n },\n MuiDialogActions: {\n styleOverrides: {\n root: {\n padding: `${16 * dm}px ${24 * dm}px`,\n gap: 8,\n },\n },\n },\n\n // =========================================================================\n // NAVIGATION\n // =========================================================================\n MuiDrawer: {\n styleOverrides: {\n paper: {\n backgroundImage: 'none',\n },\n },\n },\n MuiAppBar: {\n defaultProps: {\n elevation: 0,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundImage: 'none',\n borderBottom: `1px solid ${theme.vars?.palette.divider || theme.palette.divider}`,\n }),\n },\n },\n // Tabs (Refined - combining Aurora compact + Minimals indicators)\n MuiTabs: createTabsOverrides(config),\n MuiTab: createTabOverrides(config),\n MuiBreadcrumbs: {\n styleOverrides: {\n separator: {\n marginLeft: 8,\n marginRight: 8,\n },\n },\n },\n\n // =========================================================================\n // ACCORDION\n // =========================================================================\n MuiAccordion: {\n defaultProps: {\n disableGutters: true,\n elevation: 0,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n border: `1px solid ${theme.vars?.palette.divider || theme.palette.divider}`,\n borderRadius,\n '&::before': {\n display: 'none',\n },\n '&:first-of-type': {\n borderTopLeftRadius: borderRadius,\n borderTopRightRadius: borderRadius,\n },\n '&:last-of-type': {\n borderBottomLeftRadius: borderRadius,\n borderBottomRightRadius: borderRadius,\n },\n '&:not(:last-of-type)': {\n borderBottom: 0,\n },\n [`&.${accordionClasses.expanded}`]: {\n margin: 0,\n '&:first-of-type': { marginTop: 0 },\n '&:last-of-type': { marginBottom: 0 },\n },\n [`&.${accordionClasses.disabled}`]: {\n backgroundColor: 'transparent',\n },\n }),\n },\n },\n MuiAccordionSummary: {\n styleOverrides: {\n root: ({ theme }) => ({\n minHeight: 48 * dm,\n padding: `0 ${16 * dm}px`,\n fontWeight: 500,\n [`&.${accordionSummaryClasses.expanded}`]: {\n minHeight: 48 * dm,\n },\n [`&.${accordionSummaryClasses.disabled}`]: {\n opacity: 0.5,\n },\n }),\n content: {\n margin: `${12 * dm}px 0`,\n [`&.${accordionSummaryClasses.expanded}`]: {\n margin: `${12 * dm}px 0`,\n },\n },\n expandIconWrapper: ({ theme }) => ({\n color: theme.vars?.palette.text.secondary || theme.palette.text.secondary,\n }),\n },\n },\n MuiAccordionDetails: {\n styleOverrides: {\n root: ({ theme }) => ({\n padding: `${8 * dm}px ${16 * dm}px ${16 * dm}px`,\n borderTop: `1px solid ${theme.vars?.palette.divider || theme.palette.divider}`,\n }),\n },\n },\n\n // =========================================================================\n // STEPPER\n // =========================================================================\n MuiStep: {\n styleOverrides: {\n root: {\n padding: 0,\n },\n },\n },\n MuiStepLabel: {\n styleOverrides: {\n label: ({ theme }) => ({\n fontSize: theme.typography.pxToRem(14),\n fontWeight: 500,\n [`&.${stepLabelClasses.active}`]: {\n fontWeight: 600,\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n },\n [`&.${stepLabelClasses.completed}`]: {\n fontWeight: 500,\n color: theme.vars?.palette.text.primary || theme.palette.text.primary,\n },\n }),\n iconContainer: {\n paddingRight: 12 * dm,\n },\n },\n },\n MuiStepConnector: {\n styleOverrides: {\n line: ({ theme }) => ({\n borderColor: theme.vars?.palette.divider || theme.palette.divider,\n borderTopWidth: 2,\n }),\n },\n },\n MuiStepIcon: {\n styleOverrides: {\n root: ({ theme }) => ({\n color: theme.vars?.palette.grey?.[300] || theme.palette.grey[300],\n [`&.${stepIconClasses.active}`]: {\n color: theme.vars?.palette.primary.main || theme.palette.primary.main,\n },\n [`&.${stepIconClasses.completed}`]: {\n color: theme.vars?.palette.primary.main || theme.palette.primary.main,\n },\n }),\n text: {\n fontWeight: 600,\n fontSize: '0.75rem',\n },\n },\n },\n MuiStepContent: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderLeft: `2px solid ${theme.vars?.palette.divider || theme.palette.divider}`,\n marginLeft: 11,\n paddingLeft: 20,\n paddingRight: 8,\n }),\n },\n },\n\n // =========================================================================\n // PAGINATION\n // =========================================================================\n MuiPagination: {\n defaultProps: {\n shape: 'rounded',\n size: density === 'compact' ? 'small' : 'medium',\n },\n },\n MuiPaginationItem: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: borderRadius - 2,\n fontWeight: 500,\n [`&.${paginationItemClasses.selected}`]: {\n fontWeight: 600,\n },\n }),\n outlined: ({ theme }) => ({\n borderColor: theme.vars?.palette.divider || theme.palette.divider,\n [`&.${paginationItemClasses.selected}`]: {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.08)`,\n borderColor: theme.vars?.palette.primary.main || theme.palette.primary.main,\n },\n }),\n text: ({ theme }) => ({\n [`&.${paginationItemClasses.selected}`]: {\n backgroundColor: theme.vars?.palette.primary.main || theme.palette.primary.main,\n color: theme.vars?.palette.primary.contrastText || theme.palette.primary.contrastText,\n '&:hover': {\n backgroundColor: theme.vars?.palette.primary.dark || theme.palette.primary.dark,\n },\n },\n }),\n previousNext: ({ theme }) => ({\n borderRadius: borderRadius - 2,\n '&:hover': {\n backgroundColor: theme.vars?.palette.action.hover || theme.palette.action.hover,\n },\n }),\n firstLast: ({ theme }) => ({\n borderRadius: borderRadius - 2,\n }),\n },\n },\n\n // =========================================================================\n // DATA DISPLAY\n // =========================================================================\n MuiChip: createChipOverrides(config),\n MuiAvatar: {\n styleOverrides: {\n root: ({ theme }) => ({\n fontSize: theme.typography.pxToRem(14),\n fontWeight: 600,\n }),\n },\n },\n MuiBadge: {\n styleOverrides: {\n badge: {\n fontWeight: 600,\n },\n },\n },\n MuiTooltip: {\n defaultProps: {\n arrow: true,\n },\n styleOverrides: {\n tooltip: ({ theme }) => ({\n borderRadius: borderRadius - 2,\n fontSize: theme.typography.pxToRem(12),\n padding: '6px 12px',\n backgroundColor: theme.vars?.palette.grey?.[800] || theme.palette.grey[800],\n }),\n arrow: ({ theme }) => ({\n color: theme.vars?.palette.grey?.[800] || theme.palette.grey[800],\n }),\n },\n },\n\n // =========================================================================\n // TABLES\n // =========================================================================\n MuiTableContainer: {\n styleOverrides: {\n root: {\n position: 'relative',\n },\n },\n },\n MuiTableHead: {\n styleOverrides: {\n root: ({ theme }) => ({\n [`& .${tableCellClasses.head}`]: {\n fontWeight: 600,\n backgroundColor: theme.vars?.palette.background.neutral || theme.palette.grey[50],\n color: theme.vars?.palette.text.secondary || theme.palette.text.secondary,\n },\n }),\n },\n },\n MuiTableCell: {\n styleOverrides: {\n root: ({ theme }) => ({\n padding: `${12 * dm}px ${16 * dm}px`,\n borderBottomColor: `rgba(${getGreyChannel(theme)} / 0.2)`,\n }),\n sizeSmall: {\n padding: `${8 * dm}px ${12 * dm}px`,\n },\n },\n },\n MuiTableRow: {\n styleOverrides: {\n root: ({ theme }) => ({\n [`&:last-child .${tableCellClasses.root}`]: {\n borderBottom: 'none',\n },\n [`&.${tableRowClasses.selected}`]: {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.08)`,\n '&:hover': {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.12)`,\n },\n },\n }),\n },\n },\n MuiTablePagination: {\n defaultProps: {\n backIconButtonProps: { size: 'small' },\n nextIconButtonProps: { size: 'small' },\n slotProps: { select: { name: 'table-pagination-select' } },\n },\n styleOverrides: {\n root: ({ theme }) => ({\n borderTop: `1px solid ${theme.vars?.palette.divider || theme.palette.divider}`,\n }),\n toolbar: {\n minHeight: 44 * dm,\n paddingLeft: 8 * dm,\n paddingRight: 8 * dm,\n },\n actions: {\n marginRight: 8,\n },\n select: {\n display: 'flex',\n alignItems: 'center',\n },\n selectIcon: {\n right: 4,\n width: 16,\n height: 16,\n top: 'calc(50% - 8px)',\n },\n selectLabel: ({ theme }) => ({\n ...theme.typography.body2,\n }),\n displayedRows: ({ theme }) => ({\n ...theme.typography.body2,\n }),\n },\n },\n\n // =========================================================================\n // FEEDBACK\n // =========================================================================\n MuiAlert: {\n styleOverrides: {\n root: {\n borderRadius,\n },\n standardSuccess: ({ theme }) => ({\n backgroundColor: `rgba(${getColorChannel(theme, 'success')} / 0.08)`,\n color: theme.vars?.palette.success.dark || theme.palette.success.dark,\n }),\n standardError: ({ theme }) => ({\n backgroundColor: `rgba(${getColorChannel(theme, 'error')} / 0.08)`,\n color: theme.vars?.palette.error.dark || theme.palette.error.dark,\n }),\n standardWarning: ({ theme }) => ({\n backgroundColor: `rgba(${getColorChannel(theme, 'warning')} / 0.08)`,\n color: theme.vars?.palette.warning.dark || theme.palette.warning.dark,\n }),\n standardInfo: ({ theme }) => ({\n backgroundColor: `rgba(${getColorChannel(theme, 'info')} / 0.08)`,\n color: theme.vars?.palette.info.dark || theme.palette.info.dark,\n }),\n },\n },\n MuiSnackbar: {\n styleOverrides: {\n root: {\n '& .MuiPaper-root': {\n borderRadius,\n },\n },\n },\n },\n MuiLinearProgress: {\n styleOverrides: {\n root: {\n borderRadius: 4,\n height: 6,\n },\n },\n },\n\n // =========================================================================\n // SLIDER\n // =========================================================================\n MuiSlider: {\n defaultProps: {\n size: density === 'compact' ? 'small' : 'medium',\n },\n styleOverrides: {\n root: ({ theme }) => ({\n '&.Mui-disabled': {\n color: theme.vars?.palette.action.disabled || theme.palette.action.disabled,\n },\n }),\n rail: ({ theme }) => ({\n opacity: 0.32,\n backgroundColor: theme.vars?.palette.grey?.[500] || theme.palette.grey[500],\n }),\n track: {\n border: 'none',\n },\n thumb: ({ theme }) => ({\n width: density === 'compact' ? 16 : 20,\n height: density === 'compact' ? 16 : 20,\n backgroundColor: theme.vars?.palette.common.white || theme.palette.common.white,\n border: '2px solid currentColor',\n boxShadow: `0 1px 3px 0 rgba(${getGreyChannel(theme, '900')} / 0.2)`,\n '&::before': {\n display: 'none',\n },\n '&:hover, &.Mui-focusVisible': {\n boxShadow: `0 0 0 8px rgba(${getColorChannel(theme, 'primary')} / 0.16)`,\n },\n '&.Mui-active': {\n boxShadow: `0 0 0 12px rgba(${getColorChannel(theme, 'primary')} / 0.24)`,\n },\n }),\n valueLabel: ({ theme }) => ({\n borderRadius: borderRadius - 2,\n backgroundColor: theme.vars?.palette.grey?.[800] || theme.palette.grey[800],\n '&::before': {\n display: 'none',\n },\n }),\n mark: ({ theme }) => ({\n width: 4,\n height: 4,\n borderRadius: '50%',\n backgroundColor: theme.vars?.palette.grey?.[400] || theme.palette.grey[400],\n }),\n markActive: ({ theme }) => ({\n backgroundColor: theme.vars?.palette.common.white || theme.palette.common.white,\n }),\n },\n },\n\n // =========================================================================\n // RATING\n // =========================================================================\n MuiRating: {\n defaultProps: {\n size: density === 'compact' ? 'small' : 'medium',\n emptyIcon: undefined, // Use default empty icon\n },\n styleOverrides: {\n root: ({ theme }) => ({\n '&.Mui-disabled': {\n opacity: 0.48,\n },\n }),\n icon: {\n fontSize: 'inherit',\n },\n iconEmpty: ({ theme }) => ({\n color: theme.vars?.palette.grey?.[300] || theme.palette.grey[300],\n }),\n iconFilled: ({ theme }) => ({\n color: theme.vars?.palette.warning.main || theme.palette.warning.main,\n }),\n iconHover: ({ theme }) => ({\n color: theme.vars?.palette.warning.dark || theme.palette.warning.dark,\n }),\n sizeSmall: {\n fontSize: '1.125rem',\n },\n sizeMedium: {\n fontSize: '1.5rem',\n },\n sizeLarge: {\n fontSize: '2rem',\n },\n },\n },\n\n // =========================================================================\n // FORMS (Refined - with custom icons)\n // =========================================================================\n MuiCheckbox: createCheckboxOverrides(config),\n MuiRadio: createRadioOverrides(config),\n MuiSwitch: createSwitchOverrides(config),\n MuiFormControl: createFormControlOverrides(config),\n MuiFormControlLabel: createFormControlLabelOverrides(config),\n MuiFormLabel: createFormLabelOverrides(config),\n\n // =========================================================================\n // LISTS\n // =========================================================================\n MuiListItemButton: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: borderRadius - 2,\n margin: 2,\n '&.Mui-selected': {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.08)`,\n fontWeight: 500,\n },\n '&:hover': {\n backgroundColor: theme.vars?.palette.action.hover || theme.palette.action.hover,\n },\n }),\n },\n },\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n minWidth: 40,\n },\n },\n },\n\n // =========================================================================\n // MENUS (Refined - with proper menu item styles)\n // =========================================================================\n MuiMenu: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius,\n marginTop: 4,\n boxShadow: `0 0 2px 0 rgba(${getGreyChannel(theme)} / 0.24), -20px 20px 40px -4px rgba(${getGreyChannel(theme)} / 0.24)`,\n }),\n list: {\n padding: 4,\n },\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: ({ theme }) => ({\n ...theme.typography.body2,\n borderRadius: borderRadius - 2,\n margin: 2,\n padding: `${8 * dm}px ${12 * dm}px`,\n '&:not(:last-of-type)': {\n marginBottom: 4,\n },\n '&.Mui-selected': {\n fontWeight: 500,\n backgroundColor: theme.vars?.palette.action.selected || theme.palette.action.selected,\n '&:hover': {\n backgroundColor: theme.vars?.palette.action.hover || theme.palette.action.hover,\n },\n },\n }),\n },\n },\n MuiPopover: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius,\n boxShadow: `0 0 2px 0 rgba(${getGreyChannel(theme)} / 0.24), -20px 20px 40px -4px rgba(${getGreyChannel(theme)} / 0.24)`,\n }),\n },\n },\n\n // =========================================================================\n // MISC\n // =========================================================================\n MuiDivider: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderColor: `rgba(${getGreyChannel(theme)} / 0.2)`,\n }),\n },\n },\n MuiSkeleton: {\n styleOverrides: {\n rounded: {\n borderRadius,\n },\n },\n },\n MuiBackdrop: {\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundColor: `rgba(${getGreyChannel(theme, '900')} / 0.5)`,\n }),\n },\n },\n\n // =========================================================================\n // LINK\n // =========================================================================\n MuiLink: {\n defaultProps: {\n underline: 'hover',\n },\n styleOverrides: {\n root: ({ theme }) => ({\n color: theme.vars?.palette.primary.main || theme.palette.primary.main,\n textDecorationColor: 'transparent',\n transition: 'color 150ms, text-decoration-color 150ms',\n '&:hover': {\n textDecorationColor: 'currentColor',\n },\n }),\n },\n },\n\n // =========================================================================\n // TOGGLE BUTTON\n // =========================================================================\n MuiToggleButton: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius,\n fontWeight: 500,\n textTransform: 'none' as const,\n border: `1px solid ${theme.vars?.palette.divider || theme.palette.divider}`,\n [`&.${toggleButtonClasses.selected}`]: {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.08)`,\n borderColor: theme.vars?.palette.primary.main || theme.palette.primary.main,\n color: theme.vars?.palette.primary.main || theme.palette.primary.main,\n '&:hover': {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.16)`,\n },\n },\n [`&.${toggleButtonClasses.disabled}`]: {\n borderColor: theme.vars?.palette.action.disabledBackground || theme.palette.action.disabledBackground,\n },\n }),\n sizeSmall: {\n padding: `${4 * dm}px ${8 * dm}px`,\n fontSize: '0.8125rem',\n },\n sizeMedium: {\n padding: `${6 * dm}px ${12 * dm}px`,\n },\n sizeLarge: {\n padding: `${8 * dm}px ${16 * dm}px`,\n fontSize: '0.9375rem',\n },\n },\n },\n MuiToggleButtonGroup: {\n styleOverrides: {\n root: {\n gap: 4,\n '& .MuiToggleButton-root': {\n border: '1px solid',\n borderRadius: `${borderRadius}px !important`,\n },\n },\n grouped: {\n '&:not(:first-of-type)': {\n marginLeft: 0,\n borderLeft: '1px solid',\n },\n },\n },\n },\n\n // =========================================================================\n // TIMELINE\n // =========================================================================\n MuiTimeline: {\n styleOverrides: {\n root: {\n padding: 0,\n },\n },\n },\n MuiTimelineItem: {\n styleOverrides: {\n root: {\n '&::before': {\n display: 'none',\n },\n },\n },\n },\n MuiTimelineDot: {\n styleOverrides: {\n root: ({ theme }: { theme: Theme }) => ({\n boxShadow: 'none',\n borderColor: 'transparent',\n padding: 3,\n }),\n outlined: ({ theme }: { theme: Theme }) => ({\n borderColor: theme.vars?.palette.divider || theme.palette.divider,\n backgroundColor: 'transparent',\n }),\n },\n },\n MuiTimelineConnector: {\n styleOverrides: {\n root: ({ theme }: { theme: Theme }) => ({\n backgroundColor: theme.vars?.palette.divider || theme.palette.divider,\n width: 2,\n }),\n },\n },\n MuiTimelineContent: {\n styleOverrides: {\n root: ({ theme }: { theme: Theme }) => ({\n ...theme.typography.body2,\n padding: `${6 * dm}px ${16 * dm}px`,\n }),\n },\n },\n\n // =========================================================================\n // DATA GRID (MUI X)\n // =========================================================================\n MuiDataGrid: {\n styleOverrides: {\n root: ({ theme }: { theme: Theme }) => ({\n border: 'none',\n borderRadius,\n '--DataGrid-containerBackground': theme.vars?.palette.background.neutral || theme.palette.grey[50],\n '--DataGrid-pinnedBackground': theme.vars?.palette.background.paper || theme.palette.background.paper,\n '& .MuiDataGrid-columnHeaders': {\n borderBottom: `1px solid ${theme.vars?.palette.divider || theme.palette.divider}`,\n },\n '& .MuiDataGrid-columnHeader': {\n fontWeight: 600,\n fontSize: theme.typography.pxToRem(14),\n color: theme.vars?.palette.text.secondary || theme.palette.text.secondary,\n '&:focus, &:focus-within': {\n outline: 'none',\n },\n },\n '& .MuiDataGrid-cell': {\n borderBottom: `1px solid rgba(${getGreyChannel(theme)} / 0.12)`,\n '&:focus, &:focus-within': {\n outline: 'none',\n },\n },\n '& .MuiDataGrid-row': {\n '&:hover': {\n backgroundColor: theme.vars?.palette.action.hover || theme.palette.action.hover,\n },\n '&.Mui-selected': {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.08)`,\n '&:hover': {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.12)`,\n },\n },\n },\n '& .MuiDataGrid-footerContainer': {\n borderTop: `1px solid ${theme.vars?.palette.divider || theme.palette.divider}`,\n },\n '& .MuiDataGrid-selectedRowCount': {\n whiteSpace: 'nowrap',\n },\n '& .MuiDataGrid-toolbarContainer': {\n padding: theme.spacing(1.5, 1.5, 0.5),\n gap: theme.spacing(1),\n },\n '& .MuiDataGrid-columnSeparator': {\n color: theme.vars?.palette.divider || theme.palette.divider,\n },\n }),\n },\n },\n\n // =========================================================================\n // DATE/TIME PICKERS (MUI X)\n // =========================================================================\n MuiDatePicker: {\n defaultProps: {\n slotProps: {\n openPickerButton: {\n size: density === 'compact' ? 'small' : 'medium',\n },\n },\n },\n },\n MuiPickersLayout: {\n styleOverrides: {\n root: ({ theme }: { theme: Theme }) => ({\n '& .MuiPickersLayout-actionBar': {\n padding: theme.spacing(1, 2),\n },\n }),\n },\n },\n MuiPickersDay: {\n styleOverrides: {\n root: ({ theme }: { theme: Theme }) => ({\n borderRadius: borderRadius - 2,\n fontWeight: 400,\n '&.Mui-selected': {\n fontWeight: 600,\n },\n }),\n today: ({ theme }: { theme: Theme }) => ({\n borderColor: theme.vars?.palette.primary.main || theme.palette.primary.main,\n '&:not(.Mui-selected)': {\n backgroundColor: 'transparent',\n },\n }),\n },\n },\n MuiPickersYear: {\n styleOverrides: {\n yearButton: ({ theme }: { theme: Theme }) => ({\n borderRadius,\n '&.Mui-selected': {\n fontWeight: 600,\n },\n }),\n },\n },\n MuiPickersMonth: {\n styleOverrides: {\n monthButton: ({ theme }: { theme: Theme }) => ({\n borderRadius,\n '&.Mui-selected': {\n fontWeight: 600,\n },\n }),\n },\n },\n\n // =========================================================================\n // TREE VIEW (MUI X)\n // =========================================================================\n MuiTreeItem: {\n styleOverrides: {\n root: {\n // Default styling\n },\n content: ({ theme }: { theme: Theme }) => ({\n borderRadius: borderRadius - 2,\n padding: `${4 * dm}px ${8 * dm}px`,\n '&.Mui-selected': {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.08)`,\n '&:hover': {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.16)`,\n },\n '&.Mui-focused': {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.12)`,\n },\n },\n '&:hover': {\n backgroundColor: theme.vars?.palette.action.hover || theme.palette.action.hover,\n },\n }),\n label: ({ theme }: { theme: Theme }) => ({\n ...theme.typography.body2,\n fontWeight: 500,\n }),\n iconContainer: {\n width: 'auto',\n },\n },\n },\n\n MuiCssBaseline: {\n styleOverrides: (theme) => ({\n html: {\n scrollBehavior: 'smooth',\n },\n body: {\n scrollbarWidth: 'thin',\n scrollbarColor: `rgba(${getGreyChannel(theme)} / 0.4) rgba(${getGreyChannel(theme)} / 0.08)`,\n },\n '*, *::before, *::after': {\n boxSizing: 'border-box',\n },\n '#root, #__next': {\n height: '100%',\n },\n // Webkit scrollbar styling\n '::-webkit-scrollbar': {\n width: 6,\n height: 6,\n },\n '::-webkit-scrollbar-track': {\n backgroundColor: 'transparent',\n },\n '::-webkit-scrollbar-thumb': {\n backgroundColor: `rgba(${getGreyChannel(theme)} / 0.4)`,\n borderRadius: 3,\n },\n '::-webkit-scrollbar-thumb:hover': {\n backgroundColor: `rgba(${getGreyChannel(theme)} / 0.6)`,\n },\n // Vision Mode Accessibility Filters\n // These apply SVG color matrix filters to simulate color blindness\n 'html[data-vision=\"protanopia\"]:not([data-showcase])': {\n filter: 'url(\"#protanopia-filter\")',\n },\n 'html[data-vision=\"deuteranopia\"]:not([data-showcase])': {\n filter: 'url(\"#deuteranopia-filter\")',\n },\n 'html[data-vision=\"tritanopia\"]:not([data-showcase])': {\n filter: 'url(\"#tritanopia-filter\")',\n },\n 'html[data-vision=\"achromatopsia\"]:not([data-showcase])': {\n filter: 'url(\"#achromatopsia-filter\")',\n },\n }),\n },\n };\n}\n","/**\n * Shadow System\n *\n * Shadow configuration for Prism themes.\n *\n * @module @omnitron-dev/prism/theme/shadows\n */\n\nimport type { Shadows } from '@mui/material/styles';\n\n/**\n * Default shadows array (MUI expects 25 shadows).\n */\nexport const shadows: Shadows = [\n 'none',\n '0px 1px 2px 0px rgba(0, 0, 0, 0.05)',\n '0px 1px 3px 0px rgba(0, 0, 0, 0.1), 0px 1px 2px -1px rgba(0, 0, 0, 0.1)',\n '0px 4px 6px -1px rgba(0, 0, 0, 0.1), 0px 2px 4px -2px rgba(0, 0, 0, 0.1)',\n '0px 10px 15px -3px rgba(0, 0, 0, 0.1), 0px 4px 6px -4px rgba(0, 0, 0, 0.1)',\n '0px 20px 25px -5px rgba(0, 0, 0, 0.1), 0px 8px 10px -6px rgba(0, 0, 0, 0.1)',\n '0px 25px 50px -12px rgba(0, 0, 0, 0.25)',\n // Cards and dropdowns\n '0px 2px 4px rgba(0, 0, 0, 0.08)',\n '0px 4px 8px rgba(0, 0, 0, 0.08)',\n '0px 8px 16px rgba(0, 0, 0, 0.08)',\n '0px 12px 24px rgba(0, 0, 0, 0.08)',\n '0px 16px 32px rgba(0, 0, 0, 0.08)',\n '0px 20px 40px rgba(0, 0, 0, 0.08)',\n // Modals and dialogs\n '0px 4px 6px -2px rgba(0, 0, 0, 0.05), 0px 10px 15px -3px rgba(0, 0, 0, 0.1)',\n '0px 10px 10px -5px rgba(0, 0, 0, 0.04), 0px 20px 25px -5px rgba(0, 0, 0, 0.1)',\n '0px 20px 20px -10px rgba(0, 0, 0, 0.04), 0px 25px 50px -12px rgba(0, 0, 0, 0.25)',\n // Navigation\n '0px 0px 0px 1px rgba(0, 0, 0, 0.05)',\n '0px 1px 2px rgba(0, 0, 0, 0.05), 0px 0px 0px 1px rgba(0, 0, 0, 0.05)',\n '0px 2px 4px rgba(0, 0, 0, 0.05), 0px 0px 0px 1px rgba(0, 0, 0, 0.05)',\n // Focus rings\n '0px 0px 0px 3px rgba(66, 153, 225, 0.5)',\n '0px 0px 0px 3px rgba(72, 187, 120, 0.5)',\n '0px 0px 0px 3px rgba(245, 101, 101, 0.5)',\n // Inset\n 'inset 0px 2px 4px rgba(0, 0, 0, 0.06)',\n 'inset 0px 4px 6px rgba(0, 0, 0, 0.1)',\n 'inset 0px 0px 0px 1px rgba(0, 0, 0, 0.1)',\n];\n\n/**\n * Create shadows with optional opacity multiplier for dark mode.\n *\n * @param primaryColor - Primary color for tinted shadows (reserved for future)\n * @param opacityMultiplier - Multiplier for shadow opacity (default: 1, use 0.4-0.6 for dark mode)\n * @returns Shadows array with adjusted opacity\n */\nexport function createShadows(primaryColor?: string, opacityMultiplier = 1): Shadows {\n if (opacityMultiplier === 1) {\n return [...shadows] as Shadows;\n }\n\n // Adjust shadow opacity for dark mode\n return shadows.map((shadow) => {\n if (shadow === 'none') return shadow;\n\n // Replace rgba opacity values\n return shadow.replace(/rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([\\d.]+)\\)/g, (_, r, g, b, a) => {\n const newAlpha = Math.min(1, parseFloat(a) * opacityMultiplier);\n return `rgba(${r}, ${g}, ${b}, ${newAlpha.toFixed(2)})`;\n });\n }) as Shadows;\n}\n\n/**\n * Named shadow presets for easier usage.\n */\nexport const shadowPresets = {\n /** No shadow */\n none: shadows[0],\n /** Extra small shadow */\n xs: shadows[1],\n /** Small shadow */\n sm: shadows[2],\n /** Medium shadow */\n md: shadows[3],\n /** Large shadow */\n lg: shadows[4],\n /** Extra large shadow */\n xl: shadows[5],\n /** 2x extra large shadow */\n '2xl': shadows[6],\n /** Card shadow */\n card: shadows[8],\n /** Dropdown shadow */\n dropdown: shadows[9],\n /** Modal shadow */\n modal: shadows[14],\n /** Dialog shadow */\n dialog: shadows[15],\n /** Focus ring (primary) */\n focusPrimary: shadows[19],\n /** Focus ring (success) */\n focusSuccess: shadows[20],\n /** Focus ring (error) */\n focusError: shadows[21],\n /** Inset shadow */\n inset: shadows[22],\n} as const;\n\nexport type ShadowPreset = keyof typeof shadowPresets;\n\n/**\n * Dark mode shadow - subtle shadow for dark backgrounds.\n */\nexport const darkShadow = '0px 0px 0px 1px rgba(255, 255, 255, 0.1)';\n","/**\n * Typography System\n *\n * Typography configuration for Prism themes.\n *\n * @module @omnitron-dev/prism/theme/typography\n */\n\nimport type { ThemeOptions } from '@mui/material/styles';\nimport type { ThemeTypography } from '../types/theme.js';\n\n/** MUI Typography options type */\ntype TypographyOptions = NonNullable<ThemeOptions['typography']>;\n\n/**\n * Default typography configuration.\n */\nexport const typography: ThemeTypography = {\n fontFamily: {\n primary: '\"Nunito Sans Variable\", \"Nunito Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Exo 2\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n mono: '\"JetBrains Mono\", \"Fira Code\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n};\n\n/**\n * Font size scale (in rem).\n */\nconst fontSizes = {\n xs: '0.75rem', // 12px\n sm: '0.875rem', // 14px\n md: '1rem', // 16px\n lg: '1.125rem', // 18px\n xl: '1.25rem', // 20px\n '2xl': '1.5rem', // 24px\n '3xl': '1.875rem', // 30px\n '4xl': '2.25rem', // 36px\n '5xl': '3rem', // 48px\n '6xl': '3.75rem', // 60px\n};\n\n/**\n * Line height scale.\n */\nconst lineHeights = {\n tight: 1.25,\n snug: 1.375,\n normal: 1.5,\n relaxed: 1.625,\n loose: 2,\n};\n\n/**\n * Create MUI typography options from Prism typography config.\n *\n * @param config - Typography configuration\n * @returns MUI typography options\n */\nexport function createTypography(config: ThemeTypography): TypographyOptions {\n const { fontFamily, fontWeights } = config;\n\n return {\n fontFamily: fontFamily.primary,\n fontWeightLight: fontWeights.light,\n fontWeightRegular: fontWeights.regular,\n fontWeightMedium: fontWeights.medium,\n fontWeightBold: fontWeights.bold,\n\n // Headings\n h1: {\n fontFamily: fontFamily.secondary || fontFamily.primary,\n fontWeight: fontWeights.bold,\n fontSize: fontSizes['5xl'],\n lineHeight: lineHeights.tight,\n letterSpacing: '-0.025em',\n },\n h2: {\n fontFamily: fontFamily.secondary || fontFamily.primary,\n fontWeight: fontWeights.bold,\n fontSize: fontSizes['4xl'],\n lineHeight: lineHeights.tight,\n letterSpacing: '-0.025em',\n },\n h3: {\n fontFamily: fontFamily.secondary || fontFamily.primary,\n fontWeight: fontWeights.semiBold,\n fontSize: fontSizes['3xl'],\n lineHeight: lineHeights.snug,\n letterSpacing: '-0.02em',\n },\n h4: {\n fontFamily: fontFamily.secondary || fontFamily.primary,\n fontWeight: fontWeights.semiBold,\n fontSize: fontSizes['2xl'],\n lineHeight: lineHeights.snug,\n letterSpacing: '-0.02em',\n },\n h5: {\n fontFamily: fontFamily.secondary || fontFamily.primary,\n fontWeight: fontWeights.semiBold,\n fontSize: fontSizes.xl,\n lineHeight: lineHeights.snug,\n },\n h6: {\n fontFamily: fontFamily.secondary || fontFamily.primary,\n fontWeight: fontWeights.semiBold,\n fontSize: fontSizes.lg,\n lineHeight: lineHeights.snug,\n },\n\n // Body text\n body1: {\n fontSize: fontSizes.md,\n lineHeight: lineHeights.relaxed,\n },\n body2: {\n fontSize: fontSizes.sm,\n lineHeight: lineHeights.relaxed,\n },\n\n // Subtitles\n subtitle1: {\n fontSize: fontSizes.md,\n fontWeight: fontWeights.medium,\n lineHeight: lineHeights.normal,\n },\n subtitle2: {\n fontSize: fontSizes.sm,\n fontWeight: fontWeights.medium,\n lineHeight: lineHeights.normal,\n },\n\n // Captions and overlines\n caption: {\n fontSize: fontSizes.xs,\n lineHeight: lineHeights.normal,\n },\n overline: {\n fontSize: fontSizes.xs,\n fontWeight: fontWeights.semiBold,\n lineHeight: lineHeights.normal,\n textTransform: 'uppercase',\n letterSpacing: '0.08em',\n },\n\n // Buttons\n button: {\n fontSize: fontSizes.sm,\n fontWeight: fontWeights.semiBold,\n lineHeight: lineHeights.normal,\n textTransform: 'none',\n },\n };\n}\n","/**\n * Luxury Preset Colors\n *\n * Rich, elegant color scales with gold/amber tones.\n *\n * @module @omnitron-dev/prism/theme/colors/luxury\n */\n\nimport type { ColorScale } from '../../types/theme.js';\n\n/**\n * Luxury Primary - Rich Gold/Amber.\n */\nexport const luxuryPrimary: ColorScale = {\n 50: '#FBF7E8',\n 100: '#F5EBC9',\n 200: '#EDDFA8',\n 300: '#E3D086',\n 400: '#D9C164',\n 500: '#C9A227',\n 600: '#A88820',\n 700: '#876D1A',\n 800: '#665314',\n 900: '#45380E',\n 950: '#241D07',\n};\n\n/**\n * Luxury Secondary - Deep Purple.\n */\nexport const luxurySecondary: ColorScale = {\n 50: '#F5EEF5',\n 100: '#E8D5E8',\n 200: '#D4B3D4',\n 300: '#B38AB3',\n 400: '#996399',\n 500: '#6B3A6B',\n 600: '#5A305A',\n 700: '#4A284A',\n 800: '#3A1F3A',\n 900: '#2A172A',\n 950: '#1A0F1A',\n};\n\n/**\n * Luxury Neutral - Warm Grey.\n */\nexport const luxuryNeutral: ColorScale = {\n 50: '#FAF9F7',\n 100: '#F5F3F0',\n 200: '#E8E4DE',\n 300: '#D4CEC4',\n 400: '#B8AFA0',\n 500: '#9C917C',\n 600: '#7A6F5C',\n 700: '#5C5244',\n 800: '#3E362C',\n 900: '#201C16',\n 950: '#100E0B',\n};\n\n/**\n * Luxury Error - Muted Red.\n */\nexport const luxuryError: ColorScale = {\n 50: '#F9E8E8',\n 100: '#F0C9C9',\n 200: '#E4A3A3',\n 300: '#D57C7C',\n 400: '#C65656',\n 500: '#B82E2E',\n 600: '#9A2626',\n 700: '#7D1E1E',\n 800: '#5F1717',\n 900: '#42100F',\n 950: '#250908',\n};\n\n/**\n * Luxury Warning - Rich Amber.\n */\nexport const luxuryWarning: ColorScale = {\n 50: '#FEF8E6',\n 100: '#FCEFC2',\n 200: '#F9E394',\n 300: '#F5D566',\n 400: '#F0C538',\n 500: '#D4A012',\n 600: '#B1850F',\n 700: '#8E6B0C',\n 800: '#6B5009',\n 900: '#483606',\n 950: '#251B03',\n};\n\n/**\n * Luxury Success - Forest Green.\n */\nexport const luxurySuccess: ColorScale = {\n 50: '#E8F4E8',\n 100: '#C9E4C9',\n 200: '#A3D1A3',\n 300: '#7DBD7D',\n 400: '#56A956',\n 500: '#2E8B2E',\n 600: '#267426',\n 700: '#1E5D1E',\n 800: '#174717',\n 900: '#0F300F',\n 950: '#081A08',\n};\n\n/**\n * Luxury Info - Steel Blue.\n */\nexport const luxuryInfo: ColorScale = {\n 50: '#E8F0F6',\n 100: '#C9DCEB',\n 200: '#A3C4DD',\n 300: '#7DACCE',\n 400: '#5694C0',\n 500: '#2E7AB8',\n 600: '#26669A',\n 700: '#1E527C',\n 800: '#173E5E',\n 900: '#0F2A40',\n 950: '#081520',\n};\n\n/**\n * All luxury colors.\n */\nexport const luxuryColors = {\n primary: luxuryPrimary,\n secondary: luxurySecondary,\n neutral: luxuryNeutral,\n error: luxuryError,\n warning: luxuryWarning,\n success: luxurySuccess,\n info: luxuryInfo,\n} as const;\n","/**\n * Arctic Theme Preset\n *\n * A cool, crisp blue theme inspired by northern landscapes.\n *\n * @module @omnitron-dev/prism/theme/presets/arctic\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#D6E9F8',\n light: '#7BC1F0',\n main: '#1E88E5',\n dark: '#1565C0',\n darker: '#0D47A1',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#E3F2FD',\n light: '#90CAF9',\n main: '#42A5F5',\n dark: '#1E88E5',\n darker: '#1565C0',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#E0F7FA',\n light: '#80DEEA',\n main: '#26C6DA',\n dark: '#00ACC1',\n darker: '#00838F',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#E8F5E9',\n light: '#A5D6A7',\n main: '#66BB6A',\n dark: '#43A047',\n darker: '#2E7D32',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF8E1',\n light: '#FFE082',\n main: '#FFB300',\n dark: '#FF8F00',\n darker: '#FF6F00',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFEBEE',\n light: '#EF9A9A',\n main: '#EF5350',\n dark: '#E53935',\n darker: '#C62828',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAFBFC',\n 100: '#F4F6F8',\n 200: '#E4E9ED',\n 300: '#D0D7DE',\n 400: '#AFB8C1',\n 500: '#8C959F',\n 600: '#6E7781',\n 700: '#57606A',\n 800: '#424A53',\n 900: '#32383F',\n 950: '#272C31',\n },\n common: {\n black: '#1B1F23',\n white: '#FFFFFF',\n },\n background: {\n default: '#E8F0F6',\n paper: '#F1F9FB',\n neutral: '#E4E9ED',\n },\n text: {\n primary: '#1B1F23',\n secondary: '#57606A',\n disabled: '#8C959F',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#D6E9F8',\n light: '#7BC1F0',\n main: '#42A5F5',\n dark: '#1E88E5',\n darker: '#1565C0',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#E3F2FD',\n light: '#90CAF9',\n main: '#64B5F6',\n dark: '#42A5F5',\n darker: '#1E88E5',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#E0F7FA',\n light: '#80DEEA',\n main: '#4DD0E1',\n dark: '#26C6DA',\n darker: '#00ACC1',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#E8F5E9',\n light: '#A5D6A7',\n main: '#81C784',\n dark: '#66BB6A',\n darker: '#4CAF50',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF8E1',\n light: '#FFE082',\n main: '#FFCA28',\n dark: '#FFB300',\n darker: '#FFA000',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFEBEE',\n light: '#EF9A9A',\n main: '#EF5350',\n dark: '#F44336',\n darker: '#E53935',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#0D1117',\n 100: '#161B22',\n 200: '#21262D',\n 300: '#30363D',\n 400: '#484F58',\n 500: '#6E7681',\n 600: '#8B949E',\n 700: '#B1BAC4',\n 800: '#C9D1D9',\n 900: '#F0F6FC',\n },\n common: {\n black: '#010409',\n white: '#FFFFFF',\n },\n background: {\n default: '#0D1117',\n paper: '#161B22',\n neutral: '#21262D',\n },\n text: {\n primary: '#F0F6FC',\n secondary: '#B1BAC4',\n disabled: '#6E7681',\n },\n};\n\n/**\n * Arctic theme preset.\n */\nexport const arcticPreset: ThemePresetDefinition = {\n name: 'arctic',\n displayName: 'Arctic',\n description: 'A cool, crisp blue theme inspired by northern landscapes.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Poppins\", -apple-system, BlinkMacSystemFont, sans-serif',\n mono: '\"Fira Code\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'arctic',\n main: '#1E88E5',\n },\n};\n","/**\n * Dracula Theme Preset\n *\n * A dark theme inspired by the popular Dracula color scheme.\n * Features purple primary with distinct accent colors.\n *\n * @module @omnitron-dev/prism/theme/presets/dracula\n */\n\nimport type { ThemePresetDefinition, ColorScale } from '../../types/theme.js';\n\n/**\n * Dracula purple primary.\n */\nexport const draculaPurple: ColorScale = {\n 50: '#F9F5FF',\n 100: '#F0E6FF',\n 200: '#E3CFFF',\n 300: '#CEA9FF',\n 400: '#B574FF',\n 500: '#BD93F9', // Main Dracula purple\n 600: '#A57EE0',\n 700: '#8666B8',\n 800: '#6E5394',\n 900: '#5B4579',\n 950: '#3B2D4D',\n};\n\n/**\n * Dracula pink accent.\n */\nexport const draculaPink: ColorScale = {\n 50: '#FFF5F7',\n 100: '#FFE5EA',\n 200: '#FFCCD6',\n 300: '#FFA4B5',\n 400: '#FF6E8B',\n 500: '#FF79C6', // Main Dracula pink\n 600: '#E85AA1',\n 700: '#C4407F',\n 800: '#A2356A',\n 900: '#87305B',\n 950: '#4E1533',\n};\n\n/**\n * Dracula cyan accent.\n */\nexport const draculaCyan: ColorScale = {\n 50: '#ECFFFE',\n 100: '#CFFFFE',\n 200: '#A5FFFE',\n 300: '#67FFFC',\n 400: '#22FFF5',\n 500: '#8BE9FD', // Main Dracula cyan\n 600: '#06D1E7',\n 700: '#0BA6BC',\n 800: '#118497',\n 900: '#136C7D',\n 950: '#05484E',\n};\n\n/**\n * Dracula theme preset.\n * Dark-only theme inspired by the popular Dracula scheme.\n */\nexport const draculaPreset: ThemePresetDefinition = {\n name: 'dracula',\n displayName: 'Dracula',\n description: 'A dark theme inspired by the popular Dracula color scheme.',\n preferredMode: 'dark',\n typography: {\n fontFamily: {\n primary: '\"Fira Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"DM Sans\", -apple-system, BlinkMacSystemFont, sans-serif',\n mono: '\"Fira Code\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'dracula',\n main: draculaPurple[500],\n palette: draculaPurple,\n },\n};\n","/**\n * Ember Theme Preset\n *\n * A warm, fiery theme with deep oranges and reds.\n * Optimized for dark mode with glowing ember accents.\n *\n * @module @omnitron-dev/prism/theme/presets/ember\n */\n\nimport type { ThemePresetDefinition, ColorScale } from '../../types/theme.js';\n\n/**\n * Ember primary color scale - warm orange-red.\n */\nexport const emberPrimary: ColorScale = {\n 50: '#FFF4ED',\n 100: '#FFE4D4',\n 200: '#FFC9A8',\n 300: '#FFAA71',\n 400: '#FF8038',\n 500: '#FF5F11',\n 600: '#F04006',\n 700: '#C72D07',\n 800: '#9E250E',\n 900: '#7F230F',\n 950: '#450E05',\n};\n\n/**\n * Ember secondary color scale - deep red.\n */\nexport const emberSecondary: ColorScale = {\n 50: '#FFF1F2',\n 100: '#FFE1E3',\n 200: '#FFC8CD',\n 300: '#FFA1A9',\n 400: '#FF6B78',\n 500: '#FA3D4D',\n 600: '#E81B2D',\n 700: '#C31323',\n 800: '#A11421',\n 900: '#861721',\n 950: '#49060C',\n};\n\n/**\n * Ember theme preset.\n * Optimized for dark mode with warm fire tones.\n */\nexport const emberPreset: ThemePresetDefinition = {\n name: 'ember',\n displayName: 'Ember',\n description: 'A warm, fiery theme with deep oranges and reds.',\n preferredMode: 'dark',\n typography: {\n fontFamily: {\n primary: '\"Outfit\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Playfair Display\", Georgia, serif',\n mono: '\"Source Code Pro\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'ember',\n main: emberPrimary[500],\n palette: emberPrimary,\n },\n};\n","/**\n * Midnight Theme Preset\n *\n * A deep blue-black theme for late night coding sessions.\n * Features indigo primary with soft blue accents.\n *\n * @module @omnitron-dev/prism/theme/presets/midnight\n */\n\nimport type { ThemePresetDefinition, ColorScale } from '../../types/theme.js';\n\n/**\n * Midnight indigo primary.\n */\nexport const midnightIndigo: ColorScale = {\n 50: '#EEF2FF',\n 100: '#E0E7FF',\n 200: '#C7D2FE',\n 300: '#A5B4FC',\n 400: '#818CF8',\n 500: '#6366F1', // Main indigo\n 600: '#4F46E5',\n 700: '#4338CA',\n 800: '#3730A3',\n 900: '#312E81',\n 950: '#1E1B4B',\n};\n\n/**\n * Midnight blue-grey background scale.\n */\nexport const midnightBackground: ColorScale = {\n 50: '#F8FAFC',\n 100: '#F1F5F9',\n 200: '#E2E8F0',\n 300: '#CBD5E1',\n 400: '#94A3B8',\n 500: '#64748B',\n 600: '#475569',\n 700: '#334155',\n 800: '#1E293B',\n 900: '#0F172A', // Main dark background\n 950: '#020617',\n};\n\n/**\n * Midnight theme preset.\n * Deep blue-black theme optimized for dark mode.\n */\nexport const midnightPreset: ThemePresetDefinition = {\n name: 'midnight',\n displayName: 'Midnight',\n description: 'A deep blue-black theme for late night coding sessions.',\n preferredMode: 'dark',\n typography: {\n fontFamily: {\n primary: '\"Space Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Sora\", -apple-system, BlinkMacSystemFont, sans-serif',\n mono: '\"IBM Plex Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'midnight',\n main: midnightIndigo[500],\n palette: midnightIndigo,\n },\n};\n","/**\n * Retro Theme Preset\n *\n * A nostalgic theme with vintage computer aesthetics.\n * Features amber/gold primary with classic terminal vibes.\n *\n * @module @omnitron-dev/prism/theme/presets/retro\n */\n\nimport type { ThemePresetDefinition, ColorScale } from '../../types/theme.js';\n\n/**\n * Retro amber primary - classic terminal gold.\n */\nexport const retroAmber: ColorScale = {\n 50: '#FFFBEB',\n 100: '#FEF3C7',\n 200: '#FDE68A',\n 300: '#FCD34D',\n 400: '#FBBF24',\n 500: '#F59E0B', // Main amber\n 600: '#D97706',\n 700: '#B45309',\n 800: '#92400E',\n 900: '#78350F',\n 950: '#451A03',\n};\n\n/**\n * Retro teal secondary - vintage accent.\n */\nexport const retroTeal: ColorScale = {\n 50: '#F0FDFA',\n 100: '#CCFBF1',\n 200: '#99F6E4',\n 300: '#5EEAD4',\n 400: '#2DD4BF',\n 500: '#14B8A6', // Main teal\n 600: '#0D9488',\n 700: '#0F766E',\n 800: '#115E59',\n 900: '#134E4A',\n 950: '#042F2E',\n};\n\n/**\n * Retro theme preset.\n * Nostalgic vintage computer aesthetic optimized for light mode.\n */\nexport const retroPreset: ThemePresetDefinition = {\n name: 'retro',\n displayName: 'Retro',\n description: 'A nostalgic theme with vintage computer aesthetics.',\n preferredMode: 'light',\n typography: {\n fontFamily: {\n primary: '\"VT323\", \"Courier New\", Courier, monospace',\n secondary: '\"Press Start 2P\", \"Courier New\", monospace',\n mono: '\"VT323\", \"Courier New\", Courier, monospace',\n },\n fontWeights: {\n light: 400,\n regular: 400,\n medium: 400,\n semiBold: 400,\n bold: 400,\n },\n },\n colorGroup: {\n key: 'retro',\n main: retroAmber[500],\n palette: retroAmber,\n },\n};\n","/**\n * Minimal Theme Preset\n *\n * A clean, minimalist theme with subtle grays and muted accents.\n * Focuses on content over chrome with maximum readability.\n *\n * @module @omnitron-dev/prism/theme/presets/minimal\n */\n\nimport type { ThemePresetDefinition, ColorScale } from '../../types/theme.js';\n\n/**\n * Minimal neutral scale - refined grays.\n */\nexport const minimalNeutral: ColorScale = {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#E5E5E5',\n 300: '#D4D4D4',\n 400: '#A3A3A3',\n 500: '#737373', // Main neutral\n 600: '#525252',\n 700: '#404040',\n 800: '#262626',\n 900: '#171717',\n 950: '#0A0A0A',\n};\n\n/**\n * Minimal accent scale - subtle blue-grey.\n */\nexport const minimalAccent: ColorScale = {\n 50: '#F8FAFC',\n 100: '#F1F5F9',\n 200: '#E2E8F0',\n 300: '#CBD5E1',\n 400: '#94A3B8',\n 500: '#64748B', // Main slate\n 600: '#475569',\n 700: '#334155',\n 800: '#1E293B',\n 900: '#0F172A',\n 950: '#020617',\n};\n\n/**\n * Minimal theme preset.\n * Clean, content-focused theme that works in both light and dark modes.\n */\nexport const minimalPreset: ThemePresetDefinition = {\n name: 'minimal',\n displayName: 'Minimal',\n description: 'A clean, minimalist theme with subtle grays and muted accents.',\n preferredMode: 'light',\n typography: {\n fontFamily: {\n primary: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Inter\", -apple-system, BlinkMacSystemFont, sans-serif',\n mono: '\"SF Mono\", Menlo, Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'minimal',\n main: minimalNeutral[500],\n palette: minimalNeutral,\n },\n};\n","/**\n * Theme Factory\n *\n * Creates MUI themes with full Prism integration.\n * Uses MUI's native colorSchemes for automatic light/dark mode.\n *\n * Key Features:\n * - Native MUI colorSchemes integration (automatic dark/light switching)\n * - CSS variables with configurable prefix and `theme.vars.palette.*` access\n * - Density-based component sizing (compact/standard/comfortable)\n * - Runtime primary color override system\n * - Full TypeScript inference\n * - Tree-shakeable component overrides\n *\n * @module @omnitron-dev/prism/theme/create-theme\n */\n\nimport { createTheme as muiCreateTheme, responsiveFontSizes } from '@mui/material/styles';\nimport * as locales from '@mui/material/locale';\nimport type { PaletteOptions, ThemeOptions } from '@mui/material/styles';\nimport type {\n ThemePreset,\n ThemeMode,\n ThemeDirection,\n ComponentDensity,\n CssVariablesConfig,\n ComponentsConfig,\n PrismTheme,\n ColorGroup,\n} from '../types/theme.js';\nimport { buildPalette, defaultLightPalette, defaultDarkPalette } from './palette/builder.js';\nimport { componentOverrides } from './components/index.js';\nimport { createShadows } from './shadows.js';\nimport { createTypography, typography } from './typography.js';\nimport { mixins } from './mixins.js';\nimport { generateColorScale, generatePaletteColorWithChannels } from './utils/color.js';\nimport { blue, purple, green, red, orange, lightBlue, grey as baseGrey } from './colors/base.js';\nimport {\n luxuryPrimary,\n luxurySecondary,\n luxuryNeutral,\n luxuryError,\n luxuryWarning,\n luxurySuccess,\n luxuryInfo,\n} from './colors/luxury.js';\n// Preset color scales\nimport { draculaPurple, draculaPink, draculaCyan } from './presets/dracula.js';\nimport { emberPrimary, emberSecondary } from './presets/ember.js';\nimport { midnightIndigo, midnightBackground } from './presets/midnight.js';\nimport { retroAmber, retroTeal } from './presets/retro.js';\nimport { minimalNeutral, minimalAccent } from './presets/minimal.js';\nimport { arcticPreset } from './presets/arctic.js';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type SupportedLocale = keyof typeof locales;\n\n/**\n * Options for creating a Prism theme.\n *\n * @example\n * ```tsx\n * // Minimal configuration\n * const theme = createPrismTheme();\n *\n * // Full configuration\n * const theme = createPrismTheme({\n * preset: 'luxury',\n * mode: 'dark',\n * primaryColor: '#FF5630',\n * density: 'compact',\n * locale: 'ruRU',\n * direction: 'ltr',\n * cssVarPrefix: 'myapp',\n * borderRadius: 12,\n * responsiveFonts: true,\n * });\n * ```\n */\nexport interface CreatePrismThemeOptions {\n /** Theme preset (default: 'default-light') */\n preset?: ThemePreset;\n /** Light/dark/system mode (default: 'light') */\n mode?: ThemeMode;\n /** Text direction (default: 'ltr') */\n direction?: ThemeDirection;\n /** MUI locale for i18n (default: 'enUS') */\n locale?: SupportedLocale;\n /** Custom primary color override (hex, e.g., '#FF5630') */\n primaryColor?: string | null;\n /** CSS variable prefix (default: 'prism') */\n cssVarPrefix?: string;\n /** Component density (default: 'standard') */\n density?: ComponentDensity;\n /** Border radius in pixels (default: 8) */\n borderRadius?: number;\n /** Enable responsive font sizes (default: true) */\n responsiveFonts?: boolean;\n /** Custom MUI theme overrides */\n overrides?: Partial<ThemeOptions>;\n /** Typography configuration (optional override) */\n typography?: Partial<ThemeOptions['typography']>;\n /** CSS variables configuration (optional override) */\n cssVariables?: Partial<CssVariablesConfig>;\n /** Components configuration (optional override) */\n components?: Partial<ComponentsConfig>;\n /** Contrast mode: 'default' or 'high' (default: 'default') */\n contrast?: 'default' | 'high';\n /** Override primary font family */\n fontFamily?: string | null;\n /** Override base font size in px (12-20, default: 16) */\n fontSize?: number;\n}\n\n// =============================================================================\n// PRESET CONFIGURATIONS\n// =============================================================================\n\ninterface PresetConfig {\n lightPalette: PaletteOptions;\n darkPalette: PaletteOptions;\n colorGroup: ColorGroup;\n}\n\n/**\n * Get preset configuration.\n * Each preset defines light and dark palettes plus a color group for matching.\n */\nfunction getPresetConfig(preset: ThemePreset): PresetConfig {\n switch (preset) {\n case 'luxury':\n return {\n lightPalette: buildPalette({\n primary: luxuryPrimary,\n secondary: luxurySecondary,\n info: luxuryInfo,\n success: luxurySuccess,\n warning: luxuryWarning,\n error: luxuryError,\n grey: luxuryNeutral,\n mode: 'light',\n backgroundDefault: '#FAF7F5',\n paperColor: '#FDFBFB',\n }),\n darkPalette: buildPalette({\n primary: luxuryPrimary,\n secondary: luxurySecondary,\n info: luxuryInfo,\n success: luxurySuccess,\n warning: luxuryWarning,\n error: luxuryError,\n grey: luxuryNeutral,\n mode: 'dark',\n }),\n colorGroup: {\n key: 'luxury',\n main: luxuryPrimary[500],\n palette: luxuryPrimary,\n },\n };\n\n case 'arctic':\n // Arctic has full palettes defined in the preset file\n return {\n lightPalette: buildPaletteFromPreset(arcticPreset.lightPalette!, 'light'),\n darkPalette: buildPaletteFromPreset(arcticPreset.darkPalette!, 'dark'),\n colorGroup: {\n key: 'arctic',\n main: '#1E88E5',\n palette: blue, // Use blue as base for color group\n },\n };\n\n case 'dracula':\n // Dark-only theme with purple/pink/cyan accents\n return {\n lightPalette: buildPalette({\n primary: draculaPurple,\n secondary: draculaPink,\n info: draculaCyan,\n success: green,\n warning: orange,\n error: red,\n grey: baseGrey,\n mode: 'light',\n backgroundDefault: '#F5F0FA',\n paperColor: '#FAF7FC',\n }),\n darkPalette: buildPalette({\n primary: draculaPurple,\n secondary: draculaPink,\n info: draculaCyan,\n success: green,\n warning: orange,\n error: red,\n grey: baseGrey,\n mode: 'dark',\n backgroundDefault: '#282A36', // Dracula background\n paperColor: '#21222C',\n }),\n colorGroup: {\n key: 'dracula',\n main: draculaPurple[500],\n palette: draculaPurple,\n },\n };\n\n case 'ember':\n // Warm, fiery theme with orange-red\n return {\n lightPalette: buildPalette({\n primary: emberPrimary,\n secondary: emberSecondary,\n info: lightBlue,\n success: green,\n warning: orange,\n error: emberSecondary,\n grey: baseGrey,\n mode: 'light',\n backgroundDefault: '#FFF5F0',\n paperColor: '#FFFAF7',\n }),\n darkPalette: buildPalette({\n primary: emberPrimary,\n secondary: emberSecondary,\n info: lightBlue,\n success: green,\n warning: orange,\n error: emberSecondary,\n grey: baseGrey,\n mode: 'dark',\n backgroundDefault: '#1A0A05',\n paperColor: '#2D1610',\n }),\n colorGroup: {\n key: 'ember',\n main: emberPrimary[500],\n palette: emberPrimary,\n },\n };\n\n case 'midnight':\n // Deep blue-black theme with indigo\n return {\n lightPalette: buildPalette({\n primary: midnightIndigo,\n secondary: purple,\n info: lightBlue,\n success: green,\n warning: orange,\n error: red,\n grey: midnightBackground,\n mode: 'light',\n backgroundDefault: '#F0F0F8',\n paperColor: '#F7F7FC',\n }),\n darkPalette: buildPalette({\n primary: midnightIndigo,\n secondary: purple,\n info: lightBlue,\n success: green,\n warning: orange,\n error: red,\n grey: midnightBackground,\n mode: 'dark',\n backgroundDefault: midnightBackground[950],\n paperColor: midnightBackground[900],\n }),\n colorGroup: {\n key: 'midnight',\n main: midnightIndigo[500],\n palette: midnightIndigo,\n },\n };\n\n case 'retro':\n // Nostalgic vintage theme with amber/teal\n return {\n lightPalette: buildPalette({\n primary: retroAmber,\n secondary: retroTeal,\n info: lightBlue,\n success: retroTeal,\n warning: retroAmber,\n error: red,\n grey: baseGrey,\n mode: 'light',\n backgroundDefault: '#F8F1E0',\n paperColor: '#FDF8EE',\n }),\n darkPalette: buildPalette({\n primary: retroAmber,\n secondary: retroTeal,\n info: lightBlue,\n success: retroTeal,\n warning: retroAmber,\n error: red,\n grey: baseGrey,\n mode: 'dark',\n backgroundDefault: '#1A1814',\n paperColor: '#252218',\n }),\n colorGroup: {\n key: 'retro',\n main: retroAmber[500],\n palette: retroAmber,\n },\n };\n\n case 'minimal':\n // Clean, minimalist theme with neutral grays\n return {\n lightPalette: buildPalette({\n primary: minimalAccent,\n secondary: minimalNeutral,\n info: lightBlue,\n success: green,\n warning: orange,\n error: red,\n grey: minimalNeutral,\n mode: 'light',\n backgroundDefault: '#FAFAFA',\n paperColor: '#FFFFFF',\n }),\n darkPalette: buildPalette({\n primary: minimalAccent,\n secondary: minimalNeutral,\n info: lightBlue,\n success: green,\n warning: orange,\n error: red,\n grey: minimalNeutral,\n mode: 'dark',\n backgroundDefault: '#0A0A0A',\n paperColor: '#171717',\n }),\n colorGroup: {\n key: 'minimal',\n main: minimalAccent[500],\n palette: minimalAccent,\n },\n };\n\n case 'nature':\n // Earthy green theme\n return {\n lightPalette: buildPalette({\n primary: green,\n secondary: purple,\n info: lightBlue,\n success: green,\n warning: orange,\n error: red,\n grey: baseGrey,\n mode: 'light',\n backgroundDefault: '#EEF6EE',\n paperColor: '#F5FAF5',\n }),\n darkPalette: buildPalette({\n primary: green,\n secondary: purple,\n info: lightBlue,\n success: green,\n warning: orange,\n error: red,\n grey: baseGrey,\n mode: 'dark',\n backgroundDefault: '#0A1A0A',\n paperColor: '#0F1F0F',\n }),\n colorGroup: {\n key: 'nature',\n main: green[500],\n palette: green,\n },\n };\n\n case 'default-dark':\n return {\n lightPalette: defaultLightPalette,\n darkPalette: defaultDarkPalette,\n colorGroup: {\n key: 'default-dark',\n main: blue[400],\n palette: blue,\n },\n };\n\n case 'default-light':\n default:\n return {\n lightPalette: defaultLightPalette,\n darkPalette: defaultDarkPalette,\n colorGroup: {\n key: 'default-light',\n main: blue[500],\n palette: blue,\n },\n };\n }\n}\n\n/**\n * Build palette from preset palette definition (for presets with full palette specs).\n */\nfunction buildPaletteFromPreset(\n presetPalette: import('../types/theme.js').PresetPalette,\n mode: 'light' | 'dark'\n): PaletteOptions {\n const grey = presetPalette.grey as import('../types/theme.js').ColorScale;\n\n return {\n mode,\n primary: generatePaletteColorWithChannels(presetPalette.primary),\n secondary: generatePaletteColorWithChannels(presetPalette.secondary),\n info: generatePaletteColorWithChannels(presetPalette.info),\n success: generatePaletteColorWithChannels(presetPalette.success),\n warning: generatePaletteColorWithChannels(presetPalette.warning),\n error: generatePaletteColorWithChannels(presetPalette.error),\n grey,\n common: presetPalette.common,\n background: presetPalette.background,\n text: presetPalette.text,\n };\n}\n\n// =============================================================================\n// COLOR GROUPS FOR PRIMARY OVERRIDE\n// =============================================================================\n\n/**\n * Available color groups for primary color override.\n * When primaryColor matches a group's main color, we use that group's full palette\n * for proper shade generation in both light and dark modes.\n */\nexport const COLOR_GROUPS: ColorGroup[] = [\n // Default presets\n { key: 'default-light', main: blue[500], palette: blue },\n { key: 'default-dark', main: blue[400], palette: blue },\n // Base colors\n { key: 'green', main: green[500], palette: green },\n { key: 'purple', main: purple[500], palette: purple },\n { key: 'red', main: red[500], palette: red },\n { key: 'orange', main: orange[500], palette: orange },\n { key: 'lightBlue', main: lightBlue[500], palette: lightBlue },\n // Preset colors\n { key: 'luxury', main: luxuryPrimary[500], palette: luxuryPrimary },\n { key: 'dracula', main: draculaPurple[500], palette: draculaPurple },\n { key: 'ember', main: emberPrimary[500], palette: emberPrimary },\n { key: 'midnight', main: midnightIndigo[500], palette: midnightIndigo },\n { key: 'retro', main: retroAmber[500], palette: retroAmber },\n { key: 'minimal', main: minimalAccent[500], palette: minimalAccent },\n { key: 'nature', main: green[500], palette: green },\n { key: 'arctic', main: '#1E88E5', palette: blue },\n];\n\n// =============================================================================\n// PRIMARY COLOR OVERRIDE\n// =============================================================================\n\n/**\n * Apply primary color override to palette.\n * Uses existing color group if exact match, otherwise generates new shades.\n */\nfunction applyPrimaryOverride(\n basePalette: PaletteOptions,\n primaryColor: string | null | undefined,\n mode: 'light' | 'dark'\n): PaletteOptions {\n if (!primaryColor) return basePalette;\n\n // Find matching color group for optimal shades\n const colorGroup = COLOR_GROUPS.find((group) => group.main === primaryColor);\n\n if (colorGroup?.palette) {\n // Use pre-defined palette for best results\n const newPrimary =\n mode === 'dark'\n ? generatePaletteColorWithChannels({\n lighter: colorGroup.palette[950],\n light: colorGroup.palette[700],\n main: primaryColor,\n dark: colorGroup.palette[300],\n darker: colorGroup.palette[100],\n contrastText: colorGroup.palette[950],\n })\n : generatePaletteColorWithChannels({\n lighter: colorGroup.palette[50],\n light: colorGroup.palette[400],\n main: primaryColor,\n dark: colorGroup.palette[600],\n darker: colorGroup.palette[900],\n contrastText: colorGroup.palette[50],\n });\n\n return { ...basePalette, primary: newPrimary };\n }\n\n // Generate new color scale from custom color\n const generatedScale = generateColorScale(primaryColor);\n const newPrimary =\n mode === 'dark'\n ? generatePaletteColorWithChannels({\n lighter: generatedScale[950],\n light: generatedScale[700],\n main: generatedScale[400],\n dark: generatedScale[300],\n darker: generatedScale[100],\n contrastText: generatedScale[950],\n })\n : generatePaletteColorWithChannels({\n lighter: generatedScale[50],\n light: generatedScale[400],\n main: generatedScale[500],\n dark: generatedScale[600],\n darker: generatedScale[900],\n contrastText: generatedScale[50],\n });\n\n return { ...basePalette, primary: newPrimary };\n}\n\n// =============================================================================\n// DENSITY MULTIPLIER\n// =============================================================================\n\n/**\n * Get density multiplier for spacing calculations.\n * Used by component overrides to scale padding/margins.\n */\nfunction getDensityMultiplier(density: ComponentDensity): number {\n switch (density) {\n case 'compact':\n return 0.75;\n case 'comfortable':\n return 1.25;\n case 'standard':\n default:\n return 1;\n }\n}\n\n// =============================================================================\n// DEEP MERGE\n// =============================================================================\n\n/**\n * Deep merge two theme option objects.\n * Arrays are replaced, not concatenated. Functions are overwritten.\n * Preserves nested component overrides, palette, typography, etc.\n */\nfunction deepMergeThemeOptions(base: ThemeOptions, overrides: Partial<ThemeOptions>): ThemeOptions {\n const result: Record<string, unknown> = { ...base };\n\n for (const key of Object.keys(overrides)) {\n const baseVal = (base as Record<string, unknown>)[key];\n const overrideVal = (overrides as Record<string, unknown>)[key];\n\n if (\n overrideVal !== null &&\n typeof overrideVal === 'object' &&\n !Array.isArray(overrideVal) &&\n typeof overrideVal !== 'function' &&\n baseVal !== null &&\n typeof baseVal === 'object' &&\n !Array.isArray(baseVal) &&\n typeof baseVal !== 'function'\n ) {\n result[key] = deepMergeThemeOptions(baseVal as ThemeOptions, overrideVal as Partial<ThemeOptions>);\n } else {\n result[key] = overrideVal;\n }\n }\n\n return result as ThemeOptions;\n}\n\n// =============================================================================\n// THEME FACTORY\n// =============================================================================\n\n/**\n * Create a Prism theme.\n *\n * This is the main entry point for creating themes. It uses MUI's native\n * colorSchemes for automatic light/dark mode switching, CSS variables\n * for dynamic theming, and includes all Prism extensions.\n *\n * @example\n * ```tsx\n * // Basic usage\n * const theme = createPrismTheme({ preset: 'luxury', mode: 'dark' });\n *\n * // With custom primary color\n * const theme = createPrismTheme({\n * preset: 'default-light',\n * primaryColor: '#FF5630',\n * density: 'compact',\n * });\n *\n * // Use with MUI ThemeProvider\n * <ThemeProvider theme={theme}>\n * <App />\n * </ThemeProvider>\n * ```\n *\n * @param options - Theme creation options\n * @returns MUI theme with Prism extensions\n */\nexport function createPrismTheme(options: CreatePrismThemeOptions = {}): PrismTheme {\n const {\n preset = 'default-light',\n mode = 'light',\n direction = 'ltr',\n locale = 'enUS',\n primaryColor = null,\n cssVarPrefix = 'prism',\n density = 'standard',\n borderRadius = 8,\n responsiveFonts = true,\n contrast = 'default',\n overrides,\n } = options;\n\n // Get preset configuration\n const presetConfig = getPresetConfig(preset);\n\n // Note: MUI 7 handles 'system' mode automatically via CSS media queries\n // No need to resolve mode here - CSS variables handle light/dark switching\n\n // Apply primary color override if provided\n let lightPalette = applyPrimaryOverride(presetConfig.lightPalette, primaryColor, 'light');\n let darkPalette = applyPrimaryOverride(presetConfig.darkPalette, primaryColor, 'dark');\n\n // Apply high contrast mode if enabled (increases background/paper contrast)\n if (contrast === 'high') {\n lightPalette = {\n ...lightPalette,\n background: {\n ...lightPalette.background,\n default: baseGrey[200],\n paper: '#FFFFFF',\n },\n };\n darkPalette = {\n ...darkPalette,\n background: {\n ...darkPalette.background,\n default: '#000000',\n paper: baseGrey[900],\n },\n };\n }\n\n // Get density multiplier\n const densityMultiplier = getDensityMultiplier(density);\n\n // Components configuration\n const componentsConfig: ComponentsConfig = {\n density,\n borderRadius,\n buttonStyle: 'contained',\n };\n\n // CSS variables configuration\n const cssVariablesConfig: CssVariablesConfig = {\n prefix: cssVarPrefix,\n colorSchemeSelector: `data-${cssVarPrefix}-color-scheme`,\n enabled: true,\n };\n\n // Build MUI locale\n const muiLocale = locales[locale] || locales.enUS;\n\n // Get shadows for light and dark modes\n const primaryMain = (lightPalette.primary as { main?: string })?.main || blue[500];\n const lightShadows = createShadows(primaryMain);\n // Dark mode uses subtle shadows with reduced opacity\n const darkShadows = createShadows(primaryMain, 0.4);\n\n // Resolve effective mode ('system' → actual light/dark)\n // Note: PrismProvider resolves 'system' before calling this, but handle fallback here\n const effectiveMode = mode === 'dark' ? 'dark' : 'light';\n\n // Select palette and shadows based on active mode\n const activePalette = effectiveMode === 'dark' ? darkPalette : lightPalette;\n const activeShadows = effectiveMode === 'dark' ? darkShadows : lightShadows;\n\n // Build base theme options\n const themeOptions: ThemeOptions = {\n // CSS Variables integration - enables theme.vars.palette.*\n cssVariables: {\n cssVarPrefix,\n colorSchemeSelector: cssVariablesConfig.colorSchemeSelector,\n },\n\n // Active palette based on resolved mode\n // PrismProvider recreates the theme on mode change, so we use the resolved palette directly\n palette: activePalette,\n\n // Active shadows based on resolved mode\n shadows: activeShadows,\n\n // Typography (uses Nunito Sans / Exo 2 defaults, overridable via options)\n typography: createTypography({\n fontFamily: {\n primary: options.fontFamily\n ? `\"${options.fontFamily}\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif`\n : typography.fontFamily.primary,\n secondary: typography.fontFamily.secondary,\n mono: typography.fontFamily.mono,\n },\n fontWeights: typography.fontWeights,\n }),\n // Note: actual html font-size is set by PrismProvider via useEffect.\n // Do NOT set htmlFontSize here — MUI would compensate its rem values,\n // cancelling out the scaling effect we want.\n\n // Direction (RTL support)\n direction,\n\n // Shape\n shape: {\n borderRadius,\n },\n\n // Mixins\n mixins,\n\n // Component overrides with density support\n components: componentOverrides(componentsConfig),\n };\n\n // Deep merge with custom overrides (preserves nested component overrides)\n const finalOptions = overrides ? deepMergeThemeOptions(themeOptions, overrides) : themeOptions;\n\n // Create base theme\n let theme = muiCreateTheme(finalOptions, muiLocale);\n\n // Apply responsive font sizes\n if (responsiveFonts) {\n theme = responsiveFontSizes(theme);\n }\n\n // Add Prism metadata\n const prismTheme = theme as unknown as PrismTheme;\n prismTheme.prism = {\n preset,\n mode,\n direction,\n density,\n densityMultiplier,\n cssVariables: cssVariablesConfig,\n };\n\n return prismTheme;\n}\n\n// =============================================================================\n// CONVENIENCE EXPORTS\n// =============================================================================\n\n/**\n * Available preset names.\n */\nexport const PRESET_NAMES: readonly ThemePreset[] = [\n 'default-light',\n 'default-dark',\n 'luxury',\n 'arctic',\n 'nature',\n 'ember',\n 'dracula',\n 'midnight',\n 'retro',\n 'minimal',\n] as const;\n\n/**\n * Preset display names for UI.\n */\nexport const PRESET_DISPLAY_NAMES: Record<ThemePreset, string> = {\n 'default-light': 'Default (Light)',\n 'default-dark': 'Default (Dark)',\n luxury: 'Luxury',\n arctic: 'Arctic',\n nature: 'Nature',\n ember: 'Ember',\n dracula: 'Dracula',\n midnight: 'Midnight',\n retro: 'Retro',\n minimal: 'Minimal',\n};\n\n/**\n * Inherent mode for each preset.\n * Non-default presets are inherently light or dark — selecting them forces the mode.\n * Default presets respect the user's light/dark/system toggle.\n */\nexport const PRESET_INHERENT_MODE: Record<ThemePreset, 'light' | 'dark'> = {\n 'default-light': 'light',\n 'default-dark': 'dark',\n luxury: 'light',\n arctic: 'light',\n nature: 'light',\n retro: 'light',\n minimal: 'light',\n ember: 'dark',\n dracula: 'dark',\n midnight: 'dark',\n};\n\n/**\n * Get preset display name.\n */\nexport function getPresetDisplayName(preset: ThemePreset): string {\n return PRESET_DISPLAY_NAMES[preset];\n}\n\n// Re-export types for convenience\nexport type { PrismTheme, ThemePreset, ThemeMode, ThemeDirection, ComponentDensity };\n"]}