@atomazing-org/design-system 1.2.9 → 2.0.2
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/AGENTS.md +92 -0
- package/README.MD +47 -392
- package/dist/index.d.ts +21 -1000
- package/dist/index.js +37 -118
- package/dist/presets/index.d.ts +26 -7
- package/dist/presets/index.js +339 -2
- package/dist/{typography-Dq0wCojD.d.mts → typography-B-BeIk0v.d.ts} +4 -5
- package/migrations/README.UPDATE.md +41 -0
- package/migrations/docs/migrations/design-system/README.md +100 -0
- package/migrations/docs/migrations/design-system/routes/adopt-existing/AEROCRM-EXAMPLE.md +197 -0
- package/migrations/docs/migrations/design-system/routes/adopt-existing/RUNBOOK.md +194 -0
- package/migrations/docs/migrations/design-system/routes/adopt-existing/migration.spec.json +109 -0
- package/migrations/docs/migrations/design-system/routes/greenfield/RUNBOOK.md +61 -0
- package/migrations/docs/migrations/design-system/routes/greenfield/migration.spec.json +58 -0
- package/migrations/docs/migrations/design-system/routes/mui4-to-latest/RUNBOOK.md +140 -0
- package/migrations/docs/migrations/design-system/routes/mui4-to-latest/migration.spec.json +143 -0
- package/migrations/docs/migrations/design-system/routes/mui4-to-latest/token-map.csv +4 -0
- package/migrations/docs/migrations/design-system/schema/migration.spec.schema.json +63 -0
- package/migrations/docs/migrations/design-system/shared/FOUNDATION.md +39 -0
- package/migrations/docs/migrations/design-system/shared/WORKING-RULES.md +194 -0
- package/migrations/docs/migrations/design-system/shared/acceptance.md +83 -0
- package/migrations/docs/migrations/design-system/shared/common-regressions.md +218 -0
- package/migrations/docs/migrations/design-system/shared/gates.md +71 -0
- package/migrations/docs/migrations/design-system/shared/manual-qa-matrix.md +70 -0
- package/migrations/docs/migrations/design-system/shared/phase-exit-criteria.md +129 -0
- package/migrations/docs/migrations/design-system/shared/phases.md +377 -0
- package/migrations/docs/migrations/design-system/shared/rollback.md +13 -0
- package/migrations/skills/design-system-consumer-agent/SKILL.md +84 -0
- package/migrations/skills/design-system-migration-agent/SKILL.md +158 -0
- package/package.json +40 -17
- package/dist/chunk-OYZ4FCLV.mjs +0 -2
- package/dist/chunk-OYZ4FCLV.mjs.map +0 -1
- package/dist/index.d.mts +0 -1181
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -273
- package/dist/index.mjs.map +0 -1
- package/dist/presets/index.d.mts +0 -17
- package/dist/presets/index.js.map +0 -1
- package/dist/presets/index.mjs +0 -2
- package/dist/presets/index.mjs.map +0 -1
- package/dist/typography-Dq0wCojD.d.ts +0 -121
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/DialogBtn.ts","../src/components/ErrorBoundary.tsx","../src/components/Loading.tsx","../src/components/PathName.ts","../src/constants/themes/editorialClassic.ts","../src/constants/themes/modernMinimal.ts","../src/constants/themes/neoGlass.ts","../src/constants/themes/retroTerminal.ts","../src/constants/themes/warmEarth.ts","../src/constants/darkModeOptions.tsx","../src/context/ThemeProviderWrapper.tsx","../src/context/settings/ThemeContext.tsx","../src/utils/normalizeThemes.ts","../src/context/settings/helper.ts","../src/context/settings/usePersistedAppSettings.ts","../src/utils/ssr/canUseDom.ts","../src/utils/storage/appSettingsStorage.ts","../src/styles/global/GlobalStyles.tsx","../src/styles/overrides/commonComponents.ts","../src/styles/tokens.ts","../src/styles/theme/createTheme.ts","../src/utils/browser/useResponsiveDisplay.ts","../src/utils/browser/useSystemTheme.ts","../src/utils/colorUtils.ts","../src/utils/displayGreeting.ts","../src/utils/getDayIdentifier.ts","../src/utils/getSystemInfo.ts","../src/utils/isDarkMode.ts","../src/utils/timeAgo.ts","../src/styles/theme/resolveEffectiveMode.ts","../src/styles/theme/selectThemeOptions.ts","../src/styles/typography/typography.ts","../src/styles/validateSchemeTokens.ts","../src/styles/keyframes.ts"],"sourcesContent":["export * from \"./components\";\nexport * from \"./constants\";\nexport * from \"./context\";\nexport * from \"./styles\";\nexport * from \"./utils\";\nexport * from \"./models\";\n","import styled from \"@emotion/styled\";\nimport { Button } from \"@mui/material\";\n\nexport const DialogBtn = styled(Button)`\n padding: 10px 16px;\n border-radius: 16px;\n font-size: 16px;\n margin: 8px;\n`;\n","/* eslint-disable @typescript-eslint/class-methods-use-this -- only for ErrorBoundary */\nimport React from \"react\";\nimport styled from \"@emotion/styled\";\nimport ErrorOutlineRounded from \"@mui/icons-material/ErrorOutlineRounded\";\nimport { Box } from \"@mui/material\";\n\nimport type { ErrorInfo } from \"react\";\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error?: Error;\n}\n\n/**\n * ErrorBoundary component that catches and displays errors.\n */\nexport class ErrorBoundary extends React.Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = {\n hasError: false,\n };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return {\n hasError: true,\n error,\n };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n // eslint-disable-next-line no-console -- Allow console output for error reporting\n console.error(\"Error:\", error);\n // eslint-disable-next-line no-console -- Allow console output for error reporting\n console.error(\"Error Info:\", errorInfo);\n }\n\n render() {\n const { state, props } = this;\n if (state.hasError) {\n return (\n <Container>\n <ErrorHeader>\n <Box>Something went wrong. </Box>\n </ErrorHeader>\n <h3>\n <Box style={{ color: \"#ff3131\", display: \"inline-block\" }}>\n <ErrorOutlineRounded\n sx={{ verticalAlign: \"middle\", mb: \"4px\" }}\n />{\" \"}\n ERROR:\n </Box>{\" \"}\n <Box translate=\"no\">\n [{state.error?.name}] {state.error?.message}\n </Box>\n <Box style={{ color: \"#ff3131\", display: \"inline-block\" }}>\n <ErrorOutlineRounded\n sx={{ verticalAlign: \"middle\", mb: \"4px\" }}\n />{\" \"}\n Stack:\n </Box>{\" \"}\n <Box translate=\"no\">[{state.error?.stack}]</Box>\n </h3>\n </Container>\n );\n }\n\n return props.children;\n }\n}\n\nconst Container = styled.div`\n margin: 0 8vw;\n @media (max-width: 768px) {\n margin: 0;\n }\n`;\n\nconst ErrorHeader = styled.h1`\n margin-top: 32px;\n margin-bottom: 32px;\n font-size: 36px;\n color: #ff3131;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n @media (max-width: 768px) {\n text-align: left;\n justify-content: left;\n font-size: 30px;\n margin-top: 0;\n margin-bottom: 0;\n }\n`;\n","import { useEffect, useState } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Box, CircularProgress } from \"@mui/material\";\n\nexport const Loading = () => {\n const [showLoading, setShowLoading] = useState<boolean>(false);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setShowLoading(true);\n }, 100); // Show the loading spinner after 100 milliseconds\n\n return () => clearTimeout(timer);\n }, []);\n\n return (\n <Container aria-live=\"polite\" role=\"status\">\n {showLoading && (\n <>\n <CircularProgress aria-label=\"loading\" size={80} thickness={4} />\n <h3 style={{ opacity: 0.8 }}>Loading Page...</h3>\n </>\n )}\n </Container>\n );\n};\n\nconst Container = styled(Box)`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n text-align: center;\n gap: 8px;\n`;\n","import styled from \"@emotion/styled\";\n\nexport const PathName = styled.code`\n background: #000000c8;\n color: white;\n padding: 4px 6px;\n border-radius: 8px;\n`;\n","import { alpha } from \"@mui/material/styles\";\n\nimport type { NamedThemeOptions } from \"@/models\";\n\n/**\n * Editorial Classic — magazine / editorial style.\n * - Light: warm paper background, strict typography, crisp hairline borders.\n * - Dark: ink-on-charcoal with softened borders and the same editorial rhythm.\n *\n * Dark mode note (for your current createCustomTheme implementation):\n * - In dark mode, surface overrides (palette.background, CssBaseline backgrounds)\n * are applied only if the override explicitly sets `palette.mode: \"dark\"`.\n * - Therefore the Dark variant below sets `palette.mode: \"dark\"`.\n */\n\nconst FONT_EDITORIAL =\n '\"Source Serif 4\",\"Noto Naskh Arabic\",\"Tajawal\",\"Cairo\",\"Georgia\",\"Times New Roman\",serif';\n\nexport const editorialClassic = {\n name: \"Editorial Classic\",\n direction: \"rtl\",\n\n palette: {\n mode: \"light\",\n\n primary: {\n // Deep editorial ink (links, focus)\n main: \"#111827\",\n dark: \"#0B1220\",\n light: \"#374151\",\n contrastText: \"#FFFFFF\",\n },\n\n secondary: {\n // Muted burgundy (accents, highlights)\n main: \"#7F1D1D\",\n dark: \"#5B1414\",\n light: \"#B91C1C\",\n contrastText: \"#FFFFFF\",\n },\n\n info: {\n main: \"#1D4ED8\",\n dark: \"#1E40AF\",\n light: \"#60A5FA\",\n contrastText: \"#FFFFFF\",\n },\n success: {\n main: \"#166534\",\n dark: \"#14532D\",\n light: \"#4ADE80\",\n contrastText: \"#FFFFFF\",\n },\n warning: {\n main: \"#B45309\",\n dark: \"#92400E\",\n light: \"#F59E0B\",\n contrastText: \"#0B1220\",\n },\n error: {\n main: \"#B91C1C\",\n dark: \"#991B1B\",\n light: \"#EF4444\",\n contrastText: \"#FFFFFF\",\n },\n\n background: {\n default: \"#FBF7F0\", // warm paper\n paper: \"#FFFFFF\",\n },\n\n text: {\n primary: \"#111827\",\n secondary: \"#4B5563\",\n disabled: alpha(\"#111827\", 0.45),\n },\n\n divider: alpha(\"#111827\", 0.12),\n\n grey: {\n 50: \"#FFFEFC\",\n 100: \"#FBF7F0\",\n 200: \"#F1E8DD\",\n 300: \"#E4D7C7\",\n 400: \"#CBB9A4\",\n 500: \"#9B8A78\",\n 600: \"#6B5E52\",\n 700: \"#4B3F37\",\n 800: \"#2A2624\",\n 900: \"#111827\",\n },\n\n action: {\n hover: alpha(\"#111827\", 0.06),\n selected: alpha(\"#111827\", 0.12),\n focus: alpha(\"#1D4ED8\", 0.18),\n active: alpha(\"#111827\", 0.54),\n disabled: alpha(\"#111827\", 0.32),\n disabledBackground: alpha(\"#111827\", 0.08),\n },\n },\n\n typography: {\n fontFamily: FONT_EDITORIAL,\n\n // Editorial hierarchy (a little more \"print\" feel)\n h1: {\n fontWeight: 800,\n fontSize: \"2.1rem\",\n lineHeight: 1.2,\n letterSpacing: \"-0.02em\",\n },\n h2: {\n fontWeight: 800,\n fontSize: \"1.6rem\",\n lineHeight: 1.25,\n letterSpacing: \"-0.01em\",\n },\n h3: { fontWeight: 800, fontSize: \"1.3rem\", lineHeight: 1.3 },\n h4: { fontWeight: 700, fontSize: \"1.125rem\", lineHeight: 1.4 },\n\n subtitle1: { fontWeight: 700, fontSize: \"0.95rem\" },\n subtitle2: { fontWeight: 700, fontSize: \"0.875rem\" },\n\n body1: { fontSize: \"1rem\", lineHeight: 1.85 },\n body2: { fontSize: \"0.9rem\", lineHeight: 1.75 },\n\n button: { textTransform: \"none\", fontWeight: 700 },\n caption: { fontSize: \"0.78rem\" },\n overline: { fontSize: \"0.75rem\", letterSpacing: \"0.12em\" },\n },\n\n shape: { borderRadius: 10 },\n spacing: 8,\n\n components: {\n MuiCssBaseline: {\n styleOverrides: (theme) => ({\n body: {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n },\n }),\n },\n\n MuiPaper: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 12,\n backgroundImage: \"none\",\n border: `1px solid ${alpha(theme.palette.text.primary, 0.08)}`, // hairline\n }),\n },\n },\n\n MuiCard: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 14,\n border: `1px solid ${alpha(theme.palette.text.primary, 0.1)}`,\n }),\n },\n },\n\n MuiAppBar: {\n defaultProps: { color: \"inherit\", elevation: 0 },\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundColor: theme.palette.background.paper,\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, 0.1)}`,\n }),\n },\n },\n\n MuiButton: {\n defaultProps: { disableElevation: true },\n styleOverrides: {\n root: {\n borderRadius: 10,\n paddingInline: 16,\n paddingBlock: 9,\n },\n outlined: {\n borderWidth: 1,\n },\n },\n },\n\n MuiLink: {\n styleOverrides: {\n root: {\n textDecorationThickness: \"2px\",\n textUnderlineOffset: \"3px\",\n },\n },\n },\n\n MuiOutlinedInput: {\n styleOverrides: {\n root: { borderRadius: 10 },\n notchedOutline: ({ theme }) => ({\n borderColor: alpha(theme.palette.text.primary, 0.18),\n }),\n },\n },\n\n MuiInputLabel: {\n styleOverrides: {\n root: { fontWeight: 700 },\n },\n },\n\n MuiTabs: {\n styleOverrides: {\n root: { minHeight: 44 },\n indicator: { height: 2, borderRadius: 2 },\n },\n },\n\n MuiTab: {\n styleOverrides: {\n root: { minHeight: 44, fontWeight: 700, paddingInline: 14 },\n },\n },\n\n MuiTableHead: {\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundColor: alpha(theme.palette.text.primary, 0.04),\n }),\n },\n },\n\n MuiTableCell: {\n styleOverrides: {\n head: ({ theme }) => ({\n fontWeight: 800,\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, 0.12)}`,\n }),\n body: ({ theme }) => ({\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, 0.08)}`,\n }),\n },\n },\n\n MuiDivider: {\n styleOverrides: {\n root: ({ theme }) => ({ borderColor: theme.palette.divider }),\n },\n },\n\n MuiAlert: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 12,\n border: `1px solid ${alpha(theme.palette.text.primary, 0.08)}`,\n }),\n },\n },\n\n MuiTooltip: {\n styleOverrides: {\n tooltip: { borderRadius: 10, fontSize: \"0.8rem\" },\n },\n },\n\n MuiSnackbarContent: {\n styleOverrides: { root: { borderRadius: 12 } },\n },\n },\n} satisfies NamedThemeOptions;\n\nexport const editorialClassicDark = {\n name: \"Editorial Classic Dark\",\n direction: \"rtl\",\n\n palette: {\n mode: \"dark\",\n\n primary: {\n main: \"#E5E7EB\", // ink becomes light in dark mode\n dark: \"#CBD5E1\",\n light: \"#F3F4F6\",\n contrastText: \"#0B1220\",\n },\n\n secondary: {\n // Burgundy becomes a warm highlight\n main: \"#FB7185\",\n dark: \"#EF4444\",\n light: \"#FDA4AF\",\n contrastText: \"#0B1220\",\n },\n\n info: {\n main: \"#60A5FA\",\n dark: \"#3B82F6\",\n light: \"#93C5FD\",\n contrastText: \"#0B1220\",\n },\n success: {\n main: \"#34D399\",\n dark: \"#10B981\",\n light: \"#A7F3D0\",\n contrastText: \"#0B1220\",\n },\n warning: {\n main: \"#FBBF24\",\n dark: \"#F59E0B\",\n light: \"#FDE68A\",\n contrastText: \"#0B1220\",\n },\n error: {\n main: \"#FB7185\",\n dark: \"#EF4444\",\n light: \"#FDA4AF\",\n contrastText: \"#0B1220\",\n },\n\n background: {\n default: \"#0E1116\", // editorial charcoal\n paper: \"#141A22\",\n },\n\n text: {\n primary: \"#F3F4F6\",\n secondary: \"#A8B0BC\",\n disabled: alpha(\"#F3F4F6\", 0.45),\n },\n\n divider: alpha(\"#F3F4F6\", 0.14),\n\n grey: {\n 50: \"#0E1116\",\n 100: \"#141A22\",\n 200: \"#1B2431\",\n 300: \"#243245\",\n 400: \"#31435C\",\n 500: \"#4A5A78\",\n 600: \"#6B7A95\",\n 700: \"#A8B0BC\",\n 800: \"#E5E7EB\",\n 900: \"#F3F4F6\",\n },\n\n action: {\n hover: alpha(\"#F3F4F6\", 0.08),\n selected: alpha(\"#F3F4F6\", 0.12),\n focus: alpha(\"#60A5FA\", 0.22),\n active: alpha(\"#F3F4F6\", 0.54),\n disabled: alpha(\"#F3F4F6\", 0.32),\n disabledBackground: alpha(\"#F3F4F6\", 0.08),\n },\n },\n\n typography: {\n fontFamily: FONT_EDITORIAL,\n\n h1: {\n fontWeight: 800,\n fontSize: \"2.1rem\",\n lineHeight: 1.2,\n letterSpacing: \"-0.02em\",\n },\n h2: {\n fontWeight: 800,\n fontSize: \"1.6rem\",\n lineHeight: 1.25,\n letterSpacing: \"-0.01em\",\n },\n h3: { fontWeight: 800, fontSize: \"1.3rem\", lineHeight: 1.3 },\n h4: { fontWeight: 700, fontSize: \"1.125rem\", lineHeight: 1.4 },\n\n subtitle1: { fontWeight: 700, fontSize: \"0.95rem\" },\n subtitle2: { fontWeight: 700, fontSize: \"0.875rem\" },\n\n body1: { fontSize: \"1rem\", lineHeight: 1.85 },\n body2: { fontSize: \"0.9rem\", lineHeight: 1.75 },\n\n button: { textTransform: \"none\", fontWeight: 700 },\n caption: { fontSize: \"0.78rem\" },\n overline: { fontSize: \"0.75rem\", letterSpacing: \"0.12em\" },\n },\n\n shape: { borderRadius: 10 },\n spacing: 8,\n\n components: {\n MuiCssBaseline: {\n styleOverrides: (theme) => ({\n body: {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n },\n }),\n },\n\n MuiPaper: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 12,\n backgroundImage: \"none\",\n border: `1px solid ${alpha(theme.palette.text.primary, 0.1)}`,\n }),\n },\n },\n\n MuiCard: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 14,\n border: `1px solid ${alpha(theme.palette.text.primary, 0.1)}`,\n }),\n },\n },\n\n MuiAppBar: {\n defaultProps: { color: \"inherit\", elevation: 0 },\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundColor: theme.palette.background.paper,\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, 0.1)}`,\n }),\n },\n },\n\n MuiButton: {\n defaultProps: { disableElevation: true },\n styleOverrides: {\n root: { borderRadius: 10, paddingInline: 16, paddingBlock: 9 },\n outlined: { borderWidth: 1 },\n },\n },\n\n MuiLink: {\n styleOverrides: {\n root: {\n textDecorationThickness: \"2px\",\n textUnderlineOffset: \"3px\",\n },\n },\n },\n\n MuiOutlinedInput: {\n styleOverrides: {\n root: { borderRadius: 10 },\n notchedOutline: ({ theme }) => ({\n borderColor: alpha(theme.palette.text.primary, 0.18),\n }),\n },\n },\n\n MuiInputLabel: {\n styleOverrides: {\n root: { fontWeight: 700 },\n },\n },\n\n MuiTabs: {\n styleOverrides: {\n root: { minHeight: 44 },\n indicator: { height: 2, borderRadius: 2 },\n },\n },\n\n MuiTab: {\n styleOverrides: {\n root: { minHeight: 44, fontWeight: 700, paddingInline: 14 },\n },\n },\n\n MuiTableHead: {\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundColor: alpha(theme.palette.text.primary, 0.06),\n }),\n },\n },\n\n MuiTableCell: {\n styleOverrides: {\n head: ({ theme }) => ({\n fontWeight: 800,\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, 0.14)}`,\n }),\n body: ({ theme }) => ({\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, 0.1)}`,\n }),\n },\n },\n\n MuiDivider: {\n styleOverrides: {\n root: ({ theme }) => ({ borderColor: theme.palette.divider }),\n },\n },\n\n MuiAlert: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 12,\n border: `1px solid ${alpha(theme.palette.text.primary, 0.1)}`,\n }),\n },\n },\n\n MuiTooltip: {\n styleOverrides: {\n tooltip: { borderRadius: 10, fontSize: \"0.8rem\" },\n },\n },\n\n MuiSnackbarContent: {\n styleOverrides: { root: { borderRadius: 12 } },\n },\n },\n} satisfies NamedThemeOptions;\n","import { alpha } from \"@mui/material/styles\";\n\nimport type { NamedThemeOptions } from \"@/models\";\nimport type { Theme, ThemeOptions } from \"@mui/material/styles\";\n\n/**\n * Modern Minimal — purpose-driven, disciplined product UI.\n * - Strong hierarchy, low-ornament components, restrained contrast system.\n * - Designed to stay clear under dense dashboard content.\n */\n\nconst FONT_MINIMAL =\n '\"IBM Plex Sans\",\"Tajawal\",\"Cairo\",\"Noto Sans Arabic\",\"Inter\",\"Arial\",sans-serif';\n\nconst MINIMAL_RADIUS = 6;\n\nconst MINIMAL_TYPOGRAPHY = {\n fontFamily: FONT_MINIMAL,\n\n h1: {\n fontWeight: 900,\n fontSize: \"2.1rem\",\n lineHeight: 1.16,\n letterSpacing: \"-0.03em\",\n },\n h2: {\n fontWeight: 800,\n fontSize: \"1.68rem\",\n lineHeight: 1.22,\n letterSpacing: \"-0.02em\",\n },\n h3: {\n fontWeight: 700,\n fontSize: \"1.32rem\",\n lineHeight: 1.3,\n letterSpacing: \"-0.01em\",\n },\n h4: { fontWeight: 700, fontSize: \"1.08rem\", lineHeight: 1.4 },\n\n subtitle1: { fontWeight: 600, fontSize: \"0.94rem\" },\n subtitle2: { fontWeight: 600, fontSize: \"0.86rem\" },\n\n body1: { fontSize: \"0.94rem\", lineHeight: 1.62 },\n body2: { fontSize: \"0.86rem\", lineHeight: 1.56 },\n\n button: {\n textTransform: \"uppercase\",\n fontWeight: 700,\n letterSpacing: \"0.05em\",\n },\n caption: { fontSize: \"0.74rem\" },\n overline: {\n fontSize: \"0.72rem\",\n letterSpacing: \"0.12em\",\n textTransform: \"uppercase\",\n },\n} as const;\n\nconst createMinimalComponents = ({\n appBarAlpha,\n borderAlpha,\n surfaceShadowAlpha,\n tableHeadAlpha,\n}: {\n appBarAlpha: number;\n borderAlpha: number;\n surfaceShadowAlpha: number;\n tableHeadAlpha: number;\n}): ThemeOptions[\"components\"] => ({\n MuiCssBaseline: {\n styleOverrides: (theme: Theme) => ({\n body: {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n WebkitFontSmoothing: \"antialiased\",\n MozOsxFontSmoothing: \"grayscale\",\n },\n }),\n },\n\n MuiAppBar: {\n defaultProps: { color: \"inherit\" as const, elevation: 0 },\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundColor: alpha(theme.palette.background.paper, appBarAlpha),\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, borderAlpha)}`,\n boxShadow: `0 1px 0 ${alpha(theme.palette.text.primary, borderAlpha * 0.7)}`,\n }),\n },\n },\n\n MuiPaper: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: MINIMAL_RADIUS + 2,\n backgroundImage: \"none\",\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha)}`,\n boxShadow: `0 1px 2px ${alpha(theme.palette.text.primary, surfaceShadowAlpha)}`,\n }),\n },\n },\n\n MuiCard: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: MINIMAL_RADIUS + 4,\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha)}`,\n boxShadow: `0 1px 2px ${alpha(theme.palette.text.primary, surfaceShadowAlpha)}`,\n }),\n },\n },\n\n MuiButton: {\n defaultProps: { disableElevation: true },\n styleOverrides: {\n root: {\n borderRadius: MINIMAL_RADIUS,\n paddingInline: 16,\n paddingBlock: 9,\n minHeight: 36,\n fontWeight: 700,\n },\n contained: {\n boxShadow: \"none\",\n },\n containedPrimary: ({ theme }) => ({\n backgroundColor: theme.palette.primary.main,\n \"&:hover\": {\n backgroundColor: theme.palette.primary.dark,\n boxShadow: \"none\",\n },\n }),\n outlined: ({ theme }) => ({\n borderWidth: 1,\n borderColor: alpha(theme.palette.text.primary, borderAlpha + 0.05),\n }),\n },\n },\n\n MuiChip: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: MINIMAL_RADIUS,\n fontWeight: 600,\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.04)}`,\n backgroundColor: alpha(theme.palette.background.paper, 0.9),\n }),\n },\n },\n\n MuiTabs: {\n styleOverrides: {\n root: ({ theme }) => ({\n minHeight: 42,\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.06)}`,\n }),\n indicator: ({ theme }) => ({\n height: 2,\n borderRadius: 1,\n backgroundColor: theme.palette.primary.main,\n }),\n },\n },\n\n MuiTab: {\n styleOverrides: {\n root: {\n minHeight: 42,\n fontWeight: 700,\n paddingInline: 14,\n },\n },\n },\n\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n borderRadius: MINIMAL_RADIUS,\n },\n notchedOutline: ({ theme }) => ({\n borderColor: alpha(theme.palette.text.primary, borderAlpha + 0.08),\n }),\n },\n },\n\n MuiInputLabel: {\n styleOverrides: {\n root: { fontWeight: 600 },\n },\n },\n\n MuiTableHead: {\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundColor: alpha(theme.palette.text.primary, tableHeadAlpha),\n }),\n },\n },\n\n MuiTableCell: {\n styleOverrides: {\n head: ({ theme }) => ({\n fontWeight: 700,\n color: theme.palette.text.primary,\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n }),\n body: ({ theme }) => ({\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, borderAlpha)}`,\n }),\n },\n },\n\n MuiDivider: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderColor: theme.palette.divider,\n }),\n },\n },\n\n MuiAlert: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: MINIMAL_RADIUS + 2,\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n }),\n },\n },\n\n MuiTooltip: {\n styleOverrides: {\n tooltip: ({ theme }) => ({\n borderRadius: MINIMAL_RADIUS,\n fontSize: \"0.78rem\",\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n }),\n },\n },\n\n MuiSnackbarContent: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: MINIMAL_RADIUS + 2,\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n }),\n },\n },\n});\n\nexport const modernMinimal = {\n name: \"Modern Minimal\",\n direction: \"rtl\",\n\n palette: {\n mode: \"light\",\n\n primary: {\n main: \"#1E40AF\",\n dark: \"#1E3A8A\",\n light: \"#3B82F6\",\n contrastText: \"#FFFFFF\",\n },\n\n secondary: {\n main: \"#111827\",\n dark: \"#030712\",\n light: \"#374151\",\n contrastText: \"#FFFFFF\",\n },\n\n info: {\n main: \"#2563EB\",\n dark: \"#1D4ED8\",\n light: \"#60A5FA\",\n contrastText: \"#FFFFFF\",\n },\n\n success: {\n main: \"#15803D\",\n dark: \"#166534\",\n light: \"#4ADE80\",\n contrastText: \"#FFFFFF\",\n },\n\n warning: {\n main: \"#B45309\",\n dark: \"#92400E\",\n light: \"#F59E0B\",\n contrastText: \"#FFFFFF\",\n },\n\n error: {\n main: \"#B91C1C\",\n dark: \"#991B1B\",\n light: \"#EF4444\",\n contrastText: \"#FFFFFF\",\n },\n\n background: {\n default: \"#F3F4F6\",\n paper: \"#FFFFFF\",\n },\n\n text: {\n primary: \"#111827\",\n secondary: \"#4B5563\",\n disabled: alpha(\"#111827\", 0.45),\n },\n\n divider: alpha(\"#111827\", 0.14),\n\n grey: {\n 50: \"#F9FAFB\",\n 100: \"#F3F4F6\",\n 200: \"#E5E7EB\",\n 300: \"#D1D5DB\",\n 400: \"#9CA3AF\",\n 500: \"#6B7280\",\n 600: \"#4B5563\",\n 700: \"#374151\",\n 800: \"#1F2937\",\n 900: \"#111827\",\n },\n\n action: {\n hover: alpha(\"#1E40AF\", 0.04),\n selected: alpha(\"#1E40AF\", 0.1),\n focus: alpha(\"#1E40AF\", 0.2),\n active: alpha(\"#111827\", 0.54),\n disabled: alpha(\"#111827\", 0.32),\n disabledBackground: alpha(\"#111827\", 0.08),\n },\n },\n\n typography: MINIMAL_TYPOGRAPHY,\n\n shape: { borderRadius: MINIMAL_RADIUS },\n spacing: 8,\n\n components: createMinimalComponents({\n appBarAlpha: 0.98,\n borderAlpha: 0.12,\n surfaceShadowAlpha: 0.08,\n tableHeadAlpha: 0.04,\n }),\n} satisfies NamedThemeOptions;\n\nexport const modernMinimalDark = {\n name: \"Modern Minimal Dark\",\n direction: \"rtl\",\n\n palette: {\n mode: \"dark\",\n\n primary: {\n main: \"#93C5FD\",\n dark: \"#60A5FA\",\n light: \"#BFDBFE\",\n contrastText: \"#0B1220\",\n },\n\n secondary: {\n main: \"#E5E7EB\",\n dark: \"#D1D5DB\",\n light: \"#F3F4F6\",\n contrastText: \"#0B1220\",\n },\n\n info: {\n main: \"#7DD3FC\",\n dark: \"#38BDF8\",\n light: \"#BAE6FD\",\n contrastText: \"#0B1220\",\n },\n\n success: {\n main: \"#6EE7B7\",\n dark: \"#34D399\",\n light: \"#A7F3D0\",\n contrastText: \"#0B1220\",\n },\n\n warning: {\n main: \"#FCD34D\",\n dark: \"#FBBF24\",\n light: \"#FDE68A\",\n contrastText: \"#0B1220\",\n },\n\n error: {\n main: \"#FDA4AF\",\n dark: \"#FB7185\",\n light: \"#FECACA\",\n contrastText: \"#0B1220\",\n },\n\n background: {\n default: \"#0B0F14\",\n paper: \"#111827\",\n },\n\n text: {\n primary: \"#F3F4F6\",\n secondary: \"#9CA3AF\",\n disabled: alpha(\"#F3F4F6\", 0.45),\n },\n\n divider: alpha(\"#F3F4F6\", 0.16),\n\n grey: {\n 50: \"#0B0F14\",\n 100: \"#111827\",\n 200: \"#1F2937\",\n 300: \"#374151\",\n 400: \"#4B5563\",\n 500: \"#6B7280\",\n 600: \"#9CA3AF\",\n 700: \"#D1D5DB\",\n 800: \"#E5E7EB\",\n 900: \"#F3F4F6\",\n },\n\n action: {\n hover: alpha(\"#93C5FD\", 0.08),\n selected: alpha(\"#93C5FD\", 0.16),\n focus: alpha(\"#93C5FD\", 0.24),\n active: alpha(\"#F3F4F6\", 0.54),\n disabled: alpha(\"#F3F4F6\", 0.32),\n disabledBackground: alpha(\"#F3F4F6\", 0.08),\n },\n },\n\n typography: MINIMAL_TYPOGRAPHY,\n\n shape: { borderRadius: MINIMAL_RADIUS },\n spacing: 8,\n\n components: createMinimalComponents({\n appBarAlpha: 0.94,\n borderAlpha: 0.2,\n surfaceShadowAlpha: 0.2,\n tableHeadAlpha: 0.08,\n }),\n} satisfies NamedThemeOptions;\n","import { alpha } from \"@mui/material/styles\";\n\nimport type { NamedThemeOptions } from \"@/models\";\nimport type { Theme, ThemeOptions } from \"@mui/material/styles\";\n\n/**\n * Neo Glass — liquid-glass direction.\n * - Light: iridescent liquid surfaces over luminous sky gradients.\n * - Dark: deep night glass with neon edges and stronger depth.\n */\n\nconst FONT_LIQUID =\n '\"Space Grotesk\",\"Tajawal\",\"Cairo\",\"Noto Sans Arabic\",\"Inter\",\"Roboto\",\"Arial\",sans-serif';\n\nconst LIQUID_RADIUS = 26;\nconst LIQUID_BLUR = \"blur(18px) saturate(165%)\";\nconst LIQUID_BLUR_STRONG = \"blur(24px) saturate(180%)\";\n\nconst LIQUID_TYPOGRAPHY = {\n fontFamily: FONT_LIQUID,\n\n h1: {\n fontWeight: 800,\n fontSize: \"2.08rem\",\n lineHeight: 1.2,\n letterSpacing: \"-0.025em\",\n },\n h2: {\n fontWeight: 800,\n fontSize: \"1.56rem\",\n lineHeight: 1.25,\n letterSpacing: \"-0.02em\",\n },\n h3: { fontWeight: 700, fontSize: \"1.28rem\", lineHeight: 1.32 },\n h4: { fontWeight: 700, fontSize: \"1.13rem\", lineHeight: 1.4 },\n\n subtitle1: { fontWeight: 700, fontSize: \"0.95rem\" },\n subtitle2: { fontWeight: 700, fontSize: \"0.875rem\" },\n\n body1: { fontSize: \"0.95rem\", lineHeight: 1.64 },\n body2: { fontSize: \"0.875rem\", lineHeight: 1.58 },\n\n button: { textTransform: \"none\", fontWeight: 700, letterSpacing: \"0.01em\" },\n caption: { fontSize: \"0.75rem\" },\n overline: { fontSize: \"0.75rem\", letterSpacing: \"0.08em\" },\n} as const;\n\nconst createLiquidGlassComponents = ({\n bodyPrimaryGlowAlpha,\n bodySecondaryGlowAlpha,\n bodyTertiaryGlowAlpha,\n paperAlpha,\n borderAlpha,\n shadowAlpha,\n isDark,\n}: {\n bodyPrimaryGlowAlpha: number;\n bodySecondaryGlowAlpha: number;\n bodyTertiaryGlowAlpha: number;\n paperAlpha: number;\n borderAlpha: number;\n shadowAlpha: number;\n isDark: boolean;\n}): ThemeOptions[\"components\"] => ({\n MuiCssBaseline: {\n styleOverrides: (theme: Theme) => ({\n body: {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n backgroundImage: `radial-gradient(1200px 620px at 8% -10%, ${alpha(\n theme.palette.primary.main,\n bodyPrimaryGlowAlpha,\n )}, transparent 52%), radial-gradient(1000px 540px at 96% 4%, ${alpha(\n theme.palette.secondary.main,\n bodySecondaryGlowAlpha,\n )}, transparent 50%), radial-gradient(900px 460px at 50% 100%, ${alpha(\n theme.palette.info.main,\n bodyTertiaryGlowAlpha,\n )}, transparent 58%)`,\n backgroundAttachment: \"fixed\",\n },\n \"body::before\": {\n content: '\"\"',\n position: \"fixed\",\n inset: \"-24% auto auto -16%\",\n width: \"52vw\",\n height: \"52vw\",\n borderRadius: \"50%\",\n pointerEvents: \"none\",\n zIndex: -1,\n background: `radial-gradient(circle, ${alpha(\n theme.palette.primary.light,\n isDark ? 0.2 : 0.26,\n )} 0%, transparent 72%)`,\n filter: \"blur(16px)\",\n },\n \"body::after\": {\n content: '\"\"',\n position: \"fixed\",\n inset: \"auto -18% -28% auto\",\n width: \"56vw\",\n height: \"56vw\",\n borderRadius: \"50%\",\n pointerEvents: \"none\",\n zIndex: -1,\n background: `radial-gradient(circle, ${alpha(\n theme.palette.secondary.light,\n isDark ? 0.18 : 0.24,\n )} 0%, transparent 74%)`,\n filter: \"blur(18px)\",\n },\n \"*::selection\": {\n backgroundColor: alpha(theme.palette.primary.main, isDark ? 0.4 : 0.28),\n color: theme.palette.background.default,\n },\n }),\n },\n\n MuiBackdrop: {\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundColor: alpha(\n theme.palette.background.default,\n isDark ? 0.54 : 0.32,\n ),\n backdropFilter: \"blur(6px)\",\n }),\n },\n },\n\n MuiAppBar: {\n defaultProps: { color: \"inherit\" as const, elevation: 0 },\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 999,\n marginInline: theme.spacing(1),\n marginTop: theme.spacing(1),\n paddingInline: theme.spacing(1),\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha + 0.12,\n ),\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n boxShadow: `0 12px 36px ${alpha(theme.palette.primary.dark, shadowAlpha)}`,\n backdropFilter: LIQUID_BLUR,\n WebkitBackdropFilter: LIQUID_BLUR,\n }),\n },\n },\n\n MuiPaper: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: LIQUID_RADIUS + 6,\n backgroundImage: `linear-gradient(150deg, ${alpha(\n \"#FFFFFF\",\n isDark ? 0.1 : 0.62,\n )} 0%, ${alpha(\"#FFFFFF\", isDark ? 0.04 : 0.18)} 42%, ${alpha(\n theme.palette.primary.light,\n isDark ? 0.12 : 0.18,\n )} 100%)`,\n backgroundColor: alpha(theme.palette.background.paper, paperAlpha),\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha)}`,\n boxShadow: `0 18px 44px ${alpha(theme.palette.primary.dark, shadowAlpha)}`,\n backdropFilter: LIQUID_BLUR,\n WebkitBackdropFilter: LIQUID_BLUR,\n }),\n },\n },\n\n MuiCard: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: LIQUID_RADIUS + 8,\n backgroundImage: `linear-gradient(165deg, ${alpha(\n \"#FFFFFF\",\n isDark ? 0.08 : 0.6,\n )}, ${alpha(theme.palette.secondary.light, isDark ? 0.08 : 0.18)} 120%)`,\n backgroundColor: alpha(theme.palette.background.paper, paperAlpha),\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha)}`,\n boxShadow: `0 22px 48px ${alpha(theme.palette.primary.dark, shadowAlpha + 0.04)}`,\n backdropFilter: LIQUID_BLUR_STRONG,\n WebkitBackdropFilter: LIQUID_BLUR_STRONG,\n }),\n },\n },\n\n MuiButton: {\n defaultProps: { disableElevation: true },\n styleOverrides: {\n root: {\n borderRadius: 999,\n paddingInline: 20,\n paddingBlock: 10,\n fontWeight: 700,\n },\n containedPrimary: ({ theme }) => ({\n backgroundImage: `linear-gradient(130deg, ${alpha(\n theme.palette.primary.light,\n 0.98,\n )}, ${alpha(theme.palette.primary.main, 0.94)} 45%, ${alpha(\n theme.palette.secondary.main,\n 0.9,\n )} 100%)`,\n boxShadow: `0 10px 26px ${alpha(theme.palette.primary.main, 0.36)}`,\n \"&:hover\": {\n boxShadow: `0 14px 30px ${alpha(theme.palette.primary.main, 0.44)}`,\n transform: \"translateY(-1px)\",\n },\n }),\n outlined: ({ theme }) => ({\n borderWidth: 1,\n borderColor: alpha(theme.palette.text.primary, 0.22),\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha - 0.04,\n ),\n backdropFilter: LIQUID_BLUR,\n WebkitBackdropFilter: LIQUID_BLUR,\n }),\n },\n },\n\n MuiChip: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 999,\n fontWeight: 700,\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha)}`,\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha - 0.02,\n ),\n backdropFilter: LIQUID_BLUR,\n WebkitBackdropFilter: LIQUID_BLUR,\n }),\n },\n },\n\n MuiOutlinedInput: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 20,\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha - 0.02,\n ),\n backdropFilter: LIQUID_BLUR,\n WebkitBackdropFilter: LIQUID_BLUR,\n \"&.Mui-focused .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(theme.palette.primary.main, 0.62),\n borderWidth: 1,\n },\n }),\n notchedOutline: ({ theme }) => ({\n borderColor: alpha(theme.palette.text.primary, borderAlpha),\n }),\n },\n },\n\n MuiInputLabel: {\n styleOverrides: {\n root: { fontWeight: 700 },\n },\n },\n\n MuiTabs: {\n styleOverrides: {\n root: ({ theme }) => ({\n minHeight: 46,\n padding: theme.spacing(0.5),\n }),\n indicator: ({ theme }) => ({\n height: \"calc(100% - 8px)\",\n top: 4,\n borderRadius: 999,\n backgroundImage: `linear-gradient(150deg, ${alpha(\n \"#FFFFFF\",\n isDark ? 0.14 : 0.8,\n )}, ${alpha(theme.palette.primary.light, isDark ? 0.18 : 0.42)})`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.36)}`,\n boxShadow: `0 8px 18px ${alpha(theme.palette.primary.main, 0.24)}`,\n }),\n },\n },\n\n MuiTab: {\n styleOverrides: {\n root: {\n minHeight: 38,\n borderRadius: 999,\n fontWeight: 700,\n paddingInline: 14,\n },\n },\n },\n\n MuiTableHead: {\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundImage: `linear-gradient(90deg, ${alpha(\n theme.palette.primary.main,\n 0.16,\n )}, ${alpha(theme.palette.secondary.main, 0.14)})`,\n }),\n },\n },\n\n MuiTableCell: {\n styleOverrides: {\n head: ({ theme }) => ({\n fontWeight: 800,\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n }),\n body: ({ theme }) => ({\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, borderAlpha - 0.02)}`,\n }),\n },\n },\n\n MuiDivider: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderColor: alpha(theme.palette.text.primary, borderAlpha),\n }),\n },\n },\n\n MuiAlert: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: LIQUID_RADIUS,\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha + 0.06,\n ),\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n backdropFilter: LIQUID_BLUR,\n WebkitBackdropFilter: LIQUID_BLUR,\n }),\n },\n },\n\n MuiTooltip: {\n styleOverrides: {\n tooltip: ({ theme }) => ({\n borderRadius: 14,\n fontSize: \"0.8rem\",\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha + 0.12,\n ),\n color: theme.palette.text.primary,\n backdropFilter: LIQUID_BLUR,\n WebkitBackdropFilter: LIQUID_BLUR,\n }),\n },\n },\n\n MuiSnackbarContent: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 22,\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha + 0.1,\n ),\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n boxShadow: `0 14px 34px ${alpha(theme.palette.primary.dark, shadowAlpha)}`,\n backdropFilter: LIQUID_BLUR,\n WebkitBackdropFilter: LIQUID_BLUR,\n }),\n },\n },\n\n MuiDialog: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: LIQUID_RADIUS + 10,\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha + 0.08,\n ),\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.1)}`,\n boxShadow: `0 26px 56px ${alpha(theme.palette.primary.dark, shadowAlpha + 0.08)}`,\n backdropFilter: LIQUID_BLUR_STRONG,\n WebkitBackdropFilter: LIQUID_BLUR_STRONG,\n }),\n },\n },\n\n MuiMenu: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: 20,\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha + 0.1,\n ),\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n backdropFilter: LIQUID_BLUR,\n WebkitBackdropFilter: LIQUID_BLUR,\n }),\n },\n },\n\n MuiPopover: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: 20,\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha + 0.08,\n ),\n border: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n backdropFilter: LIQUID_BLUR,\n WebkitBackdropFilter: LIQUID_BLUR,\n }),\n },\n },\n\n MuiDrawer: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: \"24px 0 0 24px\",\n backgroundColor: alpha(\n theme.palette.background.paper,\n paperAlpha + 0.06,\n ),\n borderInlineStart: `1px solid ${alpha(theme.palette.text.primary, borderAlpha + 0.08)}`,\n backdropFilter: LIQUID_BLUR_STRONG,\n WebkitBackdropFilter: LIQUID_BLUR_STRONG,\n }),\n },\n },\n});\n\nexport const neoGlass = {\n name: \"Neo Glass\",\n direction: \"rtl\",\n\n palette: {\n mode: \"light\",\n\n primary: {\n main: \"#43B5FF\",\n dark: \"#1F96EF\",\n light: \"#8DD6FF\",\n contrastText: \"#04203A\",\n },\n\n secondary: {\n main: \"#A86CFF\",\n dark: \"#8D4CFA\",\n light: \"#C7A4FF\",\n contrastText: \"#1D1133\",\n },\n\n info: {\n main: \"#39D7FF\",\n dark: \"#0EB4E0\",\n light: \"#9DEBFF\",\n contrastText: \"#032533\",\n },\n success: {\n main: \"#49CFA0\",\n dark: \"#2FAE82\",\n light: \"#94E5C8\",\n contrastText: \"#053226\",\n },\n warning: {\n main: \"#F2B366\",\n dark: \"#D38F42\",\n light: \"#F8D2A3\",\n contrastText: \"#392008\",\n },\n error: {\n main: \"#FF6F96\",\n dark: \"#F34978\",\n light: \"#FFAAC1\",\n contrastText: \"#3A0B1A\",\n },\n\n background: {\n default: \"#EAF4FF\",\n paper: \"#F7FBFF\",\n },\n\n text: {\n primary: \"#0D1C33\",\n secondary: \"#3B4E6D\",\n disabled: alpha(\"#0D1C33\", 0.45),\n },\n\n divider: alpha(\"#0D1C33\", 0.15),\n\n grey: {\n 50: \"#F8FBFF\",\n 100: \"#EEF5FF\",\n 200: \"#DEEBFF\",\n 300: \"#C7DBFA\",\n 400: \"#A3C0E8\",\n 500: \"#7D98BE\",\n 600: \"#5B7497\",\n 700: \"#435877\",\n 800: \"#2A3D58\",\n 900: \"#0D1C33\",\n },\n\n action: {\n hover: alpha(\"#43B5FF\", 0.14),\n selected: alpha(\"#43B5FF\", 0.22),\n focus: alpha(\"#A86CFF\", 0.24),\n active: alpha(\"#0D1C33\", 0.54),\n disabled: alpha(\"#0D1C33\", 0.32),\n disabledBackground: alpha(\"#0D1C33\", 0.08),\n },\n },\n\n typography: LIQUID_TYPOGRAPHY,\n\n shape: { borderRadius: LIQUID_RADIUS },\n spacing: 8,\n\n components: createLiquidGlassComponents({\n bodyPrimaryGlowAlpha: 0.32,\n bodySecondaryGlowAlpha: 0.24,\n bodyTertiaryGlowAlpha: 0.2,\n paperAlpha: 0.64,\n borderAlpha: 0.2,\n shadowAlpha: 0.18,\n isDark: false,\n }),\n} satisfies NamedThemeOptions;\n\nexport const neoGlassDark = {\n name: \"Neo Glass Dark\",\n direction: \"rtl\",\n\n palette: {\n mode: \"dark\",\n\n primary: {\n main: \"#7DCCFF\",\n dark: \"#4FB6FF\",\n light: \"#B9E6FF\",\n contrastText: \"#021524\",\n },\n\n secondary: {\n main: \"#C59BFF\",\n dark: \"#A86CFF\",\n light: \"#E0C7FF\",\n contrastText: \"#140C24\",\n },\n\n info: {\n main: \"#7EE6FF\",\n dark: \"#39D7FF\",\n light: \"#C0F5FF\",\n contrastText: \"#022130\",\n },\n success: {\n main: \"#89E8C4\",\n dark: \"#49CFA0\",\n light: \"#BDF2DC\",\n contrastText: \"#06261B\",\n },\n warning: {\n main: \"#F8D2A3\",\n dark: \"#F2B366\",\n light: \"#FDE8CA\",\n contrastText: \"#2F1A08\",\n },\n error: {\n main: \"#FFAAC1\",\n dark: \"#FF6F96\",\n light: \"#FFD0DD\",\n contrastText: \"#2F101A\",\n },\n\n background: {\n default: \"#040918\",\n paper: \"#0E1630\",\n },\n\n text: {\n primary: \"#E8F2FF\",\n secondary: \"#A5BCD9\",\n disabled: alpha(\"#E8F2FF\", 0.45),\n },\n\n divider: alpha(\"#E8F2FF\", 0.16),\n\n grey: {\n 50: \"#040918\",\n 100: \"#0B1126\",\n 200: \"#131D3A\",\n 300: \"#1E2B4E\",\n 400: \"#2E4370\",\n 500: \"#48639A\",\n 600: \"#6E8BBA\",\n 700: \"#A5BCD9\",\n 800: \"#D3E2F3\",\n 900: \"#E8F2FF\",\n },\n\n action: {\n hover: alpha(\"#7DCCFF\", 0.18),\n selected: alpha(\"#7DCCFF\", 0.28),\n focus: alpha(\"#C59BFF\", 0.28),\n active: alpha(\"#E8F2FF\", 0.58),\n disabled: alpha(\"#E8F2FF\", 0.34),\n disabledBackground: alpha(\"#E8F2FF\", 0.08),\n },\n },\n\n typography: LIQUID_TYPOGRAPHY,\n\n shape: { borderRadius: LIQUID_RADIUS },\n spacing: 8,\n\n components: createLiquidGlassComponents({\n bodyPrimaryGlowAlpha: 0.28,\n bodySecondaryGlowAlpha: 0.22,\n bodyTertiaryGlowAlpha: 0.18,\n paperAlpha: 0.46,\n borderAlpha: 0.32,\n shadowAlpha: 0.42,\n isDark: true,\n }),\n} satisfies NamedThemeOptions;\n","import { alpha } from \"@mui/material/styles\";\n\nimport type { NamedThemeOptions } from \"@/models\";\nimport type { Theme, ThemeOptions } from \"@mui/material/styles\";\n\nconst FONT_MONO =\n '\"IBM Plex Mono\",\"JetBrains Mono\",\"Tajawal\",\"Cairo\",\"Noto Sans Arabic\",\"Roboto Mono\",\"Consolas\",\"Arial\",monospace';\n\nconst TERMINAL_TYPOGRAPHY = {\n fontFamily: FONT_MONO,\n\n h1: {\n fontWeight: 800,\n fontSize: \"1.85rem\",\n lineHeight: 1.2,\n letterSpacing: \"0.03em\",\n },\n h2: {\n fontWeight: 800,\n fontSize: \"1.42rem\",\n lineHeight: 1.24,\n letterSpacing: \"0.025em\",\n },\n h3: {\n fontWeight: 800,\n fontSize: \"1.14rem\",\n lineHeight: 1.3,\n letterSpacing: \"0.02em\",\n },\n h4: {\n fontWeight: 700,\n fontSize: \"1.02rem\",\n lineHeight: 1.35,\n letterSpacing: \"0.015em\",\n },\n\n subtitle1: { fontWeight: 700, fontSize: \"0.92rem\", letterSpacing: \"0.02em\" },\n subtitle2: { fontWeight: 700, fontSize: \"0.84rem\", letterSpacing: \"0.02em\" },\n\n body1: { fontSize: \"0.92rem\", lineHeight: 1.72 },\n body2: { fontSize: \"0.84rem\", lineHeight: 1.62 },\n\n button: {\n textTransform: \"uppercase\",\n fontWeight: 800,\n letterSpacing: \"0.08em\",\n },\n caption: { fontSize: \"0.73rem\", letterSpacing: \"0.03em\" },\n overline: {\n fontSize: \"0.7rem\",\n letterSpacing: \"0.14em\",\n textTransform: \"uppercase\",\n },\n} as const;\n\nconst createTerminalComponents = ({\n scanlineAlpha,\n surfaceBorderAlpha,\n panelGlowAlpha,\n}: {\n scanlineAlpha: number;\n surfaceBorderAlpha: number;\n panelGlowAlpha: number;\n}): ThemeOptions[\"components\"] => ({\n MuiCssBaseline: {\n styleOverrides: (theme: Theme) => ({\n \"*, *::before, *::after\": {\n boxSizing: \"border-box\",\n },\n body: {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n textShadow: `0 0 1px ${alpha(theme.palette.primary.main, 0.2)}`,\n backgroundImage: `repeating-linear-gradient(0deg, ${alpha(\n theme.palette.text.primary,\n scanlineAlpha,\n )} 0px, ${alpha(\n theme.palette.text.primary,\n scanlineAlpha,\n )} 1px, transparent 1px, transparent 4px)`,\n backgroundSize: \"100% 4px\",\n },\n \"*::selection\": {\n backgroundColor: alpha(theme.palette.primary.main, 0.34),\n color: theme.palette.background.default,\n },\n }),\n },\n\n MuiAppBar: {\n defaultProps: { color: \"inherit\" as const, elevation: 0 },\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 0,\n backgroundColor: alpha(theme.palette.background.paper, 0.96),\n borderBottom: `2px solid ${alpha(theme.palette.primary.main, 0.62)}`,\n boxShadow: `inset 0 -1px 0 ${alpha(theme.palette.primary.light, 0.24)}`,\n }),\n },\n },\n\n MuiPaper: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 0,\n backgroundImage: \"none\",\n backgroundColor: alpha(theme.palette.background.paper, 0.98),\n border: `2px solid ${alpha(theme.palette.primary.main, surfaceBorderAlpha)}`,\n boxShadow: `inset 0 0 0 1px ${alpha(theme.palette.primary.light, panelGlowAlpha)}`,\n }),\n },\n },\n\n MuiCard: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 0,\n backgroundImage: \"none\",\n border: `2px solid ${alpha(theme.palette.primary.main, surfaceBorderAlpha)}`,\n boxShadow: `inset 0 0 0 1px ${alpha(theme.palette.primary.light, panelGlowAlpha)}`,\n }),\n },\n },\n\n MuiButton: {\n defaultProps: { disableElevation: true },\n styleOverrides: {\n root: {\n borderRadius: 0,\n paddingInline: 16,\n paddingBlock: 9,\n minHeight: 38,\n fontWeight: 800,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n },\n containedPrimary: ({ theme }) => ({\n color: theme.palette.primary.light,\n backgroundColor: alpha(theme.palette.primary.main, 0.16),\n border: `2px solid ${alpha(theme.palette.primary.main, 0.72)}`,\n boxShadow: `inset 0 0 0 1px ${alpha(theme.palette.primary.light, 0.34)}`,\n \"&:hover\": {\n backgroundColor: alpha(theme.palette.primary.main, 0.24),\n borderColor: theme.palette.primary.main,\n },\n }),\n outlined: {\n borderStyle: \"dashed\",\n borderWidth: 2,\n },\n outlinedPrimary: ({ theme }) => ({\n borderColor: alpha(theme.palette.primary.main, 0.7),\n }),\n textPrimary: ({ theme }) => ({\n color: theme.palette.primary.main,\n textDecoration: \"underline\",\n textUnderlineOffset: \"2px\",\n }),\n },\n },\n\n MuiChip: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 0,\n fontWeight: 700,\n textTransform: \"uppercase\",\n border: `2px dashed ${alpha(theme.palette.primary.main, 0.68)}`,\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n }),\n label: {\n paddingInline: 8,\n },\n },\n },\n\n MuiTabs: {\n styleOverrides: {\n root: ({ theme }) => ({\n minHeight: 40,\n borderBottom: `2px solid ${alpha(theme.palette.primary.main, 0.5)}`,\n }),\n indicator: ({ theme }) => ({\n height: \"100%\",\n borderRadius: 0,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.6)}`,\n backgroundColor: alpha(theme.palette.primary.main, 0.14),\n zIndex: 0,\n }),\n },\n },\n\n MuiTab: {\n styleOverrides: {\n root: ({ theme }) => ({\n position: \"relative\",\n zIndex: 1,\n minHeight: 40,\n fontWeight: 700,\n paddingInline: 14,\n textTransform: \"uppercase\",\n letterSpacing: \"0.06em\",\n \"&.Mui-selected\": {\n color: theme.palette.primary.main,\n },\n }),\n },\n },\n\n MuiOutlinedInput: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 0,\n fontFamily: FONT_MONO,\n backgroundColor: alpha(theme.palette.background.paper, 0.96),\n \"&:hover .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(theme.palette.primary.main, 0.9),\n },\n \"&.Mui-focused .MuiOutlinedInput-notchedOutline\": {\n borderColor: theme.palette.primary.main,\n borderWidth: 2,\n },\n }),\n notchedOutline: ({ theme }) => ({\n borderColor: alpha(theme.palette.primary.main, 0.6),\n borderWidth: 2,\n }),\n input: {\n paddingBlock: 10,\n },\n },\n },\n\n MuiInputLabel: {\n styleOverrides: {\n root: {\n fontWeight: 700,\n letterSpacing: \"0.06em\",\n textTransform: \"uppercase\",\n },\n },\n },\n\n MuiTableHead: {\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundColor: alpha(theme.palette.primary.main, 0.14),\n backgroundImage: `repeating-linear-gradient(90deg, ${alpha(\n theme.palette.primary.main,\n 0.2,\n )} 0px, ${alpha(theme.palette.primary.main, 0.2)} 2px, transparent 2px, transparent 8px)`,\n }),\n },\n },\n\n MuiTableCell: {\n styleOverrides: {\n head: ({ theme }) => ({\n fontWeight: 800,\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n borderBottom: `2px dashed ${alpha(theme.palette.primary.main, 0.66)}`,\n }),\n body: ({ theme }) => ({\n fontFamily: FONT_MONO,\n borderBottom: `1px dashed ${alpha(theme.palette.text.primary, 0.25)}`,\n }),\n },\n },\n\n MuiDivider: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderColor: alpha(theme.palette.primary.main, 0.56),\n borderStyle: \"dashed\",\n }),\n },\n },\n\n MuiAlert: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 0,\n border: `2px solid ${alpha(theme.palette.primary.main, 0.68)}`,\n backgroundColor: alpha(theme.palette.background.paper, 0.98),\n }),\n },\n },\n\n MuiTooltip: {\n styleOverrides: {\n tooltip: ({ theme }) => ({\n borderRadius: 0,\n fontSize: \"0.75rem\",\n fontFamily: FONT_MONO,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.72)}`,\n backgroundColor: alpha(theme.palette.background.paper, 0.98),\n color: theme.palette.text.primary,\n }),\n arrow: ({ theme }) => ({\n color: alpha(theme.palette.background.paper, 0.98),\n }),\n },\n },\n\n MuiSnackbarContent: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 0,\n border: `2px solid ${alpha(theme.palette.primary.main, 0.6)}`,\n boxShadow: `inset 0 0 0 1px ${alpha(theme.palette.primary.light, 0.24)}`,\n }),\n },\n },\n\n MuiDialog: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: 0,\n backgroundImage: \"none\",\n border: `2px solid ${alpha(theme.palette.primary.main, surfaceBorderAlpha)}`,\n boxShadow: `inset 0 0 0 1px ${alpha(theme.palette.primary.light, panelGlowAlpha)}`,\n }),\n },\n },\n\n MuiDialogTitle: {\n styleOverrides: {\n root: {\n textTransform: \"uppercase\",\n letterSpacing: \"0.06em\",\n },\n },\n },\n\n MuiMenu: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: 0,\n border: `2px solid ${alpha(theme.palette.primary.main, surfaceBorderAlpha)}`,\n boxShadow: `inset 0 0 0 1px ${alpha(theme.palette.primary.light, panelGlowAlpha)}`,\n }),\n },\n },\n\n MuiPopover: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: 0,\n border: `2px solid ${alpha(theme.palette.primary.main, surfaceBorderAlpha)}`,\n }),\n },\n },\n\n MuiDrawer: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: 0,\n borderInlineStart: `2px solid ${alpha(theme.palette.primary.main, surfaceBorderAlpha)}`,\n backgroundImage: \"none\",\n backgroundColor: alpha(theme.palette.background.paper, 0.98),\n }),\n },\n },\n\n MuiMenuItem: {\n styleOverrides: {\n root: ({ theme }) => ({\n fontFamily: FONT_MONO,\n fontSize: \"0.8rem\",\n letterSpacing: \"0.05em\",\n textTransform: \"uppercase\",\n \"& + &\": {\n borderTop: `1px dashed ${alpha(theme.palette.primary.main, 0.5)}`,\n },\n \"&.Mui-selected\": {\n backgroundColor: alpha(theme.palette.primary.main, 0.16),\n },\n }),\n },\n },\n\n MuiListItemButton: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 0,\n \"& + &\": {\n borderTop: `1px dashed ${alpha(theme.palette.primary.main, 0.42)}`,\n },\n \"&.Mui-selected\": {\n backgroundColor: alpha(theme.palette.primary.main, 0.16),\n },\n }),\n },\n },\n});\n\nexport const retroTerminal = {\n name: \"Retro Terminal\",\n direction: \"rtl\",\n\n palette: {\n mode: \"light\",\n\n primary: {\n main: \"#00B84F\",\n dark: \"#008F3B\",\n light: \"#5BFFA0\",\n contrastText: \"#02180B\",\n },\n\n secondary: {\n main: \"#FF8A3D\",\n dark: \"#D56A24\",\n light: \"#FFB981\",\n contrastText: \"#1A1104\",\n },\n\n info: {\n main: \"#22D3EE\",\n dark: \"#0891B2\",\n light: \"#67E8F9\",\n contrastText: \"#03161A\",\n },\n success: {\n main: \"#00B84F\",\n dark: \"#008F3B\",\n light: \"#5BFFA0\",\n contrastText: \"#02180B\",\n },\n warning: {\n main: \"#FACC15\",\n dark: \"#D4A711\",\n light: \"#FDE047\",\n contrastText: \"#1C1503\",\n },\n error: {\n main: \"#F43F5E\",\n dark: \"#E11D48\",\n light: \"#FDA4AF\",\n contrastText: \"#20050B\",\n },\n\n background: {\n default: \"#E9FDEE\",\n paper: \"#F7FFF9\",\n },\n\n text: {\n primary: \"#03210E\",\n secondary: \"#14542C\",\n disabled: alpha(\"#03210E\", 0.46),\n },\n\n divider: alpha(\"#03210E\", 0.26),\n\n grey: {\n 50: \"#F7FFF9\",\n 100: \"#ECFFF1\",\n 200: \"#D4F8DE\",\n 300: \"#B5EEC6\",\n 400: \"#87DFA1\",\n 500: \"#56C97B\",\n 600: \"#27A95A\",\n 700: \"#15773D\",\n 800: \"#0B4A24\",\n 900: \"#03210E\",\n },\n\n action: {\n hover: alpha(\"#00B84F\", 0.14),\n selected: alpha(\"#00B84F\", 0.22),\n focus: alpha(\"#FF8A3D\", 0.26),\n active: alpha(\"#03210E\", 0.56),\n disabled: alpha(\"#03210E\", 0.34),\n disabledBackground: alpha(\"#03210E\", 0.1),\n },\n },\n\n typography: TERMINAL_TYPOGRAPHY,\n\n shape: { borderRadius: 0 },\n spacing: 8,\n\n components: createTerminalComponents({\n scanlineAlpha: 0.08,\n surfaceBorderAlpha: 0.44,\n panelGlowAlpha: 0.2,\n }),\n} satisfies NamedThemeOptions;\n\nexport const retroTerminalDark = {\n name: \"Retro Terminal Dark\",\n direction: \"rtl\",\n\n palette: {\n mode: \"dark\",\n\n primary: {\n main: \"#33FF85\",\n dark: \"#1FCB63\",\n light: \"#8CFFB4\",\n contrastText: \"#02150A\",\n },\n\n secondary: {\n main: \"#FF9D57\",\n dark: \"#FF7A1E\",\n light: \"#FFC896\",\n contrastText: \"#1A0F04\",\n },\n\n info: {\n main: \"#22D3EE\",\n dark: \"#0EA5E9\",\n light: \"#67E8F9\",\n contrastText: \"#03161A\",\n },\n success: {\n main: \"#33FF85\",\n dark: \"#1FCB63\",\n light: \"#8CFFB4\",\n contrastText: \"#02150A\",\n },\n warning: {\n main: \"#FDE047\",\n dark: \"#FACC15\",\n light: \"#FEF08A\",\n contrastText: \"#211901\",\n },\n error: {\n main: \"#FB7185\",\n dark: \"#F43F5E\",\n light: \"#FDA4AF\",\n contrastText: \"#1E0408\",\n },\n\n background: {\n default: \"#040805\",\n paper: \"#09110B\",\n },\n\n text: {\n primary: \"#9CFFB6\",\n secondary: \"#5FDB85\",\n disabled: alpha(\"#9CFFB6\", 0.46),\n },\n\n divider: alpha(\"#9CFFB6\", 0.24),\n\n grey: {\n 50: \"#040805\",\n 100: \"#09110B\",\n 200: \"#0D1C12\",\n 300: \"#13301E\",\n 400: \"#1A4A2F\",\n 500: \"#257347\",\n 600: \"#2CA65F\",\n 700: \"#5FDB85\",\n 800: \"#8CFFB4\",\n 900: \"#C6FFD9\",\n },\n\n action: {\n hover: alpha(\"#33FF85\", 0.18),\n selected: alpha(\"#33FF85\", 0.28),\n focus: alpha(\"#FF9D57\", 0.3),\n active: alpha(\"#9CFFB6\", 0.58),\n disabled: alpha(\"#9CFFB6\", 0.34),\n disabledBackground: alpha(\"#9CFFB6\", 0.1),\n },\n },\n\n typography: TERMINAL_TYPOGRAPHY,\n\n shape: { borderRadius: 0 },\n spacing: 8,\n\n components: createTerminalComponents({\n scanlineAlpha: 0.12,\n surfaceBorderAlpha: 0.62,\n panelGlowAlpha: 0.32,\n }),\n} satisfies NamedThemeOptions;\n","import { alpha } from \"@mui/material/styles\";\n\nimport type { NamedThemeOptions } from \"@/models\";\nimport type { Theme, ThemeOptions } from \"@mui/material/styles\";\n\n/**\n * Warm Earth — soft organic palette (sand / terracotta / olive).\n * - Light: creamy surfaces, rounded \"pill\" controls, gentle shadows.\n * - Dark: warm clay night mode with the same soft geometry.\n */\n\nconst FONT_WARM =\n '\"Tajawal\",\"Cairo\",\"Noto Naskh Arabic\",\"Noto Sans Arabic\",\"Inter\",\"Roboto\",\"Arial\",sans-serif';\n\nconst TERRACOTTA = \"#D08A6B\";\nconst TERRACOTTA_DARK = \"#B96F4F\";\nconst TERRACOTTA_LIGHT = \"#E8B8A1\";\n\nconst OLIVE = \"#8EA36A\";\nconst OLIVE_DARK = \"#738651\";\nconst OLIVE_LIGHT = \"#B9C89A\";\n\nconst INK = \"#3B2A1F\";\nconst SOFT_RADIUS = 28;\n\nconst WARM_TYPOGRAPHY = {\n fontFamily: FONT_WARM,\n\n h1: {\n fontWeight: 800,\n fontSize: \"2rem\",\n lineHeight: 1.24,\n letterSpacing: \"-0.01em\",\n },\n h2: { fontWeight: 800, fontSize: \"1.5rem\", lineHeight: 1.3 },\n h3: { fontWeight: 700, fontSize: \"1.24rem\", lineHeight: 1.36 },\n h4: { fontWeight: 700, fontSize: \"1.1rem\", lineHeight: 1.42 },\n\n subtitle1: { fontWeight: 600, fontSize: \"0.95rem\" },\n subtitle2: { fontWeight: 600, fontSize: \"0.875rem\" },\n\n body1: { fontSize: \"0.95rem\", lineHeight: 1.78 },\n body2: { fontSize: \"0.875rem\", lineHeight: 1.68 },\n\n button: { textTransform: \"none\", fontWeight: 700, letterSpacing: \"0.01em\" },\n caption: { fontSize: \"0.75rem\" },\n overline: { fontSize: \"0.75rem\", letterSpacing: \"0.06em\" },\n} as const;\n\nconst createWarmEarthComponents = ({\n bodyGlowPrimary,\n bodyGlowSecondary,\n surfaceBorderAlpha,\n panelShadowAlpha,\n appBarAlpha,\n}: {\n bodyGlowPrimary: number;\n bodyGlowSecondary: number;\n surfaceBorderAlpha: number;\n panelShadowAlpha: number;\n appBarAlpha: number;\n}): ThemeOptions[\"components\"] => ({\n MuiCssBaseline: {\n styleOverrides: (theme: Theme) => ({\n body: {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n backgroundImage: `radial-gradient(900px circle at 12% 6%, ${alpha(\n theme.palette.primary.main,\n bodyGlowPrimary,\n )}, transparent 50%), radial-gradient(800px circle at 90% 10%, ${alpha(\n theme.palette.secondary.main,\n bodyGlowSecondary,\n )}, transparent 48%)`,\n },\n }),\n },\n\n MuiAppBar: {\n defaultProps: { color: \"inherit\" as const, elevation: 0 },\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 999,\n marginInline: theme.spacing(1),\n marginTop: theme.spacing(1),\n paddingInline: theme.spacing(1),\n backgroundColor: alpha(theme.palette.background.paper, appBarAlpha),\n border: `1px solid ${alpha(theme.palette.text.primary, surfaceBorderAlpha)}`,\n boxShadow: `0 10px 30px ${alpha(theme.palette.text.primary, panelShadowAlpha)}`,\n backdropFilter: \"blur(8px)\",\n }),\n },\n },\n\n MuiPaper: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: SOFT_RADIUS + 2,\n backgroundImage: \"none\",\n backgroundColor: alpha(theme.palette.background.paper, 0.97),\n border: `1px solid ${alpha(theme.palette.text.primary, surfaceBorderAlpha)}`,\n boxShadow: `0 14px 36px ${alpha(theme.palette.text.primary, panelShadowAlpha)}`,\n }),\n },\n },\n\n MuiCard: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: SOFT_RADIUS + 4,\n border: `1px solid ${alpha(theme.palette.text.primary, surfaceBorderAlpha)}`,\n boxShadow: `0 18px 40px ${alpha(theme.palette.text.primary, panelShadowAlpha)}`,\n }),\n },\n },\n\n MuiButton: {\n defaultProps: { disableElevation: true },\n styleOverrides: {\n root: {\n borderRadius: 999,\n paddingInline: 22,\n paddingBlock: 10,\n fontWeight: 700,\n },\n containedPrimary: ({ theme }) => ({\n backgroundImage: `linear-gradient(180deg, ${alpha(\n theme.palette.primary.light,\n 0.88,\n )}, ${alpha(theme.palette.primary.main, 0.92)})`,\n boxShadow: `0 8px 18px ${alpha(theme.palette.primary.main, 0.28)}`,\n \"&:hover\": {\n boxShadow: `0 12px 24px ${alpha(theme.palette.primary.main, 0.34)}`,\n },\n }),\n outlined: ({ theme }) => ({\n borderColor: alpha(theme.palette.text.primary, 0.18),\n backgroundColor: alpha(theme.palette.background.paper, 0.55),\n }),\n },\n },\n\n MuiChip: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 999,\n fontWeight: 700,\n border: `1px solid ${alpha(theme.palette.text.primary, 0.14)}`,\n backgroundColor: alpha(theme.palette.background.paper, 0.86),\n }),\n },\n },\n\n MuiTabs: {\n styleOverrides: {\n root: ({ theme }) => ({\n minHeight: 46,\n padding: theme.spacing(0.5),\n }),\n indicator: ({ theme }) => ({\n height: \"calc(100% - 8px)\",\n top: 4,\n borderRadius: 999,\n backgroundColor: alpha(theme.palette.background.paper, 0.96),\n border: `1px solid ${alpha(theme.palette.primary.main, 0.26)}`,\n boxShadow: `0 6px 14px ${alpha(theme.palette.primary.main, 0.2)}`,\n }),\n },\n },\n\n MuiTab: {\n styleOverrides: {\n root: {\n minHeight: 38,\n fontWeight: 700,\n borderRadius: 999,\n paddingInline: 14,\n },\n },\n },\n\n MuiOutlinedInput: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 22,\n backgroundColor: alpha(theme.palette.background.paper, 0.9),\n \"&.Mui-focused .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(theme.palette.primary.main, 0.52),\n borderWidth: 1,\n },\n }),\n notchedOutline: ({ theme }) => ({\n borderColor: alpha(theme.palette.text.primary, 0.16),\n }),\n },\n },\n\n MuiInputLabel: {\n styleOverrides: {\n root: { fontWeight: 600 },\n },\n },\n\n MuiTableHead: {\n styleOverrides: {\n root: ({ theme }) => ({\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n }),\n },\n },\n\n MuiTableCell: {\n styleOverrides: {\n head: ({ theme }) => ({\n fontWeight: 700,\n color: theme.palette.text.primary,\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, 0.14)}`,\n }),\n body: ({ theme }) => ({\n borderBottom: `1px solid ${alpha(theme.palette.text.primary, 0.09)}`,\n }),\n },\n },\n\n MuiDivider: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderColor: alpha(theme.palette.text.primary, 0.12),\n }),\n },\n },\n\n MuiAlert: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 24,\n border: `1px solid ${alpha(theme.palette.text.primary, 0.14)}`,\n backgroundColor: alpha(theme.palette.background.paper, 0.92),\n }),\n },\n },\n\n MuiTooltip: {\n styleOverrides: {\n tooltip: ({ theme }) => ({\n borderRadius: 14,\n fontSize: \"0.8rem\",\n border: `1px solid ${alpha(theme.palette.text.primary, 0.14)}`,\n backgroundColor: alpha(theme.palette.background.paper, 0.98),\n color: theme.palette.text.primary,\n }),\n },\n },\n\n MuiSnackbarContent: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: 24,\n border: `1px solid ${alpha(theme.palette.text.primary, 0.14)}`,\n }),\n },\n },\n\n MuiDialog: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: SOFT_RADIUS + 6,\n border: `1px solid ${alpha(theme.palette.text.primary, surfaceBorderAlpha)}`,\n boxShadow: `0 20px 44px ${alpha(theme.palette.text.primary, panelShadowAlpha)}`,\n }),\n },\n },\n\n MuiMenu: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: 22,\n border: `1px solid ${alpha(theme.palette.text.primary, surfaceBorderAlpha)}`,\n }),\n },\n },\n\n MuiPopover: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: 22,\n border: `1px solid ${alpha(theme.palette.text.primary, surfaceBorderAlpha)}`,\n }),\n },\n },\n\n MuiDrawer: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: \"24px 0 0 24px\",\n borderInlineStart: `1px solid ${alpha(theme.palette.text.primary, surfaceBorderAlpha)}`,\n }),\n },\n },\n\n MuiMenuItem: {\n styleOverrides: {\n root: ({ theme }) => ({\n marginInline: theme.spacing(0.5),\n borderRadius: 12,\n }),\n },\n },\n\n MuiListItemButton: {\n styleOverrides: {\n root: ({ theme }) => ({\n marginInline: theme.spacing(0.5),\n borderRadius: 12,\n }),\n },\n },\n});\n\nexport const warmEarth = {\n name: \"Warm Earth\",\n direction: \"rtl\",\n\n palette: {\n mode: \"light\",\n\n primary: {\n main: TERRACOTTA,\n dark: TERRACOTTA_DARK,\n light: TERRACOTTA_LIGHT,\n contrastText: \"#FFFFFF\",\n },\n\n secondary: {\n main: OLIVE,\n dark: OLIVE_DARK,\n light: OLIVE_LIGHT,\n contrastText: \"#1B2312\",\n },\n\n info: {\n main: \"#3B82F6\",\n dark: \"#2563EB\",\n light: \"#93C5FD\",\n contrastText: \"#FFFFFF\",\n },\n success: {\n main: \"#22A36A\",\n dark: \"#198D59\",\n light: \"#79D7AE\",\n contrastText: \"#FFFFFF\",\n },\n warning: {\n main: \"#D68A30\",\n dark: \"#B9711F\",\n light: \"#EDB370\",\n contrastText: \"#2B1E10\",\n },\n error: {\n main: \"#D86060\",\n dark: \"#B94A4A\",\n light: \"#EEA0A0\",\n contrastText: \"#FFFFFF\",\n },\n\n background: {\n default: \"#FBF4EC\",\n paper: \"#FFFDF9\",\n },\n\n text: {\n primary: INK,\n secondary: \"#6B5341\",\n disabled: alpha(INK, 0.44),\n },\n\n divider: alpha(INK, 0.12),\n\n grey: {\n 50: \"#FFFEFC\",\n 100: \"#FFF9F1\",\n 200: \"#F4E7D8\",\n 300: \"#EAD6C1\",\n 400: \"#D8BFA3\",\n 500: \"#C0A180\",\n 600: \"#8F735C\",\n 700: \"#634E3F\",\n 800: \"#3E3127\",\n 900: \"#1F1712\",\n },\n\n action: {\n hover: alpha(TERRACOTTA, 0.06),\n selected: alpha(TERRACOTTA, 0.12),\n focus: alpha(\"#3B82F6\", 0.2),\n active: alpha(INK, 0.5),\n disabled: alpha(INK, 0.3),\n disabledBackground: alpha(INK, 0.08),\n },\n },\n\n typography: WARM_TYPOGRAPHY,\n\n shape: { borderRadius: SOFT_RADIUS },\n spacing: 8,\n\n components: createWarmEarthComponents({\n bodyGlowPrimary: 0.2,\n bodyGlowSecondary: 0.16,\n surfaceBorderAlpha: 0.1,\n panelShadowAlpha: 0.14,\n appBarAlpha: 0.88,\n }),\n} satisfies NamedThemeOptions;\n\nexport const warmEarthDark = {\n name: \"Warm Earth Dark\",\n direction: \"rtl\",\n\n palette: {\n mode: \"dark\",\n\n primary: {\n main: \"#E4B392\",\n dark: \"#CB9675\",\n light: \"#F0CBB4\",\n contrastText: \"#1D120B\",\n },\n\n secondary: {\n main: \"#B7CB97\",\n dark: \"#A1B67F\",\n light: \"#D4E2C0\",\n contrastText: \"#1B2312\",\n },\n\n info: {\n main: \"#93C5FD\",\n dark: \"#60A5FA\",\n light: \"#BFDBFE\",\n contrastText: \"#102033\",\n },\n success: {\n main: \"#79D7AE\",\n dark: \"#4BC48F\",\n light: \"#B1E9CD\",\n contrastText: \"#0D2A1D\",\n },\n warning: {\n main: \"#EDB370\",\n dark: \"#D68A30\",\n light: \"#F6CC99\",\n contrastText: \"#31200D\",\n },\n error: {\n main: \"#EEA0A0\",\n dark: \"#D86060\",\n light: \"#F5C4C4\",\n contrastText: \"#301414\",\n },\n\n background: {\n default: \"#18120E\",\n paper: \"#241C17\",\n },\n\n text: {\n primary: \"#F7EEE3\",\n secondary: \"#D1C1B2\",\n disabled: alpha(\"#F7EEE3\", 0.45),\n },\n\n divider: alpha(\"#F7EEE3\", 0.14),\n\n grey: {\n 50: \"#18120E\",\n 100: \"#241C17\",\n 200: \"#302720\",\n 300: \"#3E342A\",\n 400: \"#56483A\",\n 500: \"#776655\",\n 600: \"#A18A73\",\n 700: \"#D1C1B2\",\n 800: \"#E9DFD3\",\n 900: \"#F7EEE3\",\n },\n\n action: {\n hover: alpha(\"#E4B392\", 0.1),\n selected: alpha(\"#E4B392\", 0.16),\n focus: alpha(\"#93C5FD\", 0.24),\n active: alpha(\"#F7EEE3\", 0.52),\n disabled: alpha(\"#F7EEE3\", 0.32),\n disabledBackground: alpha(\"#F7EEE3\", 0.08),\n },\n },\n\n typography: WARM_TYPOGRAPHY,\n\n shape: { borderRadius: SOFT_RADIUS },\n spacing: 8,\n\n components: createWarmEarthComponents({\n bodyGlowPrimary: 0.22,\n bodyGlowSecondary: 0.14,\n surfaceBorderAlpha: 0.18,\n panelShadowAlpha: 0.32,\n appBarAlpha: 0.78,\n }),\n} satisfies NamedThemeOptions;\n","import BrightnessAutoRoundedIcon from \"@mui/icons-material/BrightnessAutoRounded\";\nimport DarkModeRoundedIcon from \"@mui/icons-material/DarkModeRounded\";\nimport LightModeRoundedIcon from \"@mui/icons-material/LightModeRounded\";\nimport PersonalVideoRoundedIcon from \"@mui/icons-material/PersonalVideoRounded\";\n\nimport type { OptionItem } from \"@/models\";\n\nconst OPTION_ICON_SIZE = 32;\n\nexport const darkModeOptions: OptionItem[] = [\n {\n label: \"Auto\",\n value: \"auto\",\n icon: (\n <BrightnessAutoRoundedIcon\n color=\"inherit\"\n sx={{ fontSize: OPTION_ICON_SIZE }}\n />\n ),\n },\n {\n label: \"System\",\n value: \"system\",\n icon: (\n <PersonalVideoRoundedIcon\n color=\"inherit\"\n sx={{ fontSize: OPTION_ICON_SIZE }}\n />\n ),\n },\n {\n label: \"Light\",\n value: \"light\",\n icon: (\n <LightModeRoundedIcon\n color=\"inherit\"\n sx={{ fontSize: OPTION_ICON_SIZE }}\n />\n ),\n },\n {\n label: \"Dark\",\n value: \"dark\",\n icon: (\n <DarkModeRoundedIcon\n color=\"inherit\"\n sx={{ fontSize: OPTION_ICON_SIZE }}\n />\n ),\n },\n];\n","import { useMemo } from \"react\";\nimport { ThemeProvider as MuiThemeProvider } from \"@mui/material/styles\";\n\nimport {\n ThemeContext,\n resolveDefaultThemeName,\n usePersistedAppSettings,\n} from \"@/context/settings\";\nimport {\n GlobalStyles,\n buildMuiTheme,\n resolveEffectiveMode,\n selectThemeOptions,\n} from \"@/styles\";\nimport { useSystemTheme } from \"@/utils\";\n\nimport type { ThemesInput } from \"@/context/settings\";\nimport type { DarkModeOptions } from \"@/models\";\nimport type { FC, PropsWithChildren } from \"react\";\n\ntype ThemeProviderWrapperProps = PropsWithChildren<{\n /** Optional font stack to apply across the app. */\n fontFamily?: string;\n /**\n * Optional list of theme presets.\n * Accepts only `ThemePreset[]`.\n */\n themes?: ThemesInput;\n /**\n * Forces dark mode regardless of persisted settings and system preference.\n * When set, `setDarkMode` becomes a no-op.\n */\n darkMode?: DarkModeOptions;\n}>;\n\nexport const ThemeProviderWrapper: FC<ThemeProviderWrapperProps> = ({\n children,\n fontFamily,\n themes,\n darkMode: darkModeProp,\n}) => {\n const systemTheme = useSystemTheme();\n const {\n theme,\n setTheme,\n darkMode: persistedDarkMode,\n setDarkMode: setPersistedDarkMode,\n themesSource,\n selectedTheme,\n selectedPreset,\n } = usePersistedAppSettings({ themes, defaultDarkMode: darkModeProp });\n\n const darkMode = darkModeProp ?? persistedDarkMode;\n const setDarkMode = useMemo(\n () => (darkModeProp ? () => {} : setPersistedDarkMode),\n [darkModeProp, setPersistedDarkMode],\n );\n\n const effectiveMode = useMemo(\n () => resolveEffectiveMode(darkMode, systemTheme),\n [darkMode, systemTheme],\n );\n\n const selectedOptions = useMemo(\n () => selectThemeOptions(selectedPreset, effectiveMode),\n [selectedPreset, effectiveMode],\n );\n\n const muiTheme = useMemo(\n () => buildMuiTheme(selectedOptions, effectiveMode),\n [selectedOptions, effectiveMode],\n );\n\n const defaultThemeName = useMemo(\n () => resolveDefaultThemeName(themesSource),\n [themesSource],\n );\n\n return (\n <ThemeContext.Provider\n value={{\n theme,\n darkMode,\n setTheme,\n setDarkMode,\n themes: themesSource,\n selectedTheme,\n defaultThemeName,\n }}\n >\n <MuiThemeProvider theme={muiTheme}>\n <GlobalStyles fontFamily={fontFamily} />\n {children}\n </MuiThemeProvider>\n </ThemeContext.Provider>\n );\n};\n","import { createContext, useContext } from \"react\";\n\nimport type { ThemeContextProps } from \"@/models\";\n\nexport const ThemeContext = createContext<ThemeContextProps | undefined>(\n undefined,\n);\n\nexport const useThemeSettings = (): ThemeContextProps => {\n const context = useContext(ThemeContext);\n if (!context)\n throw new Error(\n \"useThemeSettings must be used within ThemeProviderWrapper\",\n );\n return context;\n};\n","import type { ThemesInput } from \"@/context/settings/themeTypes\";\nimport type { NormalizedPreset, ThemePreset } from \"@/models/themePresets\";\nimport type { ThemeOptions } from \"@mui/material/styles\";\n\nconst DEFAULT_PRESET_ID = \"Default\";\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nconst normalizeId = (id: string | undefined): string => {\n const normalized = id?.trim();\n if (!normalized) {\n throw new Error(\"normalizeThemesInput: preset `id` must be a non-empty.\");\n }\n return normalized;\n};\n\nconst normalizeLabel = (\n label: string | undefined,\n fallback: string,\n): string => {\n const normalized = label?.trim();\n if (!normalized) {\n return fallback;\n }\n return normalized;\n};\n\nconst isThemePreset = (value: unknown): value is ThemePreset => {\n if (!isRecord(value)) return false;\n if (typeof value.id !== \"string\") return false;\n if (typeof value.label !== \"string\") return false;\n if (!(\"colorSchemes\" in value)) return false;\n\n const { colorSchemes } = value;\n return isRecord(colorSchemes);\n};\n\nconst normalizePresetLike = (\n input: unknown,\n index: number,\n): NormalizedPreset => {\n if (!isThemePreset(input)) {\n throw new Error(\n `normalizeThemesInput: invalid ThemePreset shape at index ${index}.`,\n );\n }\n\n const id = normalizeId(input.id);\n const label = normalizeLabel(input.label, id);\n const { colorSchemes } = input;\n const { light, dark } = colorSchemes;\n\n if (!isRecord(light)) {\n throw new Error(\n \"normalizeThemesInput: preset must include colorSchemes.light.\",\n );\n }\n if (!isRecord(dark)) {\n throw new Error(\n \"normalizeThemesInput: preset must include colorSchemes.dark.\",\n );\n }\n\n return {\n ...input,\n id,\n label,\n colorSchemes: {\n light: light as ThemeOptions,\n dark: dark as ThemeOptions,\n },\n meta: { origin: \"preset\" },\n };\n};\n\nconst dedupePresets = (presets: NormalizedPreset[]): NormalizedPreset[] => {\n const firstIndex = new Map<string, number>();\n const lastPreset = new Map<string, NormalizedPreset>();\n\n for (const [index, preset] of presets.entries()) {\n if (!firstIndex.has(preset.id)) {\n firstIndex.set(preset.id, index);\n }\n lastPreset.set(preset.id, preset);\n }\n\n const orderedIds = [...firstIndex.keys()];\n\n const deduped: NormalizedPreset[] = [];\n for (const id of orderedIds) {\n const preset = lastPreset.get(id);\n if (preset) deduped.push(preset);\n }\n\n return deduped;\n};\n\nconst createDefaultPreset = (): NormalizedPreset => ({\n id: DEFAULT_PRESET_ID,\n label: DEFAULT_PRESET_ID,\n colorSchemes: { light: {}, dark: {} },\n meta: { origin: \"custom\" },\n});\n\nexport const normalizeThemesInput = (\n input?: ThemesInput,\n): NormalizedPreset[] => {\n if (!input || input.length === 0) return [createDefaultPreset()];\n\n const normalized = input.map((item, index) =>\n normalizePresetLike(item, index),\n );\n if (normalized.length === 0) return [createDefaultPreset()];\n\n return dedupePresets(normalized);\n};\n","import { normalizeThemesInput } from \"@/utils/normalizeThemes\";\n\nimport type { ThemesInput } from \"./themeTypes\";\nimport type { DarkModeOptions, NamedThemeOptions } from \"@/models\";\nimport type { NormalizedPreset } from \"@/models/themePresets\";\n\nconst DEFAULT_THEME_NAME = \"Default\";\n\nconst presetToTheme = (preset: NormalizedPreset): NamedThemeOptions => ({\n name: preset.id,\n ...preset.colorSchemes.light,\n});\n\n/**\n * Normalizes preset input so the result always includes valid theme names.\n * - No input/empty: returns a single default theme.\n * - Duplicate preset ids: resolved with last-wins while keeping first-order.\n */\nexport const normalizeThemes = (input?: ThemesInput): NamedThemeOptions[] => {\n const presets = normalizeThemesInput(input);\n if (presets.length === 0) return [{ name: DEFAULT_THEME_NAME }];\n return presets.map((preset) => presetToTheme(preset));\n};\n\nexport const mergeThemes = (\n presets?: ThemesInput,\n customThemes?: ThemesInput,\n): NamedThemeOptions[] => {\n const merged = [...(presets ?? []), ...(customThemes ?? [])];\n return normalizeThemes(merged.length > 0 ? merged : undefined);\n};\n\nexport const resolveDefaultThemeName = (themes: NamedThemeOptions[]): string =>\n themes[0]?.name ?? DEFAULT_THEME_NAME;\n\nexport const resolveThemeName = (\n themeName: string | undefined,\n themes: NamedThemeOptions[],\n): string => {\n if (themeName && themes.some((theme) => theme.name === themeName)) {\n return themeName;\n }\n return resolveDefaultThemeName(themes);\n};\n\nexport const resolveThemeById = (\n themes: NamedThemeOptions[],\n themeId: string,\n): NamedThemeOptions | undefined =>\n themes.find((theme) => theme.name === themeId);\n\nexport const resolveDarkMode = (\n darkMode: DarkModeOptions | undefined,\n defaultMode: DarkModeOptions = \"system\",\n): DarkModeOptions => {\n if (!darkMode) return defaultMode;\n return darkMode;\n};\n","import { useMemo, useSyncExternalStore } from \"react\";\n\nimport { normalizeThemesInput } from \"@/utils/normalizeThemes\";\nimport { canUseDom } from \"@/utils/ssr\";\nimport {\n APP_SETTINGS_VERSION,\n readAppSettings,\n writeAppSettings,\n} from \"@/utils/storage\";\n\nimport { resolveDarkMode, resolveThemeName } from \"./helper\";\n\nimport type { ThemesInput } from \"./themeTypes\";\nimport type { DarkModeOptions, NamedThemeOptions } from \"@/models\";\nimport type { NormalizedPreset } from \"@/models/themePresets\";\n\nconst APP_SETTINGS_CHANGE_EVENT = \"appSettings:change\";\n\ninterface Props {\n themes?: ThemesInput;\n defaultDarkMode?: DarkModeOptions;\n}\n\ninterface ReturnValue {\n theme: string;\n setTheme: (theme: string) => void;\n darkMode: DarkModeOptions;\n setDarkMode: (mode: DarkModeOptions) => void;\n presetsSource: NormalizedPreset[];\n selectedPreset: NormalizedPreset;\n themesSource: NamedThemeOptions[];\n selectedTheme: NamedThemeOptions;\n}\n\nconst getSettingsSnapshot = (): string => {\n const stored = readAppSettings();\n if (!stored) return \"\";\n\n const themeId = typeof stored.themeId === \"string\" ? stored.themeId : \"\";\n const darkMode = typeof stored.darkMode === \"string\" ? stored.darkMode : \"\";\n return `${themeId}::${darkMode}`;\n};\n\nconst getServerSnapshot = (): string => \"\";\n\nconst subscribe = (onStoreChange: () => void): (() => void) => {\n if (\n !canUseDom() ||\n typeof globalThis.addEventListener !== \"function\" ||\n typeof globalThis.removeEventListener !== \"function\"\n ) {\n return () => {};\n }\n\n const onChange = () => {\n onStoreChange();\n };\n\n globalThis.addEventListener(APP_SETTINGS_CHANGE_EVENT, onChange);\n globalThis.addEventListener(\"storage\", onChange);\n return () => {\n globalThis.removeEventListener(APP_SETTINGS_CHANGE_EVENT, onChange);\n globalThis.removeEventListener(\"storage\", onChange);\n };\n};\n\nconst notify = (): void => {\n if (\n !canUseDom() ||\n typeof globalThis.dispatchEvent !== \"function\" ||\n typeof globalThis.Event !== \"function\"\n ) {\n return;\n }\n\n globalThis.dispatchEvent(new Event(APP_SETTINGS_CHANGE_EVENT));\n};\n\nexport const usePersistedAppSettings = ({\n themes,\n defaultDarkMode = \"light\",\n}: Props): ReturnValue => {\n const presetsSource = useMemo(() => normalizeThemesInput(themes), [themes]);\n const themesSource = useMemo(\n () =>\n presetsSource.map((preset) => ({\n name: preset.id,\n ...preset.colorSchemes.light,\n })),\n [presetsSource],\n );\n\n const settingsSnapshot = useSyncExternalStore(\n subscribe,\n getSettingsSnapshot,\n getServerSnapshot,\n );\n const [storedThemeId = \"\", storedDarkMode = \"\"] =\n settingsSnapshot.split(\"::\");\n\n const theme = resolveThemeName(storedThemeId || undefined, themesSource);\n const darkMode = resolveDarkMode(\n (storedDarkMode || undefined) as DarkModeOptions | undefined,\n defaultDarkMode,\n );\n\n const selectedPreset = useMemo(\n () =>\n presetsSource.find((preset) => preset.id === theme) || presetsSource[0],\n [theme, presetsSource],\n );\n const selectedTheme = useMemo(\n () => themesSource.find((t) => t.name === theme) || themesSource[0],\n [theme, themesSource],\n );\n\n const setTheme = (nextTheme: string) => {\n const resolvedThemeId = resolveThemeName(nextTheme, themesSource);\n writeAppSettings({\n version: APP_SETTINGS_VERSION,\n themeId: resolvedThemeId,\n darkMode,\n });\n notify();\n };\n\n const setDarkMode = (mode: DarkModeOptions) => {\n writeAppSettings({\n version: APP_SETTINGS_VERSION,\n themeId: theme,\n darkMode: mode,\n });\n notify();\n };\n\n return {\n theme,\n setTheme,\n darkMode,\n setDarkMode,\n presetsSource,\n selectedPreset,\n themesSource,\n selectedTheme,\n };\n};\n","export const canUseDom = (): boolean =>\n globalThis.window !== undefined && globalThis.document !== undefined;\n","import { canUseDom } from \"@/utils/ssr\";\n\nimport type { DarkModeOptions } from \"@/models\";\n\nconst APP_SETTINGS_KEY = \"appSettings\";\nexport const APP_SETTINGS_VERSION = 1;\nconst DARK_MODE_OPTIONS = new Set<DarkModeOptions>([\n \"system\",\n \"auto\",\n \"light\",\n \"dark\",\n]);\n\nconst isDarkModeOption = (value: unknown): value is DarkModeOptions =>\n typeof value === \"string\" && DARK_MODE_OPTIONS.has(value as DarkModeOptions);\n\nexport interface StoredAppSettings {\n version: typeof APP_SETTINGS_VERSION;\n themeId: string;\n darkMode: DarkModeOptions;\n}\n\nexport const readAppSettings = (): Partial<StoredAppSettings> | null => {\n if (!canUseDom() || globalThis.localStorage === undefined) return null;\n try {\n const storedRaw = globalThis.localStorage.getItem(APP_SETTINGS_KEY);\n if (!storedRaw) return null;\n const parsed = JSON.parse(storedRaw) as {\n version?: unknown;\n themeId?: unknown;\n theme?: unknown;\n darkMode?: unknown;\n };\n const darkMode = isDarkModeOption(parsed.darkMode)\n ? parsed.darkMode\n : undefined;\n if (parsed.version === APP_SETTINGS_VERSION) {\n const themeId =\n typeof parsed.themeId === \"string\" ? parsed.themeId : undefined;\n if (!themeId && !darkMode) return null;\n return { version: APP_SETTINGS_VERSION, themeId, darkMode };\n }\n\n const legacyTheme =\n typeof parsed.theme === \"string\" ? parsed.theme : undefined;\n if (!legacyTheme && !darkMode) return null;\n return { version: APP_SETTINGS_VERSION, themeId: legacyTheme, darkMode };\n } catch {\n return null;\n }\n};\n\nexport const writeAppSettings = (settings: StoredAppSettings): void => {\n if (!canUseDom() || globalThis.localStorage === undefined) return;\n try {\n globalThis.localStorage.setItem(APP_SETTINGS_KEY, JSON.stringify(settings));\n } catch {\n /* empty */\n }\n};\n","import { Global, css } from \"@emotion/react\";\nimport { alpha, useTheme } from \"@mui/material/styles\";\n\nimport type { FC } from \"react\";\n\n/**\n * Injects global styles into the document using Emotion.\n * These styles include font setup, base HTML styles, custom scrollbars,\n * selection styling, and some accessibility tweaks.\n *\n * Uses the MUI theme to dynamically adjust colors for light/dark mode.\n */\ninterface GlobalStylesProps {\n /** Optional font stack to apply across the app. */\n fontFamily?: string;\n}\n\nexport const GlobalStyles: FC<GlobalStylesProps> = ({ fontFamily }) => {\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === \"dark\";\n\n const primaryColor = theme.palette.primary.main;\n const textColor = theme.palette.text.primary;\n const backgroundDefault = theme.palette.background.default;\n const backgroundPaper = theme.palette.background.paper;\n\n const scrollbarThumb = alpha(\n theme.palette.text.primary,\n isDarkMode ? 0.35 : 0.25,\n );\n const scrollbarThumbHover = alpha(\n theme.palette.text.primary,\n isDarkMode ? 0.55 : 0.45,\n );\n\n return (\n <Global\n styles={css`\n /* Allow application to control font via CSS var or prop */\n :root {\n ${fontFamily ? `--app-font-family: ${fontFamily};` : \"\"}\n }\n * {\n font-family:\n var(\n --app-font-family,\n \"Mulish\",\n system-ui,\n -apple-system,\n \"Segoe UI\",\n Roboto,\n Arial\n ),\n sans-serif !important;\n -webkit-tap-highlight-color: transparent;\n &::selection {\n background-color: ${`${primaryColor}e1`};\n }\n }\n\n html,\n body,\n #root {\n height: 100%;\n margin: 0;\n }\n\n :root {\n height: 100%;\n /* default fallback font; apps can override via --app-font-family */\n font-family: var(\n --app-font-family,\n \"Mulish\",\n system-ui,\n -apple-system,\n \"Segoe UI\",\n Roboto,\n Arial,\n sans-serif\n )\n sans-serif;\n line-height: 1.5;\n font-weight: 400;\n color-scheme: ${isDarkMode ? \"dark\" : \"light\"};\n font-synthesis: none;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -webkit-text-size-adjust: 100%;\n }\n\n body {\n margin: 0;\n height: 100%;\n overflow: auto;\n touch-action: manipulation;\n background: ${backgroundDefault};\n color: ${textColor};\n background-attachment: fixed;\n background-size: cover;\n transition: 0.3s background;\n /* Scrollbars: neutral (b2b-friendly) */\n /* Firefox */\n scrollbar-color: ${scrollbarThumb} ${backgroundDefault};\n scrollbar-width: thin;\n /* WebKit */\n &::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n &::-webkit-scrollbar-track {\n background: ${backgroundDefault};\n }\n &::-webkit-scrollbar-thumb {\n background-color: ${scrollbarThumb};\n border-radius: 999px;\n border: 3px solid ${backgroundDefault};\n background-clip: padding-box;\n }\n &::-webkit-scrollbar-thumb:hover {\n background-color: ${scrollbarThumbHover};\n }\n }\n\n a {\n text-decoration: none;\n color: inherit;\n }\n\n img {\n user-select: none;\n }\n\n input[type=\"file\"]::-webkit-file-upload-button {\n display: none;\n }\n\n input[type=\"datetime-local\"]:placeholder-shown {\n color: transparent !important;\n }\n\n pre {\n padding: 16px;\n border-radius: 18px;\n overflow-x: auto;\n }\n\n .MuiDialogContent-root,\n .MuiDrawer-paper,\n .customScrollbar,\n textarea {\n /* Firefox */\n scrollbar-color: ${scrollbarThumb} ${backgroundPaper};\n scrollbar-width: thin;\n /* WebKit */\n &::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n &::-webkit-scrollbar-track {\n background: ${backgroundPaper};\n }\n &::-webkit-scrollbar-thumb {\n background-color: ${scrollbarThumb};\n border-radius: 999px;\n border: 3px solid ${backgroundPaper};\n background-clip: padding-box;\n }\n &::-webkit-scrollbar-thumb:hover {\n background-color: ${scrollbarThumbHover};\n }\n }\n\n /* react-spring-bottom-sheet styles */\n div[role=\"dialog\"] {\n z-index: 9999;\n }\n `}\n />\n );\n};\n","import { alpha } from \"@mui/material/styles\";\n\nimport { getSurfaceTokens } from \"../tokens\";\n\nimport type { Theme } from \"@mui/material\";\n\n/**\n * Common component style overrides and default props shared across the design system.\n * This object should be spread into the `components` field of the MUI theme.\n */\nexport const commonComponentProps: Theme[\"components\"] = {\n MuiTooltip: {\n defaultProps: {\n disableInteractive: true,\n },\n styleOverrides: {\n tooltip: ({ theme }) => ({\n backdropFilter: \"blur(6px)\",\n WebkitBackdropFilter: \"blur(6px)\",\n padding: \"8px 16px\",\n borderRadius: theme.shape.borderRadius,\n fontSize: theme.typography.pxToRem(12),\n }),\n },\n },\n\n MuiButton: {\n styleOverrides: {\n root: ({ theme }) => ({\n padding: \"12px 24px\",\n borderRadius: theme.shape.borderRadius,\n }),\n contained: {\n boxShadow: \"none\",\n },\n },\n },\n\n MuiSkeleton: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: theme.shape.borderRadius,\n }),\n },\n },\n\n MuiSelect: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: theme.shape.borderRadius,\n }),\n select: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n gap: \"4px\",\n },\n },\n },\n\n MuiDialog: {\n defaultProps: {\n slotProps: {\n paper: {\n style: {\n padding: \"12px\",\n borderRadius: 24, // оставить явно, если это критично\n minWidth: \"400px\",\n },\n },\n },\n },\n styleOverrides: {\n root: {\n \"& .MuiDialog-container\": {\n backdropFilter: \"blur(4px)\",\n },\n },\n },\n },\n\n MuiAvatar: {\n styleOverrides: {\n root: {\n fontWeight: 500,\n },\n },\n },\n\n MuiAlert: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: theme.shape.borderRadius,\n }),\n },\n },\n\n MuiTextField: {\n defaultProps: {\n variant: \"outlined\", // по умолчанию, если нужно\n },\n styleOverrides: {\n root: ({ theme }) => ({\n \"& .MuiInputBase-root\": {\n borderRadius: theme.shape.borderRadius,\n },\n }),\n },\n },\n\n MuiOutlinedInput: {\n styleOverrides: {\n root: ({ theme }) => {\n const tokens = getSurfaceTokens(theme);\n return {\n color: tokens.textPrimary,\n \"& fieldset\": {\n borderColor: alpha(tokens.textPrimary, 0.16),\n },\n \"&:hover fieldset\": {\n borderColor: alpha(tokens.textPrimary, 0.28),\n },\n \"&.Mui-focused fieldset\": {\n borderColor: theme.palette.primary.main,\n },\n };\n },\n },\n },\n\n MuiInputLabel: {\n styleOverrides: {\n root: ({ theme }) => ({\n color: alpha(theme.palette.text.primary, 0.72),\n \"&.Mui-focused\": {\n color: theme.palette.primary.main,\n },\n }),\n },\n },\n MuiFormHelperText: {\n styleOverrides: {\n root: ({ theme }) => ({\n color: theme.palette.text.secondary,\n \"&.Mui-error\": {\n color: theme.palette.error.main,\n },\n }),\n },\n },\n\n MuiPaper: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: theme.shape.borderRadius,\n }),\n elevation8: ({ theme }) => ({\n borderRadius: theme.shape.borderRadius,\n }),\n },\n },\n\n MuiMenuItem: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: theme.shape.borderRadius,\n }),\n },\n },\n\n MuiBottomNavigationAction: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: theme.shape.borderRadius,\n padding: \"12px\",\n margin: 0,\n maxHeight: \"none\",\n }),\n },\n },\n\n MuiDialogContent: {\n styleOverrides: {\n root: {\n padding: 0,\n },\n },\n },\n\n MuiSlider: {\n styleOverrides: {\n valueLabel: ({ theme }) => ({\n borderRadius: theme.shape.borderRadius,\n padding: \"6px 14px\",\n \"&::before, &::after\": {\n display: \"none\",\n },\n }),\n },\n },\n\n MuiCircularProgress: {\n styleOverrides: {\n circle: {\n strokeLinecap: \"round\",\n },\n },\n },\n\n MuiTab: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: theme.shape.borderRadius,\n }),\n },\n },\n\n MuiAccordion: {\n styleOverrides: {\n root: {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n },\n};\n","import { alpha } from \"@mui/material/styles\";\n\nimport type { Theme } from \"@mui/material/styles\";\n\ntype ThemeWithPalette = Pick<Theme, \"palette\">;\n\nexport interface SurfaceTokens {\n pageBg: string;\n surfaceBg: string;\n textPrimary: string;\n textSecondary: string;\n divider: string;\n}\n\nexport const getSurfaceTokens = (theme: ThemeWithPalette): SurfaceTokens => ({\n pageBg: theme.palette.background.default,\n surfaceBg: theme.palette.background.paper,\n textPrimary: theme.palette.text.primary,\n textSecondary: theme.palette.text.secondary,\n divider: theme.palette.divider,\n});\n\nexport const alphaText = (theme: ThemeWithPalette, opacity: number): string =>\n alpha(theme.palette.text.primary, opacity);\n","import { createTheme } from \"@mui/material/styles\";\n\nimport type { ThemeModeBackground } from \"@/models\";\nimport type { PaletteMode, Theme, ThemeOptions } from \"@mui/material/styles\";\n\ntype ThemeInput = ThemeOptions & {\n background?: ThemeModeBackground;\n};\n\nexport const buildMuiTheme = (\n options: ThemeInput,\n mode: PaletteMode,\n): Theme => {\n const { background, palette, ...rest } = options;\n const resolvedBackground = background?.[mode];\n\n const paletteWithMode: ThemeOptions[\"palette\"] = {\n ...palette,\n mode,\n };\n\n if (resolvedBackground || palette?.background) {\n paletteWithMode.background = {\n ...palette?.background,\n ...resolvedBackground,\n };\n }\n\n return createTheme({\n ...rest,\n palette: paletteWithMode,\n });\n};\n","import { useEffect, useState } from \"react\";\n\nimport { canUseDom } from \"@/utils/ssr\";\n\n/**\n * A custom React hook to determine if the current device is a smaller device\n * based on the screen width.\n * @param [breakpoint=768] - The breakpoint in pixels at which a device is considered \"smaller\".\n * @returns {boolean} - A boolean value indicating whether the current device is a smaller device.\n */\nexport const useResponsiveDisplay = (breakpoint = 768): boolean => {\n const [isSmallerDevice, setIsSmallerDevice] = useState<boolean>(false);\n\n useEffect(() => {\n if (!canUseDom()) return () => {};\n const checkScreenSize = () => {\n setIsSmallerDevice(window.innerWidth < breakpoint);\n };\n checkScreenSize();\n const handleResize = () => checkScreenSize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [breakpoint]);\n\n return isSmallerDevice;\n};\n","import { useSyncExternalStore } from \"react\";\n\nimport { canUseDom } from \"@/utils/ssr\";\n\nimport type { SystemTheme } from \"@/models\";\n\nconst getSnapshot = (): SystemTheme => {\n if (!canUseDom() || typeof globalThis.matchMedia !== \"function\") {\n return \"unknown\";\n }\n\n return globalThis.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n};\n\nconst getServerSnapshot = (): SystemTheme => \"unknown\";\n\nconst subscribe = (onStoreChange: () => void): (() => void) => {\n if (!canUseDom() || typeof globalThis.matchMedia !== \"function\") {\n return () => {};\n }\n\n const prefersDarkScheme = globalThis.matchMedia(\n \"(prefers-color-scheme: dark)\",\n );\n\n if (typeof prefersDarkScheme.addEventListener !== \"function\") {\n return () => {};\n }\n\n const onChange = () => {\n onStoreChange();\n };\n\n prefersDarkScheme.addEventListener(\"change\", onChange);\n return () => {\n prefersDarkScheme.removeEventListener(\"change\", onChange);\n };\n};\n\n/**\n * A React hook to detect the system theme preference.\n * @returns The current system theme ('light', 'dark', or 'unknown').\n */\nexport const useSystemTheme = (): SystemTheme =>\n useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n","/**\n * Validates whether a given string is a valid 3- or 6-digit hex color code (e.g., \"#fff\" or \"#ffffff\").\n *\n * @param value - The string to check.\n * @returns `true` if the string is a valid hex color; otherwise, `false`.\n */\nexport const isHexColor = (value: string): boolean =>\n /^#([\\dA-Fa-f]{3}|[\\dA-Fa-f]{6})$/.test(value);\n","/**\n * Returns a greeting based on the current time.\n * @returns {string} The appropriate greeting.\n */\nexport const displayGreeting = (): string => {\n const currentHour = new Date().getHours();\n if (currentHour >= 5 && currentHour < 12) return \"Good morning\";\n if (currentHour > 12 && currentHour < 18) return \"Good afternoon\";\n return \"Good evening\";\n};\n","/**\n * Function to extract year, month, and day from a Date object\n */\nexport const getDayIdentifier = (date: Date) => {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\"); // Months are zero-based in JavaScript\n const day = String(date.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n};\n","/**\n * A list of supported operating systems.\n */\nexport type OperatingSystem =\n | \"Windows\"\n | \"macOS\"\n | \"Linux\"\n | \"iOS\"\n | \"Android\"\n | \"Unknown\";\n\n/**\n * A list of supported browsers.\n */\nexport type Browser = \"Chrome\" | \"Firefox\" | \"Safari\" | \"Edge\" | \"Unknown\";\n\n/**\n * Detects the user's operating system based on the user agent string.\n * Safe for SSR: falls back to \"Unknown\" on server.\n */\nexport const getOperatingSystem = (): OperatingSystem => {\n const ua = (\n typeof navigator === \"undefined\" ? \"\" : navigator.userAgent\n ).toLowerCase();\n\n if (ua.includes(\"windows nt\")) return \"Windows\";\n if (ua.includes(\"iphone\") || ua.includes(\"ipad\") || ua.includes(\"ipod\"))\n return \"iOS\";\n if (ua.includes(\"mac\")) return \"macOS\";\n if (ua.includes(\"android\")) return \"Android\";\n if (ua.includes(\"linux\")) return \"Linux\";\n\n return \"Unknown\";\n};\n\n/**\n * Detects the user's browser based on the user agent string.\n * Safe for SSR: falls back to \"Unknown\" on server.\n */\nexport const getBrowser = (): Browser => {\n const ua = (\n typeof navigator === \"undefined\" ? \"\" : navigator.userAgent\n ).toLowerCase();\n\n // Order matters: Edge must come before Chrome\n if (ua.includes(\"edg\")) return \"Edge\";\n if (ua.includes(\"chrome\")) return \"Chrome\";\n if (ua.includes(\"firefox\")) return \"Firefox\";\n if (ua.includes(\"safari\")) return \"Safari\";\n\n return \"Unknown\";\n};\n\n/**\n * Basic information about the user's system (OS and browser).\n * Safe for SSR: resolves to Unknown values on server.\n */\nexport const systemInfo = {\n os:\n typeof navigator === \"undefined\"\n ? (\"Unknown\" as OperatingSystem)\n : getOperatingSystem(),\n browser:\n typeof navigator === \"undefined\" ? (\"Unknown\" as Browser) : getBrowser(),\n};\n","import type { AppSettings, SystemTheme } from \"@/models\";\n\n/**\n * Determines whether dark mode should be enabled based on user settings and system conditions.\n *\n * @param darkMode - User preference: 'light' | 'dark' | 'system' | 'auto'.\n * @param systemTheme - Detected OS-level theme: 'light' | 'dark'.\n * @returns True if dark mode should be used.\n */\nexport const isDarkMode = (\n darkMode: AppSettings[\"darkMode\"],\n systemTheme: SystemTheme,\n): boolean => {\n switch (darkMode) {\n case \"light\": {\n return false;\n }\n case \"dark\": {\n return true;\n }\n case \"system\":\n case \"auto\": {\n return systemTheme === \"dark\";\n }\n default: {\n return false;\n }\n }\n};\n","/**\n * Converts a given date to a human-readable relative time string.\n *\n * @param {Date} date - The date to be converted.\n * @param lang\n * @returns {string} A string representing the relative time using `Intl` format (e.g., \"2 days ago\").\n */\nexport const timeAgo = (date: Date, lang?: string): string => {\n const locale =\n lang ?? (typeof navigator === \"undefined\" ? \"en-US\" : navigator.language);\n // Get the current date and time\n const now = new Date();\n date = new Date(date);\n // Calculate the time difference in seconds\n const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n // Create an Intl.RelativeTimeFormat instance with the user's language\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: \"auto\" });\n\n // Determine the appropriate unit and format the result\n if (diffInSeconds < 60) {\n return rtf.format(-diffInSeconds, \"second\");\n }\n if (diffInSeconds < 3600) {\n const minutes = Math.floor(diffInSeconds / 60);\n return rtf.format(-minutes, \"minute\");\n }\n if (diffInSeconds < 86_400) {\n const hours = Math.floor(diffInSeconds / 3600);\n return rtf.format(-hours, \"hour\");\n }\n const days = Math.floor(diffInSeconds / 86_400);\n return rtf.format(-days, \"day\");\n};\n\nexport const timeAgoFromStart = (date: Date, lang?: string): string => {\n const locale =\n lang ?? (typeof navigator === \"undefined\" ? \"en-US\" : navigator.language);\n const now = new Date();\n date = new Date(date);\n const difference = (date.getTime() - now.getTime()) / 1000;\n const differenceHours = Math.floor(difference / (60 * 60));\n const differenceMinutes = Math.floor(\n (difference - 60 * 60 * differenceHours) / 60,\n );\n const diffInSeconds = Math.floor(\n difference - 60 * 60 * differenceHours - 60 * differenceMinutes,\n );\n\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: \"auto\" });\n\n if (differenceMinutes === 0 && diffInSeconds < 60) {\n return rtf.format(diffInSeconds, \"second\");\n }\n if (differenceHours === 0 && differenceMinutes < 60) {\n return rtf.format(differenceMinutes, \"minute\");\n }\n if (differenceHours < 24) {\n const hours = `${new Intl.RelativeTimeFormat(locale, {\n numeric: \"auto\",\n }).format(differenceHours, \"hour\")}`;\n const minutes = ` ${new Intl.RelativeTimeFormat(locale, {\n localeMatcher: \"lookup\",\n numeric: \"always\",\n style: \"long\",\n }).format(differenceMinutes, \"minute\")}`.replace(/^\\D+/, \"\");\n return `${hours} ${minutes}`;\n }\n\n const days = Math.floor(diffInSeconds / 86_400);\n return rtf.format(days, \"day\");\n};\n","import { isDarkMode } from \"@/utils\";\n\nimport type { DarkModeOptions, SystemTheme } from \"@/models\";\nimport type { PaletteMode } from \"@mui/material/styles\";\n\nexport const resolveEffectiveMode = (\n darkMode: DarkModeOptions,\n systemTheme: SystemTheme,\n): PaletteMode => (isDarkMode(darkMode, systemTheme) ? \"dark\" : \"light\");\n","import type { NormalizedPreset } from \"@/models/themePresets\";\nimport type { PaletteMode, ThemeOptions } from \"@mui/material/styles\";\n\nexport const selectThemeOptions = (\n preset: NormalizedPreset,\n mode: PaletteMode,\n): ThemeOptions => preset.colorSchemes[mode] ?? preset.colorSchemes.light;\n","import type {\n Components,\n Theme,\n TypographyVariantsOptions,\n} from \"@mui/material\";\n\nconst BASE_FONT_SIZE = 16;\nconst pxToRem = (px: number) => `${px / BASE_FONT_SIZE}rem`;\n\n/**\n * Mapping of custom typography variants to corresponding HTML elements.\n */\nexport const muiTypography: Components<Theme>[\"MuiTypography\"] = {\n defaultProps: {\n variantMapping: {\n // TEXT REGULAR\n text_xl_regular: \"p\",\n text_lg_regular: \"p\",\n text_md_regular: \"p\",\n text_sm_regular: \"p\",\n text_xs_regular: \"p\",\n text_2xs_regular: \"p\",\n\n // TEXT BOLD\n text_xl_bold: \"p\",\n text_lg_bold: \"p\",\n text_md_bold: \"p\",\n text_sm_bold: \"p\",\n text_xs_bold: \"p\",\n text_2xs_bold: \"p\",\n\n // TEXT SEMIBOLD\n text_xl_semibold: \"p\",\n text_lg_semibold: \"p\",\n text_md_semibold: \"p\",\n text_sm_semibold: \"p\",\n text_xs_semibold: \"p\",\n text_2xs_semibold: \"p\",\n\n // TEXT THIN\n text_xl_thin: \"p\",\n text_lg_thin: \"p\",\n text_md_thin: \"p\",\n text_sm_thin: \"p\",\n text_xs_thin: \"p\",\n text_2xs_thin: \"p\",\n\n // HEADER REGULAR\n header_2xl_regular: \"h1\",\n header_xl_regular: \"h2\",\n header_lg_regular: \"h3\",\n header_md_regular: \"h4\",\n header_sm_regular: \"h5\",\n header_xs_regular: \"h6\",\n\n // DISPLAY BOLD\n header_2xl_bold: \"h1\",\n header_xl_bold: \"h2\",\n header_lg_bold: \"h3\",\n header_md_bold: \"h4\",\n header_sm_bold: \"h5\",\n header_xs_bold: \"h6\",\n\n // HEADER SEMIBOLD\n header_2xl_semibold: \"h1\",\n header_xl_semibold: \"h2\",\n header_lg_semibold: \"h3\",\n header_md_semibold: \"h4\",\n header_sm_semibold: \"h5\",\n header_xs_semibold: \"h6\",\n },\n },\n};\n\n/**\n * Custom typography variant definitions with adjusted display sizes.\n */\nexport const typographyVariants: TypographyVariantsOptions = {\n text_xl_regular: {\n fontWeight: 400,\n fontSize: pxToRem(20),\n lineHeight: pxToRem(30),\n },\n text_lg_regular: {\n fontWeight: 400,\n fontSize: pxToRem(18),\n lineHeight: pxToRem(28),\n },\n text_md_regular: {\n fontWeight: 400,\n fontSize: pxToRem(16),\n lineHeight: pxToRem(24),\n },\n text_sm_regular: {\n fontWeight: 400,\n fontSize: pxToRem(14),\n lineHeight: pxToRem(20),\n },\n text_xs_regular: {\n fontWeight: 400,\n fontSize: pxToRem(12),\n lineHeight: pxToRem(18),\n },\n text_2xs_regular: {\n fontWeight: 400,\n fontSize: pxToRem(10),\n lineHeight: pxToRem(14),\n },\n\n text_xl_bold: {\n fontWeight: 700,\n fontSize: pxToRem(20),\n lineHeight: pxToRem(30),\n },\n text_lg_bold: {\n fontWeight: 700,\n fontSize: pxToRem(18),\n lineHeight: pxToRem(28),\n },\n text_md_bold: {\n fontWeight: 700,\n fontSize: pxToRem(16),\n lineHeight: pxToRem(24),\n },\n text_sm_bold: {\n fontWeight: 700,\n fontSize: pxToRem(14),\n lineHeight: pxToRem(20),\n },\n text_xs_bold: {\n fontWeight: 700,\n fontSize: pxToRem(12),\n lineHeight: pxToRem(18),\n },\n text_2xs_bold: {\n fontWeight: 700,\n fontSize: pxToRem(10),\n lineHeight: pxToRem(14),\n },\n\n text_xl_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(20),\n lineHeight: pxToRem(30),\n },\n text_lg_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(18),\n lineHeight: pxToRem(28),\n },\n text_md_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(16),\n lineHeight: pxToRem(24),\n },\n text_sm_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(14),\n lineHeight: pxToRem(20),\n },\n text_xs_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(12),\n lineHeight: pxToRem(18),\n },\n text_2xs_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(10),\n lineHeight: pxToRem(14),\n },\n\n text_xl_thin: {\n fontWeight: 100,\n fontSize: pxToRem(20),\n lineHeight: pxToRem(30),\n },\n text_lg_thin: {\n fontWeight: 100,\n fontSize: pxToRem(18),\n lineHeight: pxToRem(28),\n },\n text_md_thin: {\n fontWeight: 100,\n fontSize: pxToRem(16),\n lineHeight: pxToRem(24),\n },\n text_sm_thin: {\n fontWeight: 100,\n fontSize: pxToRem(14),\n lineHeight: pxToRem(20),\n },\n text_xs_thin: {\n fontWeight: 100,\n fontSize: pxToRem(12),\n lineHeight: pxToRem(18),\n },\n text_2xs_thin: {\n fontWeight: 100,\n fontSize: pxToRem(10),\n lineHeight: pxToRem(14),\n },\n\n header_2xl_regular: {\n fontWeight: 400,\n fontSize: pxToRem(34),\n lineHeight: pxToRem(42),\n },\n header_xl_regular: {\n fontWeight: 400,\n fontSize: pxToRem(32),\n lineHeight: pxToRem(40),\n },\n header_lg_regular: {\n fontWeight: 400,\n fontSize: pxToRem(28),\n lineHeight: pxToRem(36),\n },\n header_md_regular: {\n fontWeight: 400,\n fontSize: pxToRem(24),\n lineHeight: pxToRem(32),\n },\n header_sm_regular: {\n fontWeight: 400,\n fontSize: pxToRem(20),\n lineHeight: pxToRem(28),\n },\n header_xs_regular: {\n fontWeight: 400,\n fontSize: pxToRem(18),\n lineHeight: pxToRem(26),\n },\n\n header_2xl_bold: {\n fontWeight: 700,\n fontSize: pxToRem(34),\n lineHeight: pxToRem(42),\n },\n header_xl_bold: {\n fontWeight: 700,\n fontSize: pxToRem(32),\n lineHeight: pxToRem(40),\n },\n header_lg_bold: {\n fontWeight: 700,\n fontSize: pxToRem(28),\n lineHeight: pxToRem(36),\n },\n header_md_bold: {\n fontWeight: 700,\n fontSize: pxToRem(24),\n lineHeight: pxToRem(32),\n },\n header_sm_bold: {\n fontWeight: 700,\n fontSize: pxToRem(20),\n lineHeight: pxToRem(28),\n },\n header_xs_bold: {\n fontWeight: 700,\n fontSize: pxToRem(18),\n lineHeight: pxToRem(26),\n },\n\n header_2xl_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(34),\n lineHeight: pxToRem(42),\n },\n header_xl_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(32),\n lineHeight: pxToRem(40),\n },\n header_lg_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(28),\n lineHeight: pxToRem(36),\n },\n header_md_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(24),\n lineHeight: pxToRem(32),\n },\n header_sm_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(20),\n lineHeight: pxToRem(28),\n },\n header_xs_semibold: {\n fontWeight: 600,\n fontSize: pxToRem(18),\n lineHeight: pxToRem(26),\n },\n};\n","import type { ThemeOptions } from \"@mui/material/styles\";\n\nexport const validateSchemeTokens = (options: ThemeOptions): string[] => {\n const warnings: string[] = [];\n const { palette } = options;\n if (!palette) {\n warnings.push(\"palette is missing.\");\n return warnings;\n }\n\n if (!palette.background?.default) {\n warnings.push(\"palette.background.default is missing.\");\n }\n if (!palette.background?.paper) {\n warnings.push(\"palette.background.paper is missing.\");\n }\n if (!palette.text?.primary) {\n warnings.push(\"palette.text.primary is missing.\");\n }\n if (!palette.text?.secondary) {\n warnings.push(\"palette.text.secondary is missing.\");\n }\n if (!palette.divider) {\n warnings.push(\"palette.divider is missing.\");\n }\n\n return warnings;\n};\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * Fade in from the left with slight movement on the X-axis.\n */\nexport const fadeInLeft = keyframes`\n from {\n opacity: 0;\n transform: translateX(-40px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n`;\n\n/**\n * Simple fade in animation (opacity only).\n */\nexport const fadeIn = keyframes`\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n`;\n\n/**\n * Slide in from the left side of the screen.\n */\nexport const slideIn = keyframes`\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n`;\n\n/**\n * Slide in from the bottom of the screen.\n */\nexport const slideInBottom = keyframes`\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n`;\n\n/**\n * Scale from 0 to full size.\n */\nexport const scale = keyframes`\n from {\n transform: scale(0);\n }\n to {\n transform: scale(1);\n }\n`;\n\n/**\n * Creates a pulsating animation using scale and box-shadow.\n * Simulates a glowing effect.\n *\n * @param clr - The base color for the shadow in hex format.\n * @param shadowBlur - The maximum spread of the shadow during the pulse (default: 12).\n * @returns Emotion keyframes animation.\n */\nexport const pulseAnimation = (clr: string, shadowBlur = 12) => keyframes`\n 0% {\n transform: scale(0.95);\n box-shadow: 0 0 0 0 ${clr}b2;\n }\n 70% {\n transform: scale(1);\n box-shadow: 0 0 0 ${shadowBlur}px ${clr}00;\n }\n 100% {\n transform: scale(0.95);\n box-shadow: 0 0 0 0 ${clr}00;\n }\n`;\n\n/**\n * Creates a glowing pulse animation using drop-shadow.\n * Used in progress or highlight elements.\n *\n * @param clr - The glow color in hex.\n * @returns Emotion keyframes animation.\n */\nexport const progressPulse = (clr: string) => keyframes`\n 0% {\n filter: none;\n }\n 50% {\n filter: drop-shadow(0 0 10px ${clr}78);\n }\n 100% {\n filter: none;\n }\n`;\n\n/**\n * A bounce-scale animation used during logout transition.\n */\nexport const logoutAnimation = keyframes`\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(0.9) translateX(-2px);\n opacity: 0.7;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n`;\n\n/**\n * Subtle bounce animation used for install app prompts.\n */\nexport const installAppAnimation = keyframes`\n 0% {\n transform: translateY(0);\n }\n 30% {\n transform: translateY(-5px);\n }\n 50% {\n transform: translateY(2px);\n }\n 70% {\n transform: translateY(-2px);\n }\n 100% {\n transform: translateY(0);\n }\n`;\n"],"mappings":"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","names":["index_exports","__export","APP_SETTINGS_VERSION","DialogBtn","ErrorBoundary","GlobalStyles","Loading","PathName","ThemeProviderWrapper","alphaText","buildMuiTheme","canUseDom","commonComponentProps","darkModeOptions","displayGreeting","editorialClassic","fadeIn","fadeInLeft","getBrowser","getDayIdentifier","getOperatingSystem","getSurfaceTokens","installAppAnimation","isDarkMode","isHexColor","logoutAnimation","mergeThemes","modernMinimal","muiTypography","neoGlass","normalizeThemes","progressPulse","pulseAnimation","readAppSettings","resolveDefaultThemeName","resolveEffectiveMode","resolveThemeById","retroTerminal","scale","selectThemeOptions","slideIn","slideInBottom","systemInfo","timeAgo","timeAgoFromStart","typographyVariants","useResponsiveDisplay","useSystemTheme","useThemeSettings","validateSchemeTokens","warmEarth","writeAppSettings","__toCommonJS","import_styled","import_material","DialogBtn","styled","import_react","import_styled","import_ErrorOutlineRounded","import_material","import_jsx_runtime","ErrorBoundary","React","props","error","errorInfo","_a","_b","_c","state","Container","ErrorHeader","ErrorOutlineRounded","styled","import_react","import_styled","import_material","import_jsx_runtime","Loading","showLoading","setShowLoading","timer","Container","styled","import_styled","PathName","styled","import_styles","FONT_EDITORIAL","editorialClassic","theme","editorialClassicDark","import_styles","FONT_MINIMAL","MINIMAL_RADIUS","MINIMAL_TYPOGRAPHY","createMinimalComponents","appBarAlpha","borderAlpha","surfaceShadowAlpha","tableHeadAlpha","theme","modernMinimal","modernMinimalDark","import_styles","FONT_LIQUID","LIQUID_RADIUS","LIQUID_BLUR","LIQUID_BLUR_STRONG","LIQUID_TYPOGRAPHY","createLiquidGlassComponents","bodyPrimaryGlowAlpha","bodySecondaryGlowAlpha","bodyTertiaryGlowAlpha","paperAlpha","borderAlpha","shadowAlpha","isDark","theme","neoGlass","neoGlassDark","import_styles","FONT_MONO","TERMINAL_TYPOGRAPHY","createTerminalComponents","scanlineAlpha","surfaceBorderAlpha","panelGlowAlpha","theme","retroTerminal","retroTerminalDark","import_styles","FONT_WARM","TERRACOTTA","TERRACOTTA_DARK","TERRACOTTA_LIGHT","OLIVE","OLIVE_DARK","OLIVE_LIGHT","INK","SOFT_RADIUS","WARM_TYPOGRAPHY","createWarmEarthComponents","bodyGlowPrimary","bodyGlowSecondary","surfaceBorderAlpha","panelShadowAlpha","appBarAlpha","theme","warmEarth","warmEarthDark","import_BrightnessAutoRounded","import_DarkModeRounded","import_LightModeRounded","import_PersonalVideoRounded","import_jsx_runtime","OPTION_ICON_SIZE","darkModeOptions","BrightnessAutoRoundedIcon","PersonalVideoRoundedIcon","LightModeRoundedIcon","DarkModeRoundedIcon","import_react","import_styles","import_react","ThemeContext","useThemeSettings","context","DEFAULT_PRESET_ID","isRecord","value","normalizeId","id","normalized","normalizeLabel","label","fallback","isThemePreset","colorSchemes","normalizePresetLike","input","index","light","dark","dedupePresets","presets","firstIndex","lastPreset","preset","orderedIds","deduped","createDefaultPreset","normalizeThemesInput","item","DEFAULT_THEME_NAME","presetToTheme","preset","normalizeThemes","input","presets","normalizeThemesInput","mergeThemes","customThemes","merged","resolveDefaultThemeName","themes","_a","_b","resolveThemeName","themeName","theme","resolveThemeById","themeId","resolveDarkMode","darkMode","defaultMode","import_react","canUseDom","APP_SETTINGS_KEY","APP_SETTINGS_VERSION","DARK_MODE_OPTIONS","isDarkModeOption","value","readAppSettings","canUseDom","storedRaw","parsed","darkMode","themeId","legacyTheme","writeAppSettings","settings","e","APP_SETTINGS_CHANGE_EVENT","getSettingsSnapshot","stored","readAppSettings","themeId","darkMode","getServerSnapshot","subscribe","onStoreChange","canUseDom","onChange","notify","usePersistedAppSettings","themes","defaultDarkMode","presetsSource","normalizeThemesInput","themesSource","preset","settingsSnapshot","storedThemeId","storedDarkMode","theme","resolveThemeName","resolveDarkMode","selectedPreset","selectedTheme","t","nextTheme","resolvedThemeId","writeAppSettings","APP_SETTINGS_VERSION","mode","import_react","import_styles","import_jsx_runtime","GlobalStyles","fontFamily","theme","isDarkMode","primaryColor","textColor","backgroundDefault","backgroundPaper","scrollbarThumb","scrollbarThumbHover","import_styles","import_styles","getSurfaceTokens","theme","alphaText","opacity","commonComponentProps","theme","tokens","getSurfaceTokens","import_styles","buildMuiTheme","options","mode","background","palette","rest","resolvedBackground","paletteWithMode","import_react","useResponsiveDisplay","breakpoint","isSmallerDevice","setIsSmallerDevice","canUseDom","checkScreenSize","handleResize","import_react","getSnapshot","canUseDom","getServerSnapshot","subscribe","onStoreChange","prefersDarkScheme","onChange","useSystemTheme","isHexColor","value","displayGreeting","currentHour","getDayIdentifier","date","year","month","day","getOperatingSystem","ua","getBrowser","systemInfo","isDarkMode","darkMode","systemTheme","timeAgo","date","lang","locale","now","diffInSeconds","rtf","minutes","hours","days","timeAgoFromStart","difference","differenceHours","differenceMinutes","resolveEffectiveMode","darkMode","systemTheme","isDarkMode","selectThemeOptions","preset","mode","_a","pxToRem","px","muiTypography","typographyVariants","validateSchemeTokens","options","_a","_b","_c","_d","warnings","palette","import_react","fadeInLeft","fadeIn","slideIn","slideInBottom","scale","pulseAnimation","clr","shadowBlur","progressPulse","logoutAnimation","installAppAnimation","import_jsx_runtime","ThemeProviderWrapper","children","fontFamily","themes","darkModeProp","systemTheme","useSystemTheme","theme","setTheme","persistedDarkMode","setPersistedDarkMode","themesSource","selectedTheme","selectedPreset","usePersistedAppSettings","darkMode","setDarkMode","effectiveMode","resolveEffectiveMode","selectedOptions","selectThemeOptions","muiTheme","buildMuiTheme","defaultThemeName","resolveDefaultThemeName","ThemeContext","MuiThemeProvider","GlobalStyles"]}
|