@omnitron-dev/prism 0.3.3 → 0.4.6
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.
- package/dist/{chunk-DHTYHUYI.js → chunk-74TJGLFR.js} +4 -4
- package/dist/{chunk-DHTYHUYI.js.map → chunk-74TJGLFR.js.map} +1 -1
- package/dist/{chunk-D4GFAJAZ.js → chunk-FADV3QAS.js} +4 -4
- package/dist/{chunk-D4GFAJAZ.js.map → chunk-FADV3QAS.js.map} +1 -1
- package/dist/chunk-GCXRYSWU.js +132 -0
- package/dist/chunk-GCXRYSWU.js.map +1 -0
- package/dist/{chunk-UEINJFLS.js → chunk-HCADZXAK.js} +19 -10
- package/dist/chunk-HCADZXAK.js.map +1 -0
- package/dist/{chunk-RSWVYIXK.js → chunk-KOOKHWTH.js} +6 -133
- package/dist/chunk-KOOKHWTH.js.map +1 -0
- package/dist/{chunk-F6RZ7LW6.js → chunk-SPK7E7BD.js} +3 -3
- package/dist/{chunk-F6RZ7LW6.js.map → chunk-SPK7E7BD.js.map} +1 -1
- package/dist/{chunk-AATAOOSF.js → chunk-UWYLMSIQ.js} +3 -3
- package/dist/{chunk-AATAOOSF.js.map → chunk-UWYLMSIQ.js.map} +1 -1
- package/dist/{chunk-NSNM53WI.js → chunk-YYQWPEOP.js} +12 -11
- package/dist/chunk-YYQWPEOP.js.map +1 -0
- package/dist/components/admin-filters/index.js +2 -2
- package/dist/components/index.js +13 -12
- package/dist/core/index.js +4 -3
- package/dist/core/provider.d.ts +10 -4
- package/dist/core/provider.d.ts.map +1 -1
- package/dist/hooks/index.js +5 -4
- package/dist/identity/geometry.d.ts +25 -0
- package/dist/identity/geometry.d.ts.map +1 -0
- package/dist/identity/index.d.ts +6 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +278 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/omnitron-mark.d.ts +14 -0
- package/dist/identity/omnitron-mark.d.ts.map +1 -0
- package/dist/identity/omnitron-splash.d.ts +15 -0
- package/dist/identity/omnitron-splash.d.ts.map +1 -0
- package/dist/identity/theme.d.ts +7 -0
- package/dist/identity/theme.d.ts.map +1 -0
- package/dist/identity/tokens.d.ts +46 -0
- package/dist/identity/tokens.d.ts.map +1 -0
- package/dist/index.js +16 -15
- package/dist/index.js.map +1 -1
- package/dist/layouts/dashboard/sidenav.d.ts.map +1 -1
- package/dist/layouts/index.js +1 -1
- package/dist/theme/components/DataGrid.d.ts +0 -1
- package/dist/theme/components/DataGrid.d.ts.map +1 -1
- package/dist/theme/index.js +3 -2
- package/package.json +8 -4
- package/dist/chunk-NSNM53WI.js.map +0 -1
- package/dist/chunk-RSWVYIXK.js.map +0 -1
- package/dist/chunk-UEINJFLS.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/colors/base.ts","../src/theme/palette/builder.ts","../src/theme/palette/overrides.ts","../src/theme/components/theme-utils.ts","../src/theme/components/Button.ts","../src/theme/components/Chip.ts","../src/theme/components/TextField.ts","../src/theme/components/FormControls.tsx","../src/theme/components/Tabs.ts","../src/theme/components/Dialog.ts","../src/theme/components/Card.ts","../src/theme/components/Autocomplete.ts","../src/theme/components/DataGrid.ts","../src/theme/components/DatePicker.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/icons/theme.tsx","../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":["grey","softVariants","dashedVariants","disabledVariants","svgIconClasses","jsx","newPrimary","getDensityMultiplier","lightPalette","darkPalette","muiCreateTheme"],"mappings":"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","file":"chunk-RSWVYIXK.js","sourcesContent":["/**\n * Base Color Scales\n *\n * Foundation colors used across all presets.\n * 11-shade scales (50-950) for maximum flexibility.\n *\n * @module 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 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';\nimport { getContrastText } from '../utils/color.js';\n\n// =============================================================================\n// PALETTE COLOR BUILDER\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 // Imported, not local. This file used to declare its OWN `getContrastText`\n // under the same name as the fixed one in `utils/color.ts`, so the call read\n // as though it went to the audited primitive while it switched on a\n // luminance threshold computed by a parser that returns `NaN` for a\n // three-digit hex. `#212121` stays the dark candidate.\n const contrastText = getContrastText(mainColor, '#FFFFFF', '#212121');\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","import { darken, lighten, getContrastRatio } from '@mui/material/styles';\nimport { colorChannel, hslToRgb } from '@mui/system';\nimport type { PaletteOptions } from '@mui/material/styles';\n\ntype RecordValue = Record<string, unknown>;\nconst isRecord = (value: unknown): value is RecordValue => !!value && typeof value === 'object' && !Array.isArray(value);\nconst owns = (value: RecordValue, key: string) => Object.prototype.hasOwnProperty.call(value, key);\nconst roles = ['primary', 'secondary', 'success', 'info', 'warning', 'error'] as const;\nconst shades = ['light', 'dark', 'lighter', 'darker', 'contrastText'] as const;\n\ntype RoleColour = Partial<NonNullable<PaletteOptions['primary']>> &\n Partial<Record<'main' | typeof shades[number] | `${'main' | typeof shades[number]}Channel`, string>>;\n\n/** Application colours merge over a complete preset, so a main colour is not\n * required when changing a single shade. Include Prism's additional channels.\n */\nexport type PaletteOverrides = Omit<PaletteOptions, typeof roles[number] | 'text'> & {\n [Role in typeof roles[number]]?: RoleColour;\n} & {\n text?: PaletteOptions['text'] & Partial<Record<'primaryChannel' | 'secondaryChannel' | 'disabledChannel', string>>;\n};\nconst colourKeys = new Set(['main', ...shades, 'primary', 'secondary', 'disabled', 'default', 'paper', 'neutral', 'divider', 'active', 'selected', 'hover', 'focus', 'disabledBackground', 'background', 'onBackground', 'black', 'white']);\n\n/** Only return numeric sRGB channels when the JS colour parser can resolve them.\n * CSS variables, modern space-separated rgb(), wide-gamut colours and named\n * colours must remain browser expressions; fabricating numbers loses meaning.\n */\nfunction staticChannel(value: string): string | undefined {\n if (!/^(#[\\da-f]{3,8}$|rgba?\\(|hsla?\\()/i.test(value)) return undefined;\n if (/^rgba?\\(/i.test(value) && value.includes('%')) return undefined;\n try {\n const channel = colorChannel(/^hsl/i.test(value) ? hslToRgb(value) : value);\n const components = channel.split(' ');\n return components.length === 3 && components.every(part => part !== '' && Number.isFinite(Number(part))) ? channel : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function channelFor(value: string): string {\n return staticChannel(value) ?? `from ${value} r g b`;\n}\n\n/** Regenerate overridden channels, including Prism extensions that MUI does not\n * augment (text.disabled, lighter/darker, custom colours). Explicit channels,\n * including undefined, retain precedence. Unrelated preset values stay intact.\n */\nfunction reconcileChannels(merged: RecordValue, supplied: RecordValue): RecordValue {\n const result = { ...merged };\n for (const [key, value] of Object.entries(supplied)) {\n if (isRecord(value) && isRecord(result[key])) {\n result[key] = reconcileChannels(result[key], value);\n } else if (typeof value === 'string' && !key.endsWith('Channel') && !owns(supplied, `${key}Channel`)) {\n const channel = staticChannel(value);\n if (channel !== undefined || owns(merged, `${key}Channel`) || colourKeys.has(key)) {\n result[`${key}Channel`] = channel ?? channelFor(value);\n }\n }\n }\n return result;\n}\n\ninterface PaletteReconciliationOptions {\n nativeColor?: boolean;\n cssVarPrefix?: string;\n}\n\n/** A changed main colour starts a new tonal family. Caller-supplied shades and\n * channels always win. Static colours use sRGB arithmetic; native MUI palettes\n * retain browser-resolved colour expressions and native contrast calculation.\n */\nexport function reconcilePaletteOverrides(\n merged: PaletteOptions,\n supplied?: PaletteOverrides,\n { nativeColor = false, cssVarPrefix = 'prism' }: PaletteReconciliationOptions = {},\n): PaletteOptions {\n if (!supplied) return merged;\n const result = reconcileChannels(merged as RecordValue, supplied as RecordValue);\n for (const name of roles) {\n const input: unknown = supplied[name];\n if (!isRecord(input) || typeof input.main !== 'string') continue;\n const role = { ...(result[name] as RecordValue) };\n const numeric = staticChannel(input.main) !== undefined;\n for (const shade of shades) {\n if (!owns(input, shade)) {\n delete role[shade];\n if (!owns(input, `${shade}Channel`)) delete role[`${shade}Channel`];\n }\n }\n // MUI's JS augmenter cannot interpret runtime colour values. Native colour\n // mode can; in legacy mode the application must supply the standard tones.\n if (!nativeColor && !numeric && ['light', 'dark', 'contrastText'].some(shade => typeof role[shade] !== 'string' || !role[shade])) {\n throw new Error(`Prism: palette.${name}.main cannot be resolved in JavaScript. Enable overrides.cssVariables.nativeColor or supply light, dark and contrastText explicitly.`);\n }\n const dark = result.mode === 'dark';\n const mix = (colour: string, amount: number) => `color-mix(in oklch, ${input.main}, ${colour} ${amount * 100}%)`;\n role.lighter ??= numeric && !nativeColor\n ? dark ? darken(input.main, 0.75) : lighten(input.main, 0.9)\n : dark ? mix('#000', 0.75) : mix('#fff', 0.9);\n role.darker ??= numeric && !nativeColor\n ? dark ? lighten(input.main, 0.85) : darken(input.main, 0.7)\n : dark ? mix('#fff', 0.85) : mix('#000', 0.7);\n if (numeric && !nativeColor) {\n role.contrastText ??= getContrastRatio(input.main, '#fff') >= getContrastRatio(input.main, '#000') ? '#fff' : '#000';\n }\n for (const shade of shades) {\n if (owns(input, `${shade}Channel`)) continue;\n if (typeof role[shade] === 'string') {\n role[`${shade}Channel`] = channelFor(role[shade]);\n } else if (nativeColor) {\n // MUI generates the tone after reconciliation. Refer to that token so\n // channels follow tonalOffset and native contrast instead of guessing.\n const prefix = cssVarPrefix ? `${cssVarPrefix}-` : '';\n role[`${shade}Channel`] = `from var(--${prefix}palette-${name}-${shade}) r g b`;\n }\n }\n result[name] = role;\n }\n return result as PaletteOptions;\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 theme/components/theme-utils\n */\n\nimport type { Theme } from '@mui/material/styles';\nimport type { ComponentsConfig } from '../../types/theme.js';\nimport { channelFor } from '../palette/overrides.js';\n\n// =============================================================================\n// COLOR CHANNEL HELPERS\n// =============================================================================\n\n/**\n * Resolve a grey channel from the active theme, including themes without CSS variables.\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 palette = theme.palette.grey as unknown as Record<string, string>;\n return vars?.[channelKey] ?? palette[channelKey] ?? channelFor(palette[shade]!);\n}\n\n/**\n * Resolve a `theme.vars.palette.<path>` value with fallback to the\n * non-CSS-variable `theme.palette.<path>` equivalent. The `theme.vars`\n * branch exists when CssVarsProvider is in scope and the override\n * needs to participate in light/dark theme-switching without a\n * re-mount; the fallback covers SSR and theme-without-vars paths.\n *\n * Path is dotted, e.g. `'text.primary'`, `'action.disabled'`,\n * `'grey.500'`, `'divider'`. Always returns a string — when neither\n * branch resolves to a string (path typo or missing palette token)\n * returns `''`, which CSS treats as \"no-op\" so a broken token never\n * breaks layout, just produces a missing colour.\n *\n * This replaces the verbose `theme.vars?.palette.X.Y || theme.palette.X.Y`\n * chain used throughout component overrides — one helper, one\n * fallback rule, two code lines collapse to one.\n */\nexport function paletteVar(theme: Theme, path: string): string {\n const segments = path.split('.');\n const fromVars = (theme.vars?.palette as unknown as Record<string, unknown> | undefined) ?? undefined;\n const fromFallback = theme.palette as unknown as Record<string, unknown>;\n const walk = (obj: Record<string, unknown> | undefined): unknown =>\n segments.reduce<unknown>(\n (acc, key) => (acc && typeof acc === 'object' ? (acc as Record<string, unknown>)[key] : undefined),\n obj,\n );\n const fromVarsVal = walk(fromVars);\n if (typeof fromVarsVal === 'string') return fromVarsVal;\n const fromFallbackVal = walk(fromFallback);\n if (typeof fromFallbackVal === 'string') return fromFallbackVal;\n return '';\n}\n\n/**\n * Resolve a semantic channel without substituting a hard-coded preset colour.\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 palette = theme.palette[color] as { main: string; mainChannel?: string };\n return vars?.mainChannel ?? palette.mainChannel ?? channelFor(palette.main);\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 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 // MUI v9 replacement for the removed `outlinedSize*` slots.\n {\n props: { variant: 'outlined', size: 'large' },\n style: { paddingTop: 9 * dm, paddingBottom: 9 * dm },\n },\n {\n props: { variant: 'outlined', size: 'medium' },\n style: { paddingTop: 7 * dm, paddingBottom: 7 * dm },\n },\n {\n props: { variant: 'outlined', size: 'small' },\n style: { paddingTop: 5 * dm, paddingBottom: 5 * dm },\n },\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 // outlinedSize* class slots were removed in MUI v9 in favour\n // of the `variants` array on the component override. See\n // https://mui.com/material-ui/migration/upgrade-to-v9/.\n // Each native slot contains the supplied icon root, which may be a\n // custom wrapper. Ignore SSR style elements instead of relying on child\n // position. The public slot class keeps this rule authoritative over\n // MUI's size-specific icon selectors without affecting nested content.\n startIcon: {\n marginRight: 4,\n [`&.${buttonClasses.startIcon} > :not(style)`]: {\n fontSize: 16,\n },\n },\n endIcon: {\n marginLeft: 4,\n [`&.${buttonClasses.endIcon} > :not(style)`]: {\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 * 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 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';\nimport { semanticSurfaceStyles } from '../semantic-surface.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 }) => semanticSurfaceStyles(theme, color),\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 // MUI v9: size-scoped label rules moved from `labelSmall`/\n // `labelMedium` slots to nested selectors. The class names\n // themselves still ship (and styles still apply), only the\n // top-level `styleOverrides.labelSmall` slot was removed.\n '&.MuiChip-labelSmall': {\n fontSize: '0.75rem',\n paddingLeft: 8,\n paddingRight: 8,\n },\n '&.MuiChip-labelMedium': {\n fontSize: '0.8125rem',\n paddingLeft: 12,\n paddingRight: 12,\n },\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 theme/components/TextField\n */\n\nimport type { Theme, Components, ComponentsVariants, 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// VARIANT TYPE ALIASES\n//\n// Pulling the MUI ComponentsVariants shapes into local names keeps\n// the exported variant arrays declaration-emit-portable — without\n// them, TS infers a structural type that pulls every csstype property\n// into the .d.ts and the build fails on \"cannot be named without a\n// reference to <CSS prop>\".\n// =============================================================================\n\ntype InputBaseVariantsT = NonNullable<ComponentsVariants<Theme>['MuiInputBase']>;\ntype OutlinedInputVariantsT = NonNullable<ComponentsVariants<Theme>['MuiOutlinedInput']>;\ntype FilledInputVariantsT = NonNullable<ComponentsVariants<Theme>['MuiFilledInput']>;\n\n// =============================================================================\n// REUSABLE STYLE + VARIANTS\n//\n// Mirrors the Minimals starter's split: each input flavour exposes a\n// static `*Styles` object (color, focus, disabled, notch) and a\n// `*Variants` array (conditional padding by `multiline`, `size`,\n// `hiddenLabel`). The factory functions below stitch them into the\n// final `Components<Theme>` objects. The split has three concrete\n// benefits over an inline callback per styleOverride slot:\n//\n// 1. Variant rules ship through MUI's native `variants` API, so\n// MUI's styled engine generates the compound class (e.g.\n// `.MuiInputBase-input.{hash}.{ms.MuiOutlinedInput-input}` for\n// \"input + multiline + outlined\"). That's how MUI authors\n// conditional styles internally — same specificity tier, same\n// style-injection order — so we never lose the runtime race\n// that nested `&.X` selectors were prone to.\n// 2. Padding constants for multiline collapse to a single\n// `{ padding: 0 }` instead of a `{ paddingTop, paddingBottom }`\n// pair: MUI's variant compositor zeroes the inner element\n// cleanly while the matching root-side variant supplies the\n// inset. No `!important` needed anywhere.\n// 3. Other components (date-picker text inputs, autocomplete's\n// renderInput, custom search bars) can reuse `inputBaseStyles`\n// + `*Variants` instead of duplicating the matrix.\n// =============================================================================\n\n/**\n * Variant that zeroes ALL padding on the inner element of a\n * multiline input. The matching root-side variant (per flavour\n * below) restores the visible inset, so the textarea sits cleanly\n * inside the border without doubled vertical gaps.\n */\nconst multilineInputVariants: InputBaseVariantsT = [\n {\n props: (props: Record<string, unknown>) => !!props.multiline,\n style: { padding: 0 },\n },\n];\n\n// -----------------------------------------------------------------------------\n// InputBase\n// -----------------------------------------------------------------------------\n\nexport const inputBaseStyles = {\n root: (theme: Theme): CSSObject => ({\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: Theme): CSSObject => ({\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\nexport const inputBaseVariants: { root: InputBaseVariantsT; input: InputBaseVariantsT } = {\n // Root-side multiline padding (single-line keeps the inner one).\n // Mirrors the outlined/filled root variants so a bare InputBase\n // (no decorator variant) still renders consistent multiline\n // padding even when consumers swap variants.\n root: [\n {\n props: (props: Record<string, unknown>) => !!props.multiline,\n style: { ...INPUT_PADDING.base.medium },\n },\n {\n props: (props: Record<string, unknown>) => !!props.multiline && props.size === 'small',\n style: { ...INPUT_PADDING.base.small },\n },\n ],\n input: [\n {\n props: {},\n style: { ...INPUT_PADDING.base.medium },\n },\n {\n props: (props: Record<string, unknown>) => props.size === 'small',\n style: { ...INPUT_PADDING.base.small },\n },\n ],\n};\n\n/**\n * Create InputBase overrides.\n */\nexport function createInputBaseOverrides(_config: ComponentsConfig): Components<Theme>['MuiInputBase'] {\n return {\n styleOverrides: {\n root: ({ theme }) => ({\n ...inputBaseStyles.root(theme),\n variants: inputBaseVariants.root,\n }),\n input: ({ theme }) => ({\n ...inputBaseStyles.input(theme),\n variants: [...inputBaseVariants.input, ...multilineInputVariants],\n }),\n },\n };\n}\n\n// -----------------------------------------------------------------------------\n// Input (standard variant — underline)\n// -----------------------------------------------------------------------------\n\nexport const inputStyles = {\n root: (theme: Theme): CSSObject => ({\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 * Create Input (standard variant underline) overrides.\n */\nexport function createInputOverrides(_config: ComponentsConfig): Components<Theme>['MuiInput'] {\n return {\n styleOverrides: {\n root: ({ theme }) => inputStyles.root(theme),\n },\n };\n}\n\n// -----------------------------------------------------------------------------\n// OutlinedInput\n// -----------------------------------------------------------------------------\n\nexport const outlinedInputStyles = {\n root: (theme: Theme, borderRadius: number | string): CSSObject => ({\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 notchedOutline: (theme: Theme): CSSObject => ({\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 // MUI uses an aria-hidden zero-width spacer when the field has no label.\n '& legend > span:not([aria-hidden])': { paddingInline: 3 },\n }),\n};\n\nexport const outlinedInputVariants: { root: OutlinedInputVariantsT; input: OutlinedInputVariantsT } = {\n root: [\n {\n props: (props: Record<string, unknown>) => !!props.multiline,\n style: { ...INPUT_PADDING.outlined.medium },\n },\n {\n props: (props: Record<string, unknown>) => !!props.multiline && props.size === 'small',\n style: { ...INPUT_PADDING.outlined.small },\n },\n ],\n input: [\n {\n props: {},\n style: { ...INPUT_PADDING.outlined.medium },\n },\n {\n props: (props: Record<string, unknown>) => props.size === 'small',\n style: { ...INPUT_PADDING.outlined.small },\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 ...outlinedInputStyles.root(theme, borderRadius),\n variants: outlinedInputVariants.root,\n }),\n // MUI v9 narrowed `styleOverrides[slot]` to `CSSObject` and\n // hoisted the `variants` API to the component-level\n // `variants` field. We still emit the variants on the slot\n // because (a) MUI's styled engine honours them there at\n // runtime, (b) per-slot variant styles wouldn't translate\n // cleanly to component-level (each entry would need a\n // descendant selector targeting the slot class).\n //\n // The cast escapes the narrowed type without lying about\n // runtime shape — the engine reads `variants` from the\n // returned object regardless of where TypeScript thinks it\n // belongs.\n input: () => ({\n variants: [...outlinedInputVariants.input, ...multilineInputVariants] as OutlinedInputVariantsT,\n }) as unknown as CSSObject,\n notchedOutline: ({ theme }) => outlinedInputStyles.notchedOutline(theme),\n },\n };\n}\n\n// -----------------------------------------------------------------------------\n// FilledInput\n// -----------------------------------------------------------------------------\n\nexport const filledInputStyles = {\n root: (theme: Theme, borderRadius: number | string): CSSObject => {\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};\n\nexport const filledInputVariants: { root: FilledInputVariantsT; input: FilledInputVariantsT } = {\n // FilledInput has an extra dimension: `hiddenLabel`. When the\n // label is hidden, the visible inset shrinks because there's no\n // label to clear, so a separate padding set applies.\n root: [\n {\n props: (props: Record<string, unknown>) => !!props.multiline,\n style: { ...INPUT_PADDING.filled.medium },\n },\n {\n props: (props: Record<string, unknown>) => !!props.multiline && props.size === 'small',\n style: { ...INPUT_PADDING.filled.small },\n },\n {\n props: (props: Record<string, unknown>) => !!props.multiline && !!props.hiddenLabel,\n style: { ...INPUT_PADDING.filled.mediumHidden },\n },\n {\n props: (props: Record<string, unknown>) =>\n !!props.multiline && !!props.hiddenLabel && props.size === 'small',\n style: { ...INPUT_PADDING.filled.smallHidden },\n },\n ],\n input: [\n {\n props: {},\n style: { ...INPUT_PADDING.filled.medium },\n },\n {\n props: (props: Record<string, unknown>) => props.size === 'small',\n style: { ...INPUT_PADDING.filled.small },\n },\n {\n props: (props: Record<string, unknown>) => !!props.hiddenLabel,\n style: { ...INPUT_PADDING.filled.mediumHidden },\n },\n {\n props: (props: Record<string, unknown>) =>\n !!props.hiddenLabel && props.size === 'small',\n style: { ...INPUT_PADDING.filled.smallHidden },\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 ...filledInputStyles.root(theme, borderRadius),\n variants: filledInputVariants.root,\n }),\n // See the OutlinedInput counterpart above for the rationale.\n input: () => ({\n variants: [...filledInputVariants.input, ...multilineInputVariants] as FilledInputVariantsT,\n }) as unknown as CSSObject,\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","import { createPrismIcon } from '../../icons/context.js';\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 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 */\nfunction DefaultCheckboxIcon(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 */\nfunction DefaultCheckboxCheckedIcon(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 */\nfunction DefaultCheckboxIndeterminateIcon(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\nexport const CheckboxIcon = createPrismIcon('checkbox', DefaultCheckboxIcon);\n\nexport const CheckboxCheckedIcon = createPrismIcon('checkboxChecked', DefaultCheckboxCheckedIcon);\n\nexport const CheckboxIndeterminateIcon = createPrismIcon('checkboxMixed', DefaultCheckboxIndeterminateIcon);\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 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 * Dialog Component Overrides\n *\n * MuiDialog + MuiDialogTitle + MuiDialogContent + MuiDialogActions\n * as one cohesive module. The visible inset is shared (24/16/20px\n * combinations) so co-locating the four keeps the spacing scale\n * obvious at a glance.\n *\n * @module theme/components/Dialog\n */\n\nimport type { Theme, Components } from '@mui/material/styles';\nimport type { ComponentsConfig } from '../../types/theme.js';\nimport { getDensityMultiplier, getGreyChannel } from './theme-utils.js';\n\n/**\n * Bundle of dialog-family component overrides. Spread into the\n * top-level `Components<Theme>` map.\n */\nexport function createDialogOverrides(config: ComponentsConfig): {\n MuiDialog: Components<Theme>['MuiDialog'];\n MuiDialogTitle: Components<Theme>['MuiDialogTitle'];\n MuiDialogContent: Components<Theme>['MuiDialogContent'];\n MuiDialogActions: Components<Theme>['MuiDialogActions'];\n} {\n const { density, borderRadius } = config;\n const dm = getDensityMultiplier(density);\n\n return {\n MuiDialog: {\n styleOverrides: {\n paper: ({ theme }) => ({\n boxShadow: `0 24px 48px -12px rgba(${getGreyChannel(theme, '900')} / 0.24)`,\n variants: [\n // Mobile-first: any dialog (non-fullScreen included) goes\n // edge-to-edge on < sm. MUI's `maxWidth`/`fullWidth` props\n // attach their own paper-sizing rules at the same\n // specificity tier — encoding the rule as a `variants`\n // entry lets MUI's styled engine compose it without the\n // !important pile that the old descendant override used.\n {\n props: () => true,\n style: {\n [theme.breakpoints.down('sm')]: {\n margin: 0,\n width: '100%',\n maxWidth: 'none',\n maxHeight: '100dvh',\n height: '100dvh',\n borderRadius: 0,\n },\n },\n },\n {\n props: (props: Record<string, unknown>) => !props.fullScreen,\n style: {\n borderRadius: borderRadius * 2,\n [theme.breakpoints.down('sm')]: { borderRadius: 0 },\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 overflowWrap: 'anywhere',\n }),\n },\n },\n MuiDialogContent: {\n styleOverrides: {\n root: {\n padding: `${16 * dm}px ${24 * dm}px`,\n minWidth: 0,\n overflowWrap: 'anywhere',\n '.MuiDialogTitle-root + &': { paddingTop: 16 * dm },\n },\n },\n },\n MuiDialogActions: {\n styleOverrides: {\n root: {\n padding: `${16 * dm}px ${24 * dm}px`,\n gap: 8,\n flexWrap: 'wrap',\n '& > :not(style) ~ :not(style)': { marginLeft: 0 },\n },\n },\n },\n };\n}\n","/**\n * Card Component Overrides\n *\n * MuiCard + MuiCardHeader + MuiCardContent + MuiCardActions as one\n * cohesive module. The padding rhythm (16/20 at default density,\n * scaled by `dm`) is shared across all four — co-locating them\n * keeps the rhythm explicit and lets a theme tweak land in one\n * place.\n *\n * @module theme/components/Card\n */\n\nimport type { Theme, Components } from '@mui/material/styles';\nimport type { ComponentsConfig } from '../../types/theme.js';\nimport { getDensityMultiplier, getGreyChannel, paletteVar } from './theme-utils.js';\n\nexport function createCardOverrides(config: ComponentsConfig): {\n MuiCard: Components<Theme>['MuiCard'];\n MuiCardHeader: Components<Theme>['MuiCardHeader'];\n MuiCardContent: Components<Theme>['MuiCardContent'];\n MuiCardActions: Components<Theme>['MuiCardActions'];\n} {\n const { density, borderRadius } = config;\n const dm = getDensityMultiplier(density);\n\n return {\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 ${paletteVar(theme, '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 slotProps: {\n title: { variant: 'h6' },\n subheader: { variant: 'body2' },\n },\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: paletteVar(theme, '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","/**\n * Autocomplete Component Overrides\n *\n * @module theme/components/Autocomplete\n */\n\nimport type { Theme, Components } from '@mui/material/styles';\nimport type { ComponentsConfig } from '../../types/theme.js';\nimport { autocompleteClasses } from '@mui/material/Autocomplete';\nimport { svgIconClasses } from '@mui/material/SvgIcon';\nimport { getGreyChannel, paletteVar } from './theme-utils.js';\n\nexport function createAutocompleteOverrides(config: ComponentsConfig): Components<Theme>['MuiAutocomplete'] {\n const { borderRadius } = config;\n\n return {\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: paletteVar(theme, 'action.hover'),\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: paletteVar(theme, 'action.selected'),\n fontWeight: 500,\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: paletteVar(theme, '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 * DataGrid (MUI X) Component Overrides\n *\n * MuiDataGrid uses descendant `& .MuiDataGrid-X` selectors instead\n * of per-slot styleOverrides — that's the official theming API for\n * DataGrid in MUI X (slots exposed via internal class names), not\n * an anti-pattern.\n *\n * @module theme/components/DataGrid\n */\n\nimport type { Theme, Components } from '@mui/material/styles';\n// Module augmentation: registers `MuiDataGrid` on `Components<Theme>`\n// so `Components<Theme>['MuiDataGrid']` typechecks. The DataGrid lives\n// in a separate `@mui/x-data-grid` package, so its augmentation entry\n// must be imported explicitly by any consumer that themes it.\nimport '@mui/x-data-grid/themeAugmentation';\nimport type { ComponentsConfig } from '../../types/theme.js';\nimport { getColorChannel, getGreyChannel, paletteVar } from './theme-utils.js';\n\nexport function createDataGridOverrides(config: ComponentsConfig): Components<Theme>['MuiDataGrid'] {\n const { borderRadius } = config;\n\n return {\n styleOverrides: {\n root: ({ theme }: { theme: Theme }) => ({\n border: 'none',\n borderRadius,\n // background.neutral falls back to grey[50] (different path\n // on either side) — kept as a manual chain rather than\n // paletteVar() so the fallback is explicit.\n '--DataGrid-containerBackground':\n theme.vars?.palette.background.neutral || theme.palette.grey[50],\n '--DataGrid-pinnedBackground': paletteVar(theme, 'background.paper'),\n '& .MuiDataGrid-columnHeaders': {\n borderBottom: `1px solid ${paletteVar(theme, 'divider')}`,\n },\n '& .MuiDataGrid-columnHeader': {\n fontWeight: 600,\n fontSize: theme.typography.pxToRem(14),\n color: paletteVar(theme, '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: paletteVar(theme, '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 ${paletteVar(theme, '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: paletteVar(theme, 'divider'),\n },\n }),\n },\n };\n}\n","/**\n * Date Picker (MUI X) Component Overrides\n *\n * MuiDatePicker + MuiPickersLayout + MuiPickersDay + MuiPickersYear\n * + MuiPickersMonth as one cohesive module. They share the picker\n * grid's rhythm (day buttons borderRadius, today indicator, etc.)\n * so it makes sense to co-locate.\n *\n * @module theme/components/DatePicker\n */\n\nimport type { Theme } from '@mui/material/styles';\nimport type { ComponentsConfig } from '../../types/theme.js';\nimport { paletteVar } from './theme-utils.js';\n\n// MuiPickers* keys aren't on the public `Components<Theme>` map\n// (they live on @mui/x-date-pickers' separate theme augmentation),\n// so the return type uses a permissive Record for those slots.\nexport function createDatePickerOverrides(config: ComponentsConfig): {\n MuiDatePicker: Record<string, unknown>;\n MuiPickersLayout: Record<string, unknown>;\n MuiPickersDay: Record<string, unknown>;\n MuiPickersYear: Record<string, unknown>;\n MuiPickersMonth: Record<string, unknown>;\n} {\n const { density, borderRadius } = config;\n\n return {\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: () => ({\n borderRadius: borderRadius - 2,\n fontWeight: 400,\n '&.Mui-selected': {\n fontWeight: 600,\n },\n }),\n today: ({ theme }: { theme: Theme }) => ({\n borderColor: paletteVar(theme, 'primary.main'),\n '&:not(.Mui-selected)': {\n backgroundColor: 'transparent',\n },\n }),\n },\n },\n MuiPickersYear: {\n styleOverrides: {\n yearButton: () => ({\n borderRadius,\n '&.Mui-selected': {\n fontWeight: 600,\n },\n }),\n },\n },\n MuiPickersMonth: {\n styleOverrides: {\n monthButton: () => ({\n borderRadius,\n '&.Mui-selected': {\n fontWeight: 600,\n },\n }),\n },\n },\n };\n}\n","import { scrollbarStyles } from '../mixins.js';\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 theme/components\n */\n\nimport type { Components, Theme } from '@mui/material/styles';\nimport type { ComponentsConfig } from '../../types/theme.js';\nimport { semanticSurfaceStyles } from '../semantic-surface.js';\n\nimport { iconButtonClasses } from '@mui/material/IconButton';\nimport { accordionClasses } from '@mui/material/Accordion';\nimport { accordionSummaryClasses } from '@mui/material/AccordionSummary';\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, paletteVar } 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';\nimport { createDialogOverrides } from './Dialog.js';\nimport { createCardOverrides } from './Card.js';\nimport { createAutocompleteOverrides } from './Autocomplete.js';\nimport { createDataGridOverrides } from './DataGrid.js';\nimport { createDatePickerOverrides } from './DatePicker.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: paletteVar(theme, '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: createAutocompleteOverrides(config),\n\n // =========================================================================\n // CARDS — modularized in ./Card.ts\n // =========================================================================\n ...createCardOverrides(config),\n\n // =========================================================================\n // LAYOUT\n // =========================================================================\n /**\n * `Stack` spaces its children with CSS `gap`, never with margins.\n *\n * MUI's own default (`useFlexGap: false`) gives every child but the first\n * a margin on the spacing side, and resets every child's own margin to 0.\n * Both halves of that were measured in this codebase on 2026-09-22:\n *\n * - when a row wraps, the first item of every wrapped line keeps its\n * margin and the first item of the first line does not, so the first\n * line sits one gap to the left of the rest. The release console's\n * gate strip showed it; the same shape — a wrapping `Stack` with\n * `spacing` — was in 146 places across the console, prism and the\n * portal;\n * - a child's own margin is silently discarded. `ml: 'auto'` does not\n * push, `mt: -1.5` does not pull a subtitle up, `FormControlLabel`\n * loses the -11px that aligns its control with the text around it —\n * which is why `ml: 'auto !important'` appears in both apps, and why\n * eight `ml: 'auto'` in the portal did nothing at all.\n *\n * `gap` has neither problem, every browser the apps support implements it,\n * and MUI recommends turning it on here, globally. A child's margin now\n * ADDS to the gap, as margins do everywhere else in CSS.\n */\n MuiStack: {\n defaultProps: {\n useFlexGap: true,\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 — modularized in ./Dialog.ts\n // =========================================================================\n ...createDialogOverrides(config),\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 ${paletteVar(theme, '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 // Every disclosure owns its full outline and all four corners.\n // Use MUI's native rounded state to override its edge-only radii,\n // independent of siblings (including Emotion's SSR style tags).\n // The square prop remains authoritative when rounded is absent.\n border: `1px solid ${paletteVar(theme, 'divider')}`,\n borderRadius: 0,\n [`&.${accordionClasses.rounded}`]: {\n borderRadius,\n },\n '&::before': {\n display: 'none',\n },\n [`&.${accordionClasses.disabled}`]: {\n backgroundColor: 'transparent',\n },\n }),\n },\n },\n MuiAccordionSummary: {\n styleOverrides: {\n root: ({ theme }) => ({\n ...theme.typography.body2,\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 alignItems: 'center',\n gap: 8 * dm,\n minWidth: 0,\n margin: `${12 * dm}px 0`,\n [`&.${accordionSummaryClasses.expanded}`]: {\n margin: `${12 * dm}px 0`,\n },\n },\n expandIconWrapper: ({ theme }) => ({\n color: paletteVar(theme, 'text.secondary'),\n flexShrink: 0,\n marginInlineStart: 8 * dm,\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 ${paletteVar(theme, 'divider')}`,\n containerType: 'inline-size',\n containerName: 'prism-pagination',\n '@container prism-pagination (max-width: 420px)': {\n '& .MuiTablePagination-toolbar': {\n display: 'grid',\n gridTemplateColumns: '1fr auto',\n gap: '0 8px',\n padding: '4px 8px',\n },\n '& .MuiTablePagination-spacer': { display: 'none' },\n '& .MuiTablePagination-selectLabel, & .MuiTablePagination-displayedRows': { margin: '4px 0' },\n '& .MuiTablePagination-input, & .MuiTablePagination-actions': { margin: 0, justifySelf: 'end' },\n },\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: paletteVar(theme, 'text.primary'),\n },\n [`&.${stepLabelClasses.completed}`]: {\n fontWeight: 500,\n color: paletteVar(theme, 'text.primary'),\n },\n }),\n iconContainer: {\n paddingRight: 12 * dm,\n },\n },\n },\n MuiStepConnector: {\n styleOverrides: {\n line: ({ theme }) => ({\n borderColor: paletteVar(theme, 'divider'),\n borderTopWidth: 2,\n }),\n },\n },\n MuiStepIcon: {\n styleOverrides: {\n root: ({ theme }) => ({\n color: paletteVar(theme, 'grey.300'),\n [`&.${stepIconClasses.active}`]: {\n color: paletteVar(theme, 'primary.main'),\n },\n [`&.${stepIconClasses.completed}`]: {\n color: paletteVar(theme, '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 ${paletteVar(theme, '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: paletteVar(theme, 'divider'),\n [`&.${paginationItemClasses.selected}`]: {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.08)`,\n borderColor: paletteVar(theme, 'primary.main'),\n },\n }),\n text: ({ theme }) => ({\n [`&.${paginationItemClasses.selected}`]: {\n backgroundColor: paletteVar(theme, 'primary.main'),\n color: paletteVar(theme, 'primary.contrastText'),\n '&:hover': {\n backgroundColor: paletteVar(theme, 'primary.dark'),\n },\n },\n }),\n previousNext: ({ theme }) => ({\n borderRadius: borderRadius - 2,\n '&:hover': {\n backgroundColor: paletteVar(theme, '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: paletteVar(theme, 'grey.800'),\n }),\n arrow: ({ theme }) => ({\n color: paletteVar(theme, '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:\n theme.vars?.palette.background.neutral ||\n theme.palette.background.neutral ||\n paletteVar(theme, 'background.paper'),\n color: paletteVar(theme, '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 // MUI v9 removed `backIconButtonProps`/`nextIconButtonProps` —\n // both replaced by slotProps.\n slotProps: {\n select: { name: 'table-pagination-select' },\n actions: {\n previousButton: { size: 'small' },\n nextButton: { size: 'small' },\n },\n },\n },\n styleOverrides: {\n root: ({ theme }) => ({\n borderTop: `1px solid ${paletteVar(theme, 'divider')}`,\n containerType: 'inline-size',\n containerName: 'prism-pagination',\n '@container prism-pagination (max-width: 420px)': {\n '& .MuiTablePagination-toolbar': {\n display: 'grid',\n gridTemplateColumns: '1fr auto',\n gap: '0 8px',\n padding: '4px 8px',\n },\n '& .MuiTablePagination-spacer': { display: 'none' },\n '& .MuiTablePagination-selectLabel, & .MuiTablePagination-displayedRows': { margin: '4px 0' },\n '& .MuiTablePagination-input, & .MuiTablePagination-actions': { margin: 0, justifySelf: 'end' },\n },\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 // MUI v9: `standardSuccess`/`standardError`/`standardWarning`/\n // `standardInfo` slots were removed in favour of the variants\n // array (props-matched style rules).\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius,\n variants: (['success', 'error', 'warning', 'info'] as const).map((color) => ({\n props: (props) => props.variant === 'standard' && (props.color || props.severity) === color,\n style: {\n ...semanticSurfaceStyles(theme, color, 0.08),\n '& .MuiAlert-icon': { color: 'inherit' },\n },\n })),\n }),\n },\n },\n MuiAlertTitle: {\n // The title slot in Alert was unstyled — defaulted to MUI's\n // generic Typography preset and stuck out vs the Alert body\n // text, especially at compact density where 14/16 became\n // 13/14 around it. Pin to a slightly larger weight with the\n // alert's own colour inheritance.\n styleOverrides: {\n root: ({ theme }) => ({\n fontWeight: 600,\n fontSize: theme.typography.pxToRem(14),\n marginBottom: theme.spacing(0.5),\n lineHeight: 1.5,\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 MuiCircularProgress: {\n // Density-aware default size — the bare MUI default is 40px,\n // which dwarfs adornments / inline loaders at compact density.\n // Consumers can still override per-instance.\n defaultProps: {\n size: density === 'compact' ? 20 : density === 'comfortable' ? 32 : 24,\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: paletteVar(theme, 'action.disabled'),\n },\n }),\n rail: ({ theme }) => ({\n opacity: 0.32,\n backgroundColor: paletteVar(theme, '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: paletteVar(theme, '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: paletteVar(theme, 'grey.800'),\n '&::before': {\n display: 'none',\n },\n }),\n mark: ({ theme }) => ({\n width: 4,\n height: 4,\n borderRadius: '50%',\n backgroundColor: paletteVar(theme, 'grey.400'),\n }),\n markActive: ({ theme }) => ({\n backgroundColor: paletteVar(theme, '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: paletteVar(theme, 'grey.300'),\n }),\n iconFilled: ({ theme }) => ({\n color: paletteVar(theme, 'warning.main'),\n }),\n iconHover: ({ theme }) => ({\n color: paletteVar(theme, '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 MuiList: {\n // Default MUI list padding is 8/0/8/0 — fine for spacious lists\n // but it stacks awkwardly with our ListItemButton's `margin: 2`\n // (the first/last buttons end up indented away from the\n // container edge). Density-aware top/bottom keeps the seam tight\n // while leaving the side at 0 so the row hover bleed reaches\n // the container border.\n styleOverrides: {\n root: {\n paddingTop: density === 'compact' ? 4 : 8,\n paddingBottom: density === 'compact' ? 4 : 8,\n // MenuList renders a MuiList root; it does not consume a separate\n // MuiMenuList style override. Cover standalone and Select menus too.\n '&[role=\"menu\"], &[role=\"listbox\"]': {\n padding: 4,\n '& > .MuiDivider-root': { margin: '8px 6px' },\n },\n },\n },\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: paletteVar(theme, 'action.hover'),\n },\n }),\n },\n },\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n minWidth: 40,\n },\n },\n },\n MuiListItemText: {\n // Multiline rows (primary + secondary) inherited MUI defaults\n // that left an awkward 6px gap between the two lines at any\n // density. Tighten the inter-line gap and reduce horizontal\n // padding so dense rows actually FEEL dense.\n styleOverrides: {\n root: {\n marginTop: 0,\n marginBottom: 0,\n },\n primary: ({ theme }) => ({\n fontSize: theme.typography.pxToRem(density === 'compact' ? 13 : 14),\n fontWeight: 500,\n lineHeight: 1.5,\n }),\n secondary: ({ theme }) => ({\n fontSize: theme.typography.pxToRem(density === 'compact' ? 12 : 13),\n lineHeight: 1.5,\n color: paletteVar(theme, 'text.secondary'),\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 scrollPaddingBlock: 6,\n maxWidth: 'calc(100vw - 32px)',\n boxShadow: `0 0 2px 0 rgba(${getGreyChannel(theme)} / 0.24), -20px 20px 40px -4px rgba(${getGreyChannel(theme)} / 0.24)`,\n }),\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: ({ theme }) => ({\n ...theme.typography.body2,\n minWidth: 0,\n whiteSpace: 'normal',\n overflowWrap: 'anywhere',\n borderRadius: borderRadius - 2,\n margin: 2,\n padding: `${8 * dm}px ${12 * dm}px`,\n // `:not(:last-child)` — element-tag-agnostic position\n // selector. The `:last-of-type` form was wrong when a\n // <Divider /> ended the list (the previous MenuItem\n // became the last-of-type MenuItem and kept its\n // margin-bottom, creating an inconsistent gap).\n '&:not(:last-child)': {\n marginBottom: 4,\n },\n '&.Mui-selected': {\n fontWeight: 500,\n backgroundColor: paletteVar(theme, 'action.selected'),\n '&:hover': {\n backgroundColor: paletteVar(theme, 'action.hover'),\n },\n },\n }),\n },\n },\n MuiPopover: {\n styleOverrides: {\n root: ({ ownerState }) => ({\n // MUI keeps the modal root mounted during Grow's exit. Once closed,\n // it must stop swallowing the next click on the surrounding UI.\n pointerEvents: ownerState.open ? undefined : 'none',\n }),\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, ownerState }) => ({\n // Menus/popovers use an invisible click-away layer; only modals dim the page.\n backgroundColor: ownerState.invisible ? 'transparent' : `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: paletteVar(theme, '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 ${paletteVar(theme, 'divider')}`,\n [`&.${toggleButtonClasses.selected}`]: {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.08)`,\n // `currentColor` makes the border track the foreground\n // colour set on the selected state — by default that\n // foreground is primary (set on the same rule below),\n // but consumers that override `color` via the MUI\n // `color` prop or an inline `sx` (e.g. /admin/messaging\n // settings sets per-button OPT_COLOR for success /\n // warning / error / info modes) get a border that\n // matches without needing to also override the border\n // shorthand. Defeats the prior \"half-and-half\" bug\n // where prism forced primary on left+top while the\n // consumer's sx painted right+bottom in OPT_COLOR.\n borderColor: 'currentColor',\n color: paletteVar(theme, 'primary.main'),\n '&:hover': {\n backgroundColor: `rgba(${getColorChannel(theme, 'primary')} / 0.16)`,\n },\n },\n [`&.${toggleButtonClasses.disabled}`]: {\n borderColor: paletteVar(theme, '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 // ToggleButtonGroup is a single connected segmented control,\n // not a row of independent buttons. The canonical MUI v9\n // implementation tags non-edge children with the\n // `firstButton / middleButton / lastButton` classes (replacing\n // the deprecated `:not(:first-of-type)` sibling pattern from\n // MUI v5) and uses an overlap-and-collapse trick:\n //\n // horizontal: margin-left: -1; border-left: 1px solid transparent\n // border-top/bottom-left-radius: 0\n // vertical: margin-top: -1; border-top: 1px solid transparent\n // border-top-left/right-radius: 0\n //\n // So the visible seam between segments is the *previous*\n // button's right (or bottom) border, painted through a\n // transparent slot on the next button.\n //\n // The bug the user hit: the selected button's left edge stayed\n // transparent, so the indigo outline looked broken on its\n // joining side. The fix is a single rule — lift the selected\n // segment above its neighbours with z-index, and restate the\n // seam-edge as primary so it overpaints the divider that the\n // previous sibling owns. We deliberately do NOT force `gap` or\n // a per-button left border (the historical prism override),\n // because that fragments the control into independent boxes\n // and breaks the segmented-control affordance.\n //\n // No `:not(:first-of-type)` here — MUI v9 fully removed that\n // pattern in favour of position classes, and using both\n // mechanisms creates cascade ambiguity that bit us before.\n MuiToggleButtonGroup: {\n styleOverrides: {\n grouped: ({ theme }) => ({\n // Restate the seam-edge with the divider colour on\n // unselected middle/last buttons. MUI's default is\n // `1px solid transparent` for the legacy \"overlap with\n // negative margin\" pattern (inline-flex layout). That\n // pattern hides the transparent seam under the previous\n // sibling's right border. But consumers regularly pass\n // `sx={{ display: 'grid' }}` (e.g. /admin/messaging\n // settings) — and grid ignores the negative margin, so\n // the seam-edge becomes a visibly missing border.\n //\n // Painting the seam as `divider` here is a no-op in the\n // canonical inline-flex layout (it sits exactly under\n // prev's right border) and restores the missing edge in\n // grid/custom layouts. One rule, both cases.\n borderLeftColor: paletteVar(theme, 'divider'),\n borderTopColor: paletteVar(theme, 'divider'),\n [`&.${toggleButtonClasses.selected}`]: {\n // Lift above neighbours so the selected outline paints\n // OVER the prev sibling's seam border. Without z-index\n // the divider connecting two segments swallows the\n // selected segment's leading edge in inline-flex.\n zIndex: 1,\n // Seam edges use `currentColor` rather than a hard-\n // coded primary so per-button colour overrides (MUI\n // `color` prop, inline `sx={{ color }}`) propagate\n // uniformly to all four sides. The previous primary-\n // forced longhands fought consumer styling on the\n // left/top while letting it through on right/bottom,\n // producing the visible \"half-and-half\" border bug.\n borderLeftColor: 'currentColor',\n borderTopColor: 'currentColor',\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: paletteVar(theme, 'divider'),\n backgroundColor: 'transparent',\n }),\n },\n },\n MuiTimelineConnector: {\n styleOverrides: {\n root: ({ theme }: { theme: Theme }) => ({\n backgroundColor: paletteVar(theme, '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) — modularized in ./DataGrid.ts\n // =========================================================================\n MuiDataGrid: createDataGridOverrides(config),\n\n // =========================================================================\n // DATE/TIME PICKERS (MUI X) — modularized in ./DatePicker.ts\n // =========================================================================\n ...createDatePickerOverrides(config),\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: paletteVar(theme, '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 'html, body, *': scrollbarStyles(theme),\n '*, *::before, *::after': {\n boxSizing: 'border-box',\n },\n '#root, #__next': {\n height: '100%',\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 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 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 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 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: '#000000',\n },\n info: {\n lighter: '#E0F7FA',\n light: '#80DEEA',\n main: '#26C6DA',\n dark: '#00ACC1',\n darker: '#00838F',\n contrastText: '#000000',\n },\n success: {\n lighter: '#E8F5E9',\n light: '#A5D6A7',\n main: '#66BB6A',\n dark: '#43A047',\n darker: '#2E7D32',\n contrastText: '#000000',\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: '#000000',\n },\n secondary: {\n lighter: '#E3F2FD',\n light: '#90CAF9',\n main: '#64B5F6',\n dark: '#42A5F5',\n darker: '#1E88E5',\n contrastText: '#000000',\n },\n info: {\n lighter: '#E0F7FA',\n light: '#80DEEA',\n main: '#4DD0E1',\n dark: '#26C6DA',\n darker: '#00ACC1',\n contrastText: '#000000',\n },\n success: {\n lighter: '#E8F5E9',\n light: '#A5D6A7',\n main: '#81C784',\n dark: '#66BB6A',\n darker: '#4CAF50',\n contrastText: '#000000',\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","import type { Components, Theme } from '@mui/material/styles';\nimport { forwardRef } from 'react';\nimport type { SvgIconProps } from '@mui/material/SvgIcon';\nimport type { PrismIconComponent } from './context.js';\nimport { TableIcon } from '../components/editor/icons/index.js';\nimport * as I from './controls.js';\n\nfunction gridIcon(Icon: PrismIconComponent) {\n return forwardRef<SVGSVGElement, Omit<SvgIconProps, 'color'> & { color?: string }>(function GridIcon(\n { color, ...props },\n ref\n ) {\n const palette =\n color === 'action' ||\n color === 'disabled' ||\n color === 'error' ||\n color === 'info' ||\n color === 'inherit' ||\n color === 'primary' ||\n color === 'secondary' ||\n color === 'success' ||\n color === 'warning';\n return <Icon {...props} ref={ref} color={palette ? color : 'inherit'} htmlColor={palette ? undefined : color} />;\n });\n}\nconst grid = {\n MoreIcon: gridIcon(I.MoreIcon),\n ArrowUpIcon: gridIcon(I.ArrowUpIcon),\n ArrowDownIcon: gridIcon(I.ArrowDownIcon),\n FilterIcon: gridIcon(I.FilterIcon),\n TableIcon: gridIcon(TableIcon),\n DownloadIcon: gridIcon(I.DownloadIcon),\n CloseIcon: gridIcon(I.CloseIcon),\n SearchIcon: gridIcon(I.SearchIcon),\n AddIcon: gridIcon(I.AddIcon),\n RemoveIcon: gridIcon(I.RemoveIcon),\n};\n\n/** Public MUI slots keep native focus, keyboard and disabled-state behaviour. */\nexport function prismIconDefaults(): Components<Theme> {\n const icons = {\n MuiSelect: { defaultProps: { IconComponent: I.ChevronDownIcon } },\n MuiNativeSelect: { defaultProps: { IconComponent: I.ChevronDownIcon } },\n MuiAutocomplete: {\n defaultProps: { popupIcon: <I.ChevronDownIcon />, clearIcon: <I.CloseIcon fontSize=\"small\" /> },\n },\n MuiRadio: { defaultProps: { icon: <I.RadioIcon />, checkedIcon: <I.RadioCheckedIcon /> } },\n MuiChip: { defaultProps: { deleteIcon: <I.CloseIcon /> } },\n MuiAlert: {\n defaultProps: {\n iconMapping: {\n success: <I.SuccessIcon />,\n info: <I.InfoIcon />,\n warning: <I.WarningIcon />,\n error: <I.ErrorIcon />,\n },\n slots: { closeIcon: I.CloseIcon },\n },\n },\n MuiPaginationItem: {\n defaultProps: {\n slots: { previous: I.ChevronLeftIcon, next: I.ChevronRightIcon, first: I.FirstPageIcon, last: I.LastPageIcon },\n },\n },\n MuiTablePagination: {\n defaultProps: {\n slots: {\n actions: {\n firstButtonIcon: I.FirstPageIcon,\n previousButtonIcon: I.ChevronLeftIcon,\n nextButtonIcon: I.ChevronRightIcon,\n lastButtonIcon: I.LastPageIcon,\n },\n },\n },\n },\n MuiTableSortLabel: { defaultProps: { IconComponent: I.ArrowDownIcon } },\n MuiBreadcrumbs: { defaultProps: { separator: <I.ChevronRightIcon fontSize=\"inherit\" /> } },\n MuiRating: {\n defaultProps: { icon: <I.StarIcon fontSize=\"inherit\" />, emptyIcon: <I.StarEmptyIcon fontSize=\"inherit\" /> },\n },\n MuiTabs: {\n defaultProps: { slots: { startScrollButtonIcon: I.ChevronLeftIcon, endScrollButtonIcon: I.ChevronRightIcon } },\n },\n MuiDataGrid: {\n defaultProps: {\n slots: {\n columnMenuIcon: grid.MoreIcon,\n columnSortedAscendingIcon: grid.ArrowUpIcon,\n columnSortedDescendingIcon: grid.ArrowDownIcon,\n columnFilteredIcon: grid.FilterIcon,\n columnSelectorIcon: grid.TableIcon,\n exportIcon: grid.DownloadIcon,\n openFilterButtonIcon: grid.FilterIcon,\n quickFilterIcon: grid.SearchIcon,\n quickFilterClearIcon: grid.CloseIcon,\n detailPanelExpandIcon: grid.AddIcon,\n detailPanelCollapseIcon: grid.RemoveIcon,\n },\n },\n },\n } satisfies Components<Theme>;\n return icons;\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 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 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 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 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 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","import { reconcilePaletteOverrides, type PaletteOverrides } from './palette/overrides.js';\nimport { prismIconDefaults } from '../icons/theme.js';\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 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, getContrastText } 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\ntype ThemeOverrideOptions = Omit<ThemeOptions, 'palette'> & { palette?: PaletteOverrides };\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?: ThemeOverrideOptions;\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 */\n/**\n * Swap a palette's primary for an operator-chosen colour.\n *\n * `contrastText` is measured against the resulting `main` rather than taken\n * from the far end of the generated scale. The scale's extreme is a lighter\n * or darker shade of the SAME hue, which is not a contrast guarantee: for\n * `primaryColor: '#FFFFFF'` it produced text and background one step apart —\n * a ratio of 1.00, an invisible label on a button. Mid-tone brand colours\n * landed between 2.5 and 4.3, all below WCAG AA.\n *\n * The presets have always used `getContrastText`; only this override path\n * did not, so a themed console was less readable than an unthemed one.\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: getContrastText(primaryColor),\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: getContrastText(primaryColor),\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: getContrastText(generatedScale[400]),\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: getContrastText(generatedScale[500]),\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 and functions are overwritten outside component style slots.\n * Component style slots compose with MUI interpolation arrays, preserving theme callbacks.\n * Preserves nested component overrides, palette, typography, etc.\n */\nfunction deepMergeThemeOptions(base: ThemeOptions, overrides: Partial<ThemeOptions> | ThemeOverrideOptions): 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 // A slot callback and a plain CSS object are both native MUI styles. Replacing\n // the callback discards density, state selectors and palette-dependent rules.\n // Let MUI evaluate both in order so the consumer overrides only its own rules.\n if (\n key === 'styleOverrides' &&\n baseVal &&\n overrideVal &&\n typeof baseVal === 'object' &&\n typeof overrideVal === 'object'\n ) {\n const slots = { ...(baseVal as Record<string, unknown>) };\n for (const [slot, style] of Object.entries(overrideVal)) {\n if (style !== undefined) slots[slot] = slots[slot] === undefined ? style : [slots[slot], style];\n }\n result[key] = slots;\n } else 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 themedIcons = deepMergeThemeOptions(themeOptions, { components: prismIconDefaults() });\n const finalOptions = overrides ? deepMergeThemeOptions(themedIcons, overrides) : themedIcons;\n\n const variableOptions = typeof finalOptions.cssVariables === 'object' ? finalOptions.cssVariables : undefined;\n finalOptions.palette = reconcilePaletteOverrides(finalOptions.palette!, overrides?.palette, {\n nativeColor: variableOptions?.nativeColor,\n cssVarPrefix: variableOptions?.cssVarPrefix ?? cssVarPrefix,\n });\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"]}
|