@octoguide/mui-ui-toolkit 0.7.0 → 0.7.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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/ThemeProvider.tsx","../src/themes/defaultTheme.ts","../src/themes/mergeTheme.ts","../src/themes/theme1/index.ts","../src/themes/theme2/index.ts","../src/themes/cps/index.ts","../src/themes/registry.ts","../src/themes/config.ts","../src/themes/createMuiTheme.ts","../src/components/ABNInput/ABNInput.tsx","../src/components/TextField/TextField.tsx","../src/utils/getCleanProps.ts","../src/utils/formatABN.ts","../src/components/Button/Button.tsx","../src/components/Chip/Chip.tsx","../src/components/Card/Card.tsx","../src/components/Alert/Alert.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Avatar/Avatar.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/DatePicker/DatePicker.tsx","../src/foundation/Grid/Grid.tsx","../src/components/IconText/IconText.tsx","../src/components/IconText/IconText.styles.tsx","../src/components/InternalLinkItem/InternalLinkItem.tsx","../src/components/InternalLinkItem/InternalLinkItem.styles.tsx","../src/components/Link/Link.tsx","../src/components/Link/Link.styles.tsx","../src/components/LogoLink/LogoLink.tsx","../src/components/LogoLink/LogoLink.styles.tsx","../src/components/PageSpinner/PageSpinner.tsx","../src/utils/backgroundScrollTether.ts","../src/utils/tabTrap.ts","../src/utils/a11yAnnouncer.ts","../src/components/PageSpinner/PageSpinner.styles.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/Pagination.styles.tsx","../src/components/Paragraph/Paragraph.tsx","../src/components/Paragraph/Paragraph.styles.tsx","../src/components/Password/Password.tsx","../src/components/Password/PasswordRule.tsx","../src/components/Password/PasswordRule.styles.tsx","../src/components/Password/PasswordCriteria.styles.tsx","../src/components/Password/PasswordCriteria.tsx","../src/components/Password/Password.styles.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Spinner/Spinner.styles.tsx","../src/components/Toggle/Toggle.tsx","../src/components/Toggle/Toggle.styles.tsx","../src/components/Table/Table.tsx","../src/foundation/H1/H1.tsx","../src/foundation/H2/H2.tsx","../src/foundation/H3/H3.tsx","../src/foundation/H4/H4.tsx","../src/foundation/H5/H5.tsx","../src/foundation/H6/H6.tsx","../src/foundation/Subtitle1/Subtitle1.tsx","../src/foundation/Subtitle2/Subtitle2.tsx","../src/foundation/Body1/Body1.tsx","../src/foundation/Body2/Body2.tsx","../src/foundation/Caption/Caption.tsx","../src/foundation/Overline/Overline.tsx","../src/foundation/TypographyButton/TypographyButton.tsx"],"sourcesContent":["// ─── Theme Provider ────────────────────────────────────────────────────────────\nexport { ToolkitThemeProvider } from './ThemeProvider';\n\n// ─── Theme Utilities ───────────────────────────────────────────────────────────\nexport { getThemeTokens, themeRegistry } from './themes/registry';\nexport type { ThemeName } from './themes/registry';\nexport { createMuiTheme } from './themes/createMuiTheme';\nexport { resolveThemeName } from './themes/config';\n\n// ─── Token Types ───────────────────────────────────────────────────────────────\nexport type {\n ThemeTokens,\n ColorTokens,\n TypographyTokens,\n SpacingTokens,\n BorderRadiusTokens,\n ShadowTokens,\n TransitionTokens,\n ZIndexTokens,\n ComponentTokens,\n} from './themes/tokens';\n\n// ─── Components ────────────────────────────────────────────────────────────────\nexport { ABNInput } from './components/ABNInput';\nexport type { ABNInputProps } from './components/ABNInput';\n\nexport { Button } from './components/Button';\nexport type { ButtonProps } from './components/Button';\n\nexport { Chip } from './components/Chip';\nexport type { ChipProps } from './components/Chip';\n\nexport { Card, CardContent, CardHeader, CardActions } from './components/Card';\nexport type { CardProps, CardHeaderProps, CardActionsProps } from './components/Card';\n\nexport { TextField } from './components/TextField';\nexport type { TextFieldProps } from './components/TextField';\n\nexport { Alert, AlertTitle } from './components/Alert';\nexport type { AlertProps, AlertTitleProps } from './components/Alert';\n\nexport { Accordion, AccordionSummary, AccordionDetails, StandaloneAccordion } from './components/Accordion';\nexport type { AccordionProps, AccordionSummaryProps, AccordionDetailsProps } from './components/Accordion';\n\nexport { Avatar, AvatarGroup } from './components/Avatar';\nexport type { AvatarProps, AvatarGroupProps, AvatarSize } from './components/Avatar';\n\nexport { ToggleButton, ToggleButtonGroup } from './components/ToggleButton';\nexport type { ToggleButtonProps, ToggleButtonGroupProps } from './components/ToggleButton';\n\nexport {\n DateLocalizationProvider,\n DatePicker,\n DesktopDatePicker,\n MobileDatePicker,\n DateField,\n StaticDatePicker,\n TimePicker,\n DesktopTimePicker,\n MobileTimePicker,\n TimeField,\n StaticTimePicker,\n DateTimePicker,\n DesktopDateTimePicker,\n MobileDateTimePicker,\n DateTimeField,\n StaticDateTimePicker,\n DateCalendar,\n DateRangePickerInput,\n DateRangePickerCalendar,\n} from './components/DatePicker';\nexport type {\n DateLocalizationProviderProps,\n DatePickerProps,\n DesktopDatePickerProps,\n MobileDatePickerProps,\n DateFieldProps,\n StaticDatePickerProps,\n TimePickerProps,\n DesktopTimePickerProps,\n MobileTimePickerProps,\n TimeFieldProps,\n StaticTimePickerProps,\n DateTimePickerProps,\n DesktopDateTimePickerProps,\n MobileDateTimePickerProps,\n DateTimeFieldProps,\n StaticDateTimePickerProps,\n DateCalendarProps,\n DateRangeValue,\n DateRangePickerInputProps,\n DateRangePickerCalendarProps,\n} from './components/DatePicker';\n\nexport { Grid } from './foundation/Grid';\nexport type { GridProps } from './foundation/Grid';\n\nexport { IconText } from './components/IconText';\nexport type { IconTextProps, IconTextSymbol } from './components/IconText';\n\nexport { InternalLinkItem } from './components/InternalLinkItem';\nexport type { InternalLinkItemProps } from './components/InternalLinkItem';\n\nexport { Link, Variant } from './components/Link';\nexport type { LinkProps } from './components/Link';\n\nexport { LogoLink } from './components/LogoLink';\nexport type { LogoLinkProps } from './components/LogoLink';\n\nexport { PageSpinner } from './components/PageSpinner';\nexport type { PageSpinnerProps } from './components/PageSpinner';\n\nexport { Pagination } from './components/Pagination';\nexport type { PaginationProps, PaginationVariant, PaginationShape, PaginationColor } from './components/Pagination';\n\n\nexport { Paragraph } from './components/Paragraph';\nexport type { ParagraphProps } from './components/Paragraph';\n\nexport { Password, PasswordCriteria, PasswordRule, PasswordRules, passwordValidator } from './components/Password';\nexport type { PasswordProps, PasswordCriteriaProps, PasswordRuleProps } from './components/Password';\n\nexport { Spinner } from './components/Spinner';\nexport type { SpinnerProps, SpinnerSize } from './components/Spinner';\n\nexport { Toggle } from './components/Toggle';\nexport type { ToggleProps } from './components/Toggle';\n\nexport {\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n TableHeadCell,\n TableContainer,\n TablePagination,\n TableSortLabel,\n} from './components/Table';\nexport type {\n TableProps,\n TableHeadProps,\n TableBodyProps,\n TableRowProps,\n TableCellProps,\n TableContainerProps,\n TablePaginationProps,\n TableSortLabelProps,\n} from './components/Table';\n\n// ─── Foundation ────────────────────────────────────────────────────────────────\nexport { H1, H2, H3, H4, H5, H6, Subtitle1, Subtitle2, Body1, Body2, Caption, Overline, TypographyButton } from './foundation';\nexport type { H1Props, H2Props, H3Props, H4Props, H5Props, H6Props, Subtitle1Props, Subtitle2Props, Body1Props, Body2Props, CaptionProps, OverlineProps, TypographyButtonProps } from './foundation';\n","import React from 'react';\nimport { ThemeProvider as MuiThemeProvider, CssBaseline } from '@mui/material';\nimport { ThemeName, getThemeTokens } from './themes/registry';\nimport { resolveThemeName } from './themes/config';\nimport { createMuiTheme } from './themes/createMuiTheme';\n\ninterface ToolkitThemeProviderProps {\n /**\n * Explicitly override which theme to use.\n *\n * If omitted, the theme is read from the environment variable\n * configured in your app's .env file (VITE_THEME, REACT_APP_THEME,\n * or NEXT_PUBLIC_THEME).\n *\n * Passing this prop is useful in tests, Storybook, or when you want\n * to let a user switch themes at runtime.\n */\n theme?: ThemeName;\n children: React.ReactNode;\n /**\n * Inject MUI's CssBaseline (recommended for normalizing browser styles).\n * Defaults to true.\n */\n injectCssBaseline?: boolean;\n}\n\n/**\n * Drop-in ThemeProvider for any app using the mui-ui-toolkit.\n *\n * Usage in your app root:\n *\n * // .env\n * VITE_THEME=theme2\n *\n * // main.tsx\n * import { ToolkitThemeProvider } from '@mui-ui-toolkit/core';\n *\n * <ToolkitThemeProvider>\n * <App />\n * </ToolkitThemeProvider>\n *\n * Or to override at runtime (e.g. user preference):\n *\n * <ToolkitThemeProvider theme=\"theme1\">\n * <App />\n * </ToolkitThemeProvider>\n */\nexport function ToolkitThemeProvider({\n theme,\n children,\n injectCssBaseline = true,\n}: ToolkitThemeProviderProps) {\n const themeName = theme ?? resolveThemeName();\n const tokens = getThemeTokens(themeName);\n const muiTheme = createMuiTheme(tokens);\n\n return (\n <MuiThemeProvider theme={muiTheme}>\n {injectCssBaseline && <CssBaseline />}\n {children}\n </MuiThemeProvider>\n );\n}\n","import { ThemeTokens } from './tokens';\n\n/**\n * Default theme — the baseline every theme builds on.\n *\n * Contains all values that are shared across themes (spacing, zIndex,\n * component sizes/paddings, etc.) plus neutral placeholder values for\n * brand-specific tokens (colors, shadows, typography fonts).\n *\n * Themes only need to override what differs from these defaults.\n */\nconst defaultTheme: ThemeTokens = {\n colors: {\n primary: '#BE0D00',\n primaryDark: '#003c8f',\n primaryLight: '#5e92f3',\n primaryContrast: '#ffffff',\n\n secondary: '#c95109',\n secondaryDark: '#38006b',\n secondaryLight: '#9c4dcc',\n secondaryContrast: '#ffffff',\n\n success: '#1A6D29',\n warning: '#E6920A',\n error: '#990000',\n info: '#0288D1',\n\n background: '#F5F7FA',\n backgroundPaper: '#ffffff',\n backgroundSubtle: '#EEF2F7',\n\n textPrimary: '#1A2340',\n textSecondary: '#546080',\n textDisabled: '#A0AABF',\n\n divider: '#DDE3EE',\n border: '#C5CFE0',\n borderFocus: '#1565C0',\n\n overlayLight: 'rgba(255, 255, 255, 0.8)',\n overlayDark: 'rgba(0, 0, 0, 0.12)',\n\n overlayLight60: 'rgba(255, 255, 255, 0.6)',\n overlayLight70: 'rgba(255, 255, 255, 0.7)',\n overlayLight75: 'rgba(255, 255, 255, 0.75)',\n overlayLight85: 'rgba(255, 255, 255, 0.85)',\n\n colorRed: '#FF5630',\n colorAmber: '#FFAB00',\n colorOrange: '#FF8B00',\n colorGreen: '#36B37E',\n colorBlue: '#0065FF',\n colorGrey: '#6B778C',\n },\n\n typography: {\n fontFamilyBase: '\"Source Sans Pro\", sans-serif',\n fontFamilyMono: '\"Inter\", \"Roboto\", \"Helvetica Neue\", Arial, sans-serif',\n\n // ── Sizes (identical across all themes) ──────────────────────────────\n fontSizeXs: '0.625rem', // 10px\n fontSizeSm: '0.75rem', // 12px\n fontSizeMd: '0.875rem', // 14px\n fontSizeLg: '1rem', // 16px\n fontSizeXl: '1.125rem', // 18px\n fontSize2xl: '1.375rem', // 22px\n fontSize3xl: '1.75rem', // 28px\n fontSize4xl: '2.25rem', // 36px\n\n // ── Weights (identical across all themes) ─────────────────────────────\n fontWeightLight: 300,\n fontWeightRegular: 400,\n fontWeightMedium: 500,\n fontWeightSemiBold: 600,\n fontWeightBold: 700,\n\n lineHeightTight: 1.2,\n lineHeightBase: 1.5,\n lineHeightRelaxed: 1.75,\n\n letterSpacingTight: '-0.02em',\n letterSpacingBase: '0em',\n letterSpacingWide: '0.06em',\n },\n\n // ── Spacing (identical across all themes) ──────────────────────────────\n spacing: {\n unit: 8,\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n xxl: '48px',\n },\n\n borderRadius: {\n none: '0px',\n xs: '2px',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n full: '9999px',\n },\n\n shadows: {\n none: 'none',\n xs: '0 1px 2px rgba(0, 0, 0, 0.08)',\n sm: '0 2px 6px rgba(0, 0, 0, 0.10)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.14)',\n xl: '0 16px 48px rgba(0, 0, 0, 0.18)',\n },\n\n transitions: {\n durationFast: '120ms',\n durationBase: '200ms',\n durationSlow: '350ms',\n easingDefault: 'cubic-bezier(0.4, 0, 0.2, 1)',\n easingIn: 'cubic-bezier(0.4, 0, 1, 1)',\n easingOut: 'cubic-bezier(0, 0, 0.2, 1)',\n },\n\n // ── Z-index (identical across all themes) ──────────────────────────────\n zIndex: {\n base: 0,\n dropdown: 100,\n sticky: 200,\n overlay: 300,\n modal: 400,\n popover: 500,\n toast: 600,\n tooltip: 700,\n },\n\n components: {\n footer: {\n background: '#003c8f',\n textColor: 'rgba(255, 255, 255, 0.7)',\n linkColor: 'rgba(255, 255, 255, 0.7)',\n linkHoverColor: '#ffffff',\n },\n\n icon: {\n xs: '12px',\n sm: '16px',\n md: '20px',\n lg: '24px',\n xl: '28px',\n xxl: '32px',\n xxxl: '36px',\n display: '56px',\n },\n\n button: {\n // Sizes & paddings (identical across themes)\n paddingX: '12px',\n paddingY: '6px',\n paddingXSm: '8px',\n paddingYSm: '4px',\n paddingXLg: '16px',\n paddingYLg: '8px',\n paddingXXl: '16px',\n paddingYXl: '8px',\n fontSizeSm: '0.8125rem',\n fontSizeMd: '0.875rem',\n fontSizeLg: '0.9375rem',\n heightSm: '30px',\n heightMd: '36px',\n heightLg: '48px',\n heightXl: '56px',\n // Typography & style (identical across themes)\n borderWidth: '1.5px',\n fontWeight: 700,\n letterSpacing: '0em',\n textTransform: 'none',\n iconGap: '8px',\n // Brand-specific — overridden per theme\n borderRadius: '8px',\n minWidth: '200px'\n },\n\n input: {\n // Sizes & paddings (identical across themes)\n paddingX: '14px',\n paddingY: '10px',\n borderWidthFocus: '2px',\n background: '#ffffff',\n labelFontSize: '0.875rem',\n helperFontSize: '0.75rem',\n // Brand-specific — overridden per theme\n borderRadius: '8px',\n borderWidth: '1px',\n backgroundDisabled: '#F5F7FA',\n minHeight: '44px',\n },\n\n card: {\n // Layout (identical across themes)\n padding: '24px',\n paddingCompact: '16px',\n borderWidth: '1px',\n background: '#ffffff',\n // Brand-specific — overridden per theme\n borderRadius: '12px',\n },\n\n // ── Chip (identical across all themes) ───────────────────────────────\n chip: {\n height: '32px',\n heightSm: '24px',\n paddingX: '12px',\n borderRadius: '9999px',\n fontSize: '0.8125rem',\n fontWeight: 500,\n iconSize: '16px',\n },\n\n // ── Badge (identical across all themes) ──────────────────────────────\n badge: {\n height: '20px',\n minWidth: '20px',\n paddingX: '6px',\n borderRadius: '9999px',\n fontSize: '0.6875rem',\n fontWeight: 700,\n borderWidth: '2px',\n },\n\n tooltip: {\n paddingX: '10px',\n paddingY: '6px',\n fontSize: '0.75rem',\n maxWidth: '280px',\n color: '#ffffff',\n // Brand-specific — overridden per theme\n borderRadius: '6px',\n background: '#1A2340',\n },\n\n dialog: {\n // Layout (identical across themes)\n padding: '32px',\n maxWidth: '600px',\n background: '#ffffff',\n // Brand-specific — overridden per theme\n borderRadius: '16px',\n },\n\n table: {\n // Layout (identical across themes)\n cellPaddingX: '16px',\n headerFontWeight: 600,\n borderWidth: '1px',\n // Brand-specific — overridden per theme\n cellPaddingY: '12px',\n headerBackground: '#EEF2F7',\n rowHoverBackground: '#F5F7FA',\n borderColor: '#DDE3EE',\n },\n\n avatar: {\n // Sizes (identical across themes)\n sizeXs: '24px',\n sizeSm: '32px',\n sizeMd: '40px',\n sizeLg: '56px',\n sizeXl: '80px',\n sizeXxl: '128px',\n // Style (identical across themes)\n borderRadius: '50%',\n groupSpacing: '-8px',\n groupBorderWidth: '2px',\n // Brand-specific — overridden per theme\n borderRadiusRounded: '12px',\n },\n\n divider: {\n thickness: '1px',\n // Brand-specific — overridden per theme\n color: '#DDE3EE',\n },\n\n alert: {\n // Layout (identical across themes)\n padding: '6px 16px',\n // Brand-specific — overridden per theme\n borderRadius: '8px',\n },\n\n accordion: {\n // Layout (identical across themes)\n standaloneRadius: '16px',\n summaryPaddingX: '16px',\n summaryPaddingY: '16px',\n summaryFontWeight: 600,\n detailsPaddingX: '16px',\n detailsPaddingBottom: '16px',\n standaloneBackground: 'rgba(145, 158, 171, 0.08)',\n standaloneBackgroundExpanded: 'rgba(145, 158, 171, 0.16)',\n // Brand-specific — overridden per theme\n borderRadius: '8px',\n },\n\n toggleButton: {\n borderRadius: '8px',\n borderWidth: '1px',\n paddingXSm: '7px',\n paddingYSm: '5px',\n paddingXMd: '11px',\n paddingYMd: '11px',\n paddingXLg: '15px',\n paddingYLg: '15px',\n fontWeight: 700,\n },\n },\n};\n\nexport default defaultTheme;\n","import { ThemeTokens, ThemeOverrides } from './tokens';\n\nfunction isPlainObject(val: unknown): val is Record<string, unknown> {\n return typeof val === 'object' && val !== null && !Array.isArray(val);\n}\n\nfunction deepMerge<T>(base: T, overrides: Record<string, unknown>): T {\n const result: Record<string, unknown> = { ...(base as Record<string, unknown>) };\n for (const key of Object.keys(overrides)) {\n const baseVal = result[key];\n const overrideVal = overrides[key];\n if (isPlainObject(baseVal) && isPlainObject(overrideVal)) {\n result[key] = deepMerge(baseVal, overrideVal);\n } else if (overrideVal !== undefined) {\n result[key] = overrideVal;\n }\n }\n return result as T;\n}\n\n/**\n * Merges a ThemeOverrides partial on top of a complete ThemeTokens base.\n * Only the keys present in `overrides` replace values in `base` —\n * missing keys fall through to the default.\n */\nexport function mergeTheme(base: ThemeTokens, overrides: ThemeOverrides): ThemeTokens {\n return deepMerge(base, overrides as Record<string, unknown>);\n}\n","import { ThemeOverrides } from '../tokens';\n\n/**\n * Theme 1 — \"Ocean Blue\"\n * A clean, professional theme with a deep blue primary palette.\n * Only brand-specific overrides are listed here — everything else\n * inherits from the default theme.\n */\nconst theme1Overrides: ThemeOverrides = {\n colors: {\n primary: '#1565C0',\n primaryDark: '#003c8f',\n primaryLight: '#5e92f3',\n primaryContrast: '#ffffff',\n\n secondary: '#6A1B9A',\n secondaryDark: '#38006b',\n secondaryLight: '#9c4dcc',\n secondaryContrast: '#ffffff',\n\n success: '#2E7D32',\n warning: '#ED6C02',\n error: '#D32F2F',\n info: '#0288D1',\n\n background: '#F5F7FA',\n backgroundPaper: '#ffffff',\n backgroundSubtle: '#EEF2F7',\n\n textPrimary: '#1A2340',\n textSecondary: '#546080',\n textDisabled: '#A0AABF',\n\n divider: '#DDE3EE',\n border: '#C5CFE0',\n borderFocus: '#1565C0',\n\n overlayLight: 'rgba(255, 255, 255, 0.8)',\n overlayDark: 'rgba(21, 101, 192, 0.12)',\n },\n\n typography: {\n fontFamilyBase: '\"Inter\", \"Roboto\", \"Helvetica Neue\", Arial, sans-serif',\n fontFamilyMono: '\"Fira Code\", \"Courier New\", monospace',\n lineHeightTight: 1.2,\n lineHeightBase: 1.5,\n lineHeightRelaxed: 1.75,\n letterSpacingTight: '-0.02em',\n letterSpacingWide: '0.06em',\n },\n\n borderRadius: {\n xs: '2px',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n },\n\n shadows: {\n xs: '0 1px 2px rgba(21, 101, 192, 0.08)',\n sm: '0 2px 6px rgba(21, 101, 192, 0.10)',\n md: '0 4px 12px rgba(21, 101, 192, 0.12)',\n lg: '0 8px 24px rgba(21, 101, 192, 0.14)',\n xl: '0 16px 48px rgba(21, 101, 192, 0.18)',\n },\n\n transitions: {\n durationFast: '120ms',\n durationBase: '200ms',\n durationSlow: '350ms',\n },\n\n components: {\n button: { borderRadius: '8px' },\n input: {\n borderRadius: '8px',\n borderWidth: '1px',\n backgroundDisabled: '#F5F7FA',\n minHeight: '44px',\n },\n card: { borderRadius: '12px' },\n tooltip: {\n borderRadius: '6px',\n background: '#1A2340',\n },\n dialog: { borderRadius: '16px' },\n table: {\n cellPaddingY: '12px',\n headerBackground: '#EEF2F7',\n rowHoverBackground: '#F5F7FA',\n borderColor: '#DDE3EE',\n },\n avatar: { borderRadiusRounded: '12px' },\n divider: { color: '#DDE3EE' },\n alert: { borderRadius: '8px' },\n accordion: { borderRadius: '8px' },\n },\n};\n\nexport default theme1Overrides;\n","import { ThemeOverrides } from '../tokens';\n\n/**\n * Theme 2 — \"Forest Green\"\n * A warm, earthy theme with a rich green primary palette and softer,\n * more rounded shapes than Theme 1.\n * Only brand-specific overrides are listed here — everything else\n * inherits from the default theme.\n */\nconst theme2Overrides: ThemeOverrides = {\n colors: {\n primary: '#2E7D32',\n primaryDark: '#1B5E20',\n primaryLight: '#60AD5E',\n primaryContrast: '#ffffff',\n\n secondary: '#F57F17',\n secondaryDark: '#BC5100',\n secondaryLight: '#FFAD42',\n secondaryContrast: '#1A1A1A',\n\n success: '#388E3C',\n warning: '#F57C00',\n error: '#C62828',\n info: '#01579B',\n\n background: '#F7F9F5',\n backgroundPaper: '#ffffff',\n backgroundSubtle: '#EDF3EB',\n\n textPrimary: '#1C2A1E',\n textSecondary: '#4A6350',\n textDisabled: '#9DB09F',\n\n divider: '#D4E5D0',\n border: '#B8D4B2',\n borderFocus: '#2E7D32',\n\n overlayLight: 'rgba(255, 255, 255, 0.8)',\n overlayDark: 'rgba(46, 125, 50, 0.12)',\n },\n\n typography: {\n fontFamilyBase: '\"DM Sans\", \"Roboto\", \"Helvetica Neue\", Arial, sans-serif',\n fontFamilyMono: '\"JetBrains Mono\", \"Courier New\", monospace',\n lineHeightTight: 1.25,\n lineHeightBase: 1.6,\n lineHeightRelaxed: 1.8,\n letterSpacingTight: '-0.01em',\n letterSpacingWide: '0.04em',\n },\n\n borderRadius: {\n xs: '4px',\n sm: '8px',\n md: '12px',\n lg: '20px',\n xl: '28px',\n },\n\n shadows: {\n xs: '0 1px 2px rgba(46, 125, 50, 0.06)',\n sm: '0 2px 8px rgba(46, 125, 50, 0.08)',\n md: '0 4px 16px rgba(46, 125, 50, 0.10)',\n lg: '0 8px 28px rgba(46, 125, 50, 0.13)',\n xl: '0 16px 56px rgba(46, 125, 50, 0.16)',\n },\n\n transitions: {\n durationFast: '150ms',\n durationBase: '250ms',\n durationSlow: '400ms',\n },\n\n components: {\n button: { borderRadius: '12px' },\n input: {\n borderRadius: '12px',\n borderWidth: '1.5px',\n backgroundDisabled: '#F7F9F5',\n minHeight: '46px',\n },\n card: { borderRadius: '20px' },\n tooltip: {\n borderRadius: '8px',\n background: '#1C2A1E',\n },\n dialog: { borderRadius: '24px' },\n table: {\n cellPaddingY: '14px',\n headerBackground: '#EDF3EB',\n rowHoverBackground: '#F7F9F5',\n borderColor: '#D4E5D0',\n },\n avatar: { borderRadiusRounded: '16px' },\n divider: { color: '#D4E5D0' },\n alert: { borderRadius: '12px' },\n accordion: { borderRadius: '12px' },\n },\n};\n\nexport default theme2Overrides;\n","import { ThemeOverrides } from '../tokens';\n\n/**\n * CPS — \"uses the default theme - minimal overrides\"\n */\nconst cpsThemeOverrides: ThemeOverrides = {\n};\n\nexport default cpsThemeOverrides;\n","import { ThemeTokens, ThemeOverrides } from './tokens';\nimport defaultTheme from './defaultTheme';\nimport { mergeTheme } from './mergeTheme';\nimport theme1Overrides from './theme1';\nimport theme2Overrides from './theme2';\nimport cpsThemeOverrides from './cps';\n\n/**\n * All available theme names. Add a new key here whenever you create a\n * new theme in its own sub-directory.\n */\nexport type ThemeName = 'theme1' | 'theme2' | 'cpsTheme';\n\n/**\n * Each entry is a partial override on top of the default theme.\n * Only brand-specific values need to be listed.\n */\nconst themeRegistry: Record<ThemeName, ThemeOverrides> = {\n theme1: theme1Overrides,\n theme2: theme2Overrides,\n cpsTheme: cpsThemeOverrides,\n};\n\n/**\n * Returns the fully resolved token set for the given theme name —\n * the default theme deep-merged with the theme's overrides.\n * Throws at runtime if an unknown name is provided.\n */\nexport function getThemeTokens(name: ThemeName): ThemeTokens {\n const overrides = themeRegistry[name];\n if (!overrides) {\n const available = Object.keys(themeRegistry).join(', ');\n throw new Error(`Unknown theme \"${name}\". Available themes: ${available}`);\n }\n return mergeTheme(defaultTheme, overrides);\n}\n\nexport { themeRegistry };\n","import { ThemeName } from './registry';\n\n/**\n * Resolves the active theme name from the environment.\n *\n * Priority order (first match wins):\n * 1. VITE_THEME — used by Vite-based apps\n * 2. REACT_APP_THEME — used by Create React App\n * 3. NEXT_PUBLIC_THEME — used by Next.js\n * 4. 'cpsTheme' — hardcoded fallback\n *\n * In your app's .env file, add one of:\n *\n * VITE_THEME=theme2\n * REACT_APP_THEME=theme2\n * NEXT_PUBLIC_THEME=theme2\n *\n * The value must match one of the keys in ThemeName ('theme1' | 'theme2' | …).\n * A typo will throw at runtime when getThemeTokens() is called.\n */\nexport function resolveThemeName(): ThemeName {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const importMetaEnv: Record<string, string | undefined> | undefined =\n typeof (import.meta as any)?.env === 'object' ? (import.meta as any).env : undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const env: Record<string, string | undefined> =\n importMetaEnv ||\n (typeof globalThis !== 'undefined' && (globalThis as any).process?.env) ||\n {};\n\n const raw = env['VITE_THEME'] || env['REACT_APP_THEME'] || env['NEXT_PUBLIC_THEME'] || 'cpsTheme';\n\n return raw as ThemeName;\n}\n","import { createTheme, Theme, alpha, darken } from '@mui/material/styles';\nimport { ThemeTokens } from './tokens';\n\n/**\n * Takes a ThemeTokens object and produces a fully configured MUI Theme.\n *\n * MUI's own theme properties (palette, typography, shape, shadows, etc.)\n * are derived from our tokens — not from hard-coded values — so that\n * swapping the tokens object swaps the entire visual language.\n *\n * The raw tokens are also attached as `theme.tokens` (via module\n * augmentation in types/mui.d.ts) so components can read any token\n * not already exposed by MUI's built-in theme shape.\n */\nexport function createMuiTheme(tokens: ThemeTokens): Theme {\n return createTheme({\n palette: {\n primary: {\n main: tokens.colors.primary,\n dark: tokens.colors.primaryDark,\n light: tokens.colors.primaryLight,\n contrastText: tokens.colors.primaryContrast,\n },\n secondary: {\n main: tokens.colors.secondary,\n dark: tokens.colors.secondaryDark,\n light: tokens.colors.secondaryLight,\n contrastText: tokens.colors.secondaryContrast,\n },\n success: { main: tokens.colors.success },\n warning: { main: tokens.colors.warning },\n error: { main: tokens.colors.error },\n info: { main: tokens.colors.info },\n background: {\n default: tokens.colors.background,\n paper: tokens.colors.backgroundPaper,\n subtle: tokens.colors.backgroundSubtle,\n },\n border: tokens.colors.border,\n text: {\n primary: tokens.colors.textPrimary,\n secondary: tokens.colors.textSecondary,\n disabled: tokens.colors.textDisabled,\n },\n divider: tokens.colors.divider,\n },\n\n typography: {\n fontFamily: tokens.typography.fontFamilyBase,\n fontWeightLight: tokens.typography.fontWeightLight,\n fontWeightRegular: tokens.typography.fontWeightRegular,\n fontWeightMedium: tokens.typography.fontWeightMedium,\n fontWeightBold: tokens.typography.fontWeightBold,\n fontSize: 14, // MUI base, actual sizes come from tokens\n },\n\n shape: {\n borderRadius: 8, // MUI uses a number; components use tokens directly\n },\n\n spacing: tokens.spacing.unit,\n\n zIndex: {\n appBar: tokens.zIndex.sticky,\n drawer: tokens.zIndex.overlay,\n modal: tokens.zIndex.modal,\n snackbar: tokens.zIndex.toast,\n tooltip: tokens.zIndex.tooltip,\n },\n\n components: {\n MuiButton: {\n defaultProps: {\n disableElevation: true,\n },\n styleOverrides: {\n root: {\n borderRadius: tokens.components.button.borderRadius,\n fontWeight: tokens.components.button.fontWeight,\n letterSpacing: tokens.components.button.letterSpacing,\n textTransform: tokens.components.button.textTransform as 'none',\n fontSize: tokens.components.button.fontSizeMd,\n minHeight: tokens.components.button.heightMd,\n paddingLeft: tokens.components.button.paddingX,\n paddingRight: tokens.components.button.paddingX,\n paddingTop: tokens.components.button.paddingY,\n paddingBottom: tokens.components.button.paddingY,\n boxShadow: tokens.shadows.none,\n transition: `all ${tokens.transitions.durationBase} ${tokens.transitions.easingDefault}`,\n '&:hover': {\n boxShadow: tokens.shadows.none,\n },\n },\n sizeSmall: {\n fontSize: tokens.components.button.fontSizeSm,\n minHeight: tokens.components.button.heightSm,\n paddingLeft: tokens.components.button.paddingXSm,\n paddingRight: tokens.components.button.paddingXSm,\n paddingTop: tokens.components.button.paddingYSm,\n paddingBottom: tokens.components.button.paddingYSm,\n },\n sizeLarge: {\n fontSize: tokens.components.button.fontSizeLg,\n minHeight: tokens.components.button.heightLg,\n paddingLeft: tokens.components.button.paddingXLg,\n paddingRight: tokens.components.button.paddingXLg,\n paddingTop: tokens.components.button.paddingYLg,\n paddingBottom: tokens.components.button.paddingYLg,\n },\n },\n variants: [\n // xlarge size\n {\n props: { size: 'xlarge' },\n style: {\n fontSize: tokens.components.button.fontSizeLg,\n minHeight: tokens.components.button.heightXl,\n paddingLeft: tokens.components.button.paddingXXl,\n paddingRight: tokens.components.button.paddingXXl,\n paddingTop: tokens.components.button.paddingYXl,\n paddingBottom: tokens.components.button.paddingYXl,\n },\n },\n // soft variant — base (inherit/no color)\n {\n props: { variant: 'soft' },\n style: {\n backgroundColor: alpha(tokens.colors.textSecondary, 0.12),\n color: tokens.colors.textPrimary,\n boxShadow: tokens.shadows.none,\n '&:hover': {\n backgroundColor: alpha(tokens.colors.textSecondary, 0.2),\n boxShadow: tokens.shadows.none,\n },\n '&.Mui-disabled': {\n backgroundColor: alpha(tokens.colors.textDisabled, 0.12),\n color: tokens.colors.textDisabled,\n },\n },\n },\n // soft variant — primary\n {\n props: { variant: 'soft', color: 'primary' },\n style: {\n backgroundColor: alpha(tokens.colors.primary, 0.16),\n color: tokens.colors.primaryDark,\n '&:hover': { backgroundColor: alpha(tokens.colors.primary, 0.24) },\n },\n },\n // soft variant — secondary\n {\n props: { variant: 'soft', color: 'secondary' },\n style: {\n backgroundColor: alpha(tokens.colors.secondary, 0.16),\n color: tokens.colors.secondaryDark,\n '&:hover': { backgroundColor: alpha(tokens.colors.secondary, 0.24) },\n },\n },\n // soft variant — error\n {\n props: { variant: 'soft', color: 'error' },\n style: {\n backgroundColor: alpha(tokens.colors.error, 0.16),\n color: darken(tokens.colors.error, 0.2),\n '&:hover': { backgroundColor: alpha(tokens.colors.error, 0.24) },\n },\n },\n // soft variant — warning\n {\n props: { variant: 'soft', color: 'warning' },\n style: {\n backgroundColor: alpha(tokens.colors.warning, 0.16),\n color: darken(tokens.colors.warning, 0.2),\n '&:hover': { backgroundColor: alpha(tokens.colors.warning, 0.24) },\n },\n },\n // soft variant — success\n {\n props: { variant: 'soft', color: 'success' },\n style: {\n backgroundColor: alpha(tokens.colors.success, 0.16),\n color: darken(tokens.colors.success, 0.2),\n '&:hover': { backgroundColor: alpha(tokens.colors.success, 0.24) },\n },\n },\n // soft variant — info\n {\n props: { variant: 'soft', color: 'info' },\n style: {\n backgroundColor: alpha(tokens.colors.info, 0.16),\n color: darken(tokens.colors.info, 0.2),\n '&:hover': { backgroundColor: alpha(tokens.colors.info, 0.24) },\n },\n },\n ],\n },\n\n MuiTextField: {\n styleOverrides: {\n root: {\n '& .MuiOutlinedInput-root': {\n borderRadius: tokens.components.input.borderRadius,\n backgroundColor: tokens.components.input.background,\n minHeight: tokens.components.input.minHeight,\n '& fieldset': {\n borderWidth: tokens.components.input.borderWidth,\n borderColor: tokens.colors.border,\n },\n '&:hover fieldset': {\n borderColor: tokens.colors.primary,\n },\n '&.Mui-focused fieldset': {\n borderWidth: tokens.components.input.borderWidthFocus,\n borderColor: tokens.colors.borderFocus,\n },\n '&.Mui-disabled': {\n backgroundColor: tokens.components.input.backgroundDisabled,\n },\n },\n '& .MuiInputLabel-root': {\n fontSize: tokens.components.input.labelFontSize,\n },\n '& .MuiFormHelperText-root': {\n fontSize: tokens.components.input.helperFontSize,\n },\n },\n },\n },\n\n MuiCard: {\n styleOverrides: {\n root: {\n borderRadius: tokens.components.card.borderRadius,\n backgroundColor: tokens.components.card.background,\n boxShadow: tokens.shadows.sm,\n border: `${tokens.components.card.borderWidth} solid ${tokens.colors.divider}`,\n },\n },\n },\n\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: tokens.components.card.padding,\n '&:last-child': {\n paddingBottom: tokens.components.card.padding,\n },\n },\n },\n },\n\n MuiChip: {\n styleOverrides: {\n root: {\n height: tokens.components.chip.height,\n borderRadius: tokens.components.chip.borderRadius,\n fontSize: tokens.components.chip.fontSize,\n fontWeight: tokens.components.chip.fontWeight,\n paddingLeft: tokens.components.chip.paddingX,\n paddingRight: tokens.components.chip.paddingX,\n },\n sizeSmall: {\n height: tokens.components.chip.heightSm,\n },\n icon: {\n width: tokens.components.chip.iconSize,\n height: tokens.components.chip.iconSize,\n },\n },\n variants: [\n // ── soft — base (default color) ───────────────────────────────────\n {\n props: { variant: 'soft' },\n style: {\n backgroundColor: alpha(tokens.colors.textSecondary, 0.12),\n color: tokens.colors.textPrimary,\n '&:hover': { backgroundColor: alpha(tokens.colors.textSecondary, 0.2) },\n '&.Mui-disabled': { opacity: 0.6 },\n },\n },\n { props: { variant: 'soft', color: 'primary' }, style: { backgroundColor: alpha(tokens.colors.primary, 0.16), color: darken(tokens.colors.primary, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.primary, 0.24) } } },\n { props: { variant: 'soft', color: 'secondary' }, style: { backgroundColor: alpha(tokens.colors.secondary, 0.16), color: darken(tokens.colors.secondary, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.secondary, 0.24) } } },\n { props: { variant: 'soft', color: 'info' }, style: { backgroundColor: alpha(tokens.colors.info, 0.16), color: darken(tokens.colors.info, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.info, 0.24) } } },\n { props: { variant: 'soft', color: 'success' }, style: { backgroundColor: alpha(tokens.colors.success, 0.16), color: darken(tokens.colors.success, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.success, 0.24) } } },\n { props: { variant: 'soft', color: 'warning' }, style: { backgroundColor: alpha(tokens.colors.warning, 0.16), color: darken(tokens.colors.warning, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.warning, 0.24) } } },\n { props: { variant: 'soft', color: 'error' }, style: { backgroundColor: alpha(tokens.colors.error, 0.16), color: darken(tokens.colors.error, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.error, 0.24) } } },\n // ── black ─────────────────────────────────────────────────────────\n { props: { variant: 'filled', color: 'black' }, style: { backgroundColor: tokens.colors.textPrimary, color: tokens.colors.backgroundPaper, '&:hover': { backgroundColor: darken(tokens.colors.textPrimary, 0.1) } } },\n { props: { variant: 'outlined', color: 'black' }, style: { borderColor: tokens.colors.textPrimary, color: tokens.colors.textPrimary } },\n { props: { variant: 'soft', color: 'black' }, style: { backgroundColor: alpha(tokens.colors.textPrimary, 0.12), color: tokens.colors.textPrimary, '&:hover': { backgroundColor: alpha(tokens.colors.textPrimary, 0.2) } } },\n // ── white ─────────────────────────────────────────────────────────\n { props: { variant: 'filled', color: 'white' }, style: { backgroundColor: tokens.colors.backgroundPaper, color: tokens.colors.textPrimary, border: `1px solid ${tokens.colors.divider}`, '&:hover': { backgroundColor: tokens.colors.backgroundSubtle } } },\n { props: { variant: 'outlined', color: 'white' }, style: { borderColor: alpha(tokens.colors.backgroundPaper, 0.32), color: tokens.colors.backgroundPaper } },\n { props: { variant: 'soft', color: 'white' }, style: { backgroundColor: alpha(tokens.colors.backgroundPaper, 0.16), color: tokens.colors.backgroundPaper, '&:hover': { backgroundColor: alpha(tokens.colors.backgroundPaper, 0.24) } } },\n ],\n },\n\n MuiBadge: {\n styleOverrides: {\n badge: {\n height: tokens.components.badge.height,\n minWidth: tokens.components.badge.minWidth,\n borderRadius: tokens.components.badge.borderRadius,\n fontSize: tokens.components.badge.fontSize,\n fontWeight: tokens.components.badge.fontWeight,\n padding: `0 ${tokens.components.badge.paddingX}`,\n },\n },\n },\n\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backgroundColor: tokens.components.tooltip.background,\n color: tokens.components.tooltip.color,\n borderRadius: tokens.components.tooltip.borderRadius,\n fontSize: tokens.components.tooltip.fontSize,\n padding: `${tokens.components.tooltip.paddingY} ${tokens.components.tooltip.paddingX}`,\n maxWidth: tokens.components.tooltip.maxWidth,\n },\n },\n },\n\n MuiDialog: {\n styleOverrides: {\n paper: {\n borderRadius: tokens.components.dialog.borderRadius,\n backgroundColor: tokens.components.dialog.background,\n maxWidth: tokens.components.dialog.maxWidth,\n },\n },\n },\n\n MuiDialogContent: {\n styleOverrides: {\n root: {\n padding: tokens.components.dialog.padding,\n },\n },\n },\n\n MuiTableCell: {\n styleOverrides: {\n root: {\n paddingLeft: tokens.components.table.cellPaddingX,\n paddingRight: tokens.components.table.cellPaddingX,\n paddingTop: tokens.components.table.cellPaddingY,\n paddingBottom: tokens.components.table.cellPaddingY,\n borderBottom: `${tokens.components.table.borderWidth} solid ${tokens.components.table.borderColor}`,\n },\n head: {\n fontWeight: tokens.components.table.headerFontWeight,\n backgroundColor: tokens.components.table.headerBackground,\n },\n },\n },\n\n MuiTableRow: {\n styleOverrides: {\n root: {\n '&:hover': {\n backgroundColor: tokens.components.table.rowHoverBackground,\n },\n },\n },\n },\n\n MuiAvatar: {\n styleOverrides: {\n root: {\n width: tokens.components.avatar.sizeMd,\n height: tokens.components.avatar.sizeMd,\n borderRadius: tokens.components.avatar.borderRadius,\n fontSize: tokens.typography.fontSizeLg,\n fontWeight: tokens.typography.fontWeightSemiBold,\n },\n rounded: {\n borderRadius: tokens.components.avatar.borderRadiusRounded,\n },\n },\n },\n\n MuiAvatarGroup: {\n styleOverrides: {\n root: {\n '& .MuiAvatar-root': {\n marginLeft: tokens.components.avatar.groupSpacing,\n border: `${tokens.components.avatar.groupBorderWidth} solid ${tokens.colors.backgroundPaper}`,\n boxSizing: 'content-box',\n },\n },\n },\n },\n\n MuiDivider: {\n styleOverrides: {\n root: {\n borderColor: tokens.components.divider.color,\n borderBottomWidth: tokens.components.divider.thickness,\n },\n },\n },\n\n MuiAlert: {\n styleOverrides: {\n root: {\n alignItems: 'center',\n borderRadius: tokens.components.alert.borderRadius,\n padding: tokens.components.alert.padding,\n fontSize: tokens.typography.fontSizeMd,\n },\n // ── Standard ──────────────────────────────────────────────────────\n standardInfo: {\n backgroundColor: alpha(tokens.colors.info, 0.16),\n color: darken(tokens.colors.info, 0.4),\n '& .MuiAlert-icon': { color: tokens.colors.info },\n },\n standardSuccess: {\n backgroundColor: alpha(tokens.colors.success, 0.16),\n color: darken(tokens.colors.success, 0.4),\n '& .MuiAlert-icon': { color: tokens.colors.success },\n },\n standardWarning: {\n backgroundColor: alpha(tokens.colors.warning, 0.16),\n color: darken(tokens.colors.warning, 0.4),\n '& .MuiAlert-icon': { color: tokens.colors.warning },\n },\n standardError: {\n backgroundColor: alpha(tokens.colors.error, 0.16),\n color: darken(tokens.colors.error, 0.4),\n '& .MuiAlert-icon': { color: tokens.colors.error },\n },\n // ── Filled ────────────────────────────────────────────────────────\n filledInfo: {\n backgroundColor: tokens.colors.info,\n color: tokens.colors.primaryContrast,\n fontWeight: tokens.typography.fontWeightMedium,\n },\n filledSuccess: {\n backgroundColor: tokens.colors.success,\n color: tokens.colors.primaryContrast,\n fontWeight: tokens.typography.fontWeightMedium,\n },\n filledWarning: {\n backgroundColor: tokens.colors.warning,\n // Warning is light enough to need dark text\n color: tokens.colors.textPrimary,\n fontWeight: tokens.typography.fontWeightMedium,\n '& .MuiAlert-icon': { color: tokens.colors.textPrimary },\n },\n filledError: {\n backgroundColor: tokens.colors.error,\n color: tokens.colors.primaryContrast,\n fontWeight: tokens.typography.fontWeightMedium,\n },\n // ── Outlined ──────────────────────────────────────────────────────\n outlinedInfo: {\n backgroundColor: alpha(tokens.colors.info, 0.08),\n color: darken(tokens.colors.info, 0.2),\n borderColor: alpha(tokens.colors.info, 0.32),\n '& .MuiAlert-icon': { color: tokens.colors.info },\n },\n outlinedSuccess: {\n backgroundColor: alpha(tokens.colors.success, 0.08),\n color: darken(tokens.colors.success, 0.2),\n borderColor: alpha(tokens.colors.success, 0.32),\n '& .MuiAlert-icon': { color: tokens.colors.success },\n },\n outlinedWarning: {\n backgroundColor: alpha(tokens.colors.warning, 0.08),\n color: darken(tokens.colors.warning, 0.2),\n borderColor: alpha(tokens.colors.warning, 0.32),\n '& .MuiAlert-icon': { color: tokens.colors.warning },\n },\n outlinedError: {\n backgroundColor: alpha(tokens.colors.error, 0.08),\n color: darken(tokens.colors.error, 0.2),\n borderColor: alpha(tokens.colors.error, 0.32),\n '& .MuiAlert-icon': { color: tokens.colors.error },\n },\n icon: {\n opacity: 1,\n padding: 0,\n },\n message: {\n padding: '4px 0',\n },\n },\n },\n\n MuiAlertTitle: {\n styleOverrides: {\n root: {\n fontWeight: tokens.typography.fontWeightSemiBold,\n marginBottom: '4px',\n },\n },\n },\n\n MuiAccordion: {\n styleOverrides: {\n root: {\n borderRadius: tokens.components.accordion.borderRadius,\n boxShadow: tokens.shadows.md,\n marginBottom: tokens.spacing.sm,\n '&:before': { display: 'none' },\n '&.Mui-expanded': { margin: `0 0 ${tokens.spacing.sm}` },\n '&:first-of-type': { borderRadius: tokens.components.accordion.borderRadius },\n '&:last-of-type': { borderRadius: tokens.components.accordion.borderRadius },\n },\n },\n },\n\n MuiAccordionSummary: {\n styleOverrides: {\n root: {\n padding: `${tokens.components.accordion.summaryPaddingY} 8px ${tokens.components.accordion.summaryPaddingY} ${tokens.components.accordion.summaryPaddingX}`,\n fontWeight: tokens.components.accordion.summaryFontWeight,\n minHeight: 'auto',\n '&.Mui-expanded': { minHeight: 'auto' },\n },\n content: {\n margin: 0,\n '&.Mui-expanded': { margin: 0 },\n },\n expandIconWrapper: {\n color: tokens.colors.textSecondary,\n },\n },\n },\n\n MuiAccordionDetails: {\n styleOverrides: {\n root: {\n padding: `0 ${tokens.components.accordion.detailsPaddingX} ${tokens.components.accordion.detailsPaddingBottom}`,\n },\n },\n },\n\n MuiToggleButton: {\n styleOverrides: {\n root: {\n borderRadius: tokens.components.toggleButton.borderRadius,\n borderWidth: tokens.components.toggleButton.borderWidth,\n borderColor: tokens.colors.border,\n fontWeight: tokens.components.toggleButton.fontWeight,\n paddingLeft: tokens.components.toggleButton.paddingXMd,\n paddingRight: tokens.components.toggleButton.paddingXMd,\n paddingTop: tokens.components.toggleButton.paddingYMd,\n paddingBottom: tokens.components.toggleButton.paddingYMd,\n textTransform: 'none' as const,\n transition: `all ${tokens.transitions.durationBase} ${tokens.transitions.easingDefault}`,\n '&.Mui-selected': {\n backgroundColor: alpha(tokens.colors.textPrimary, 0.08),\n color: tokens.colors.textPrimary,\n '&:hover': {\n backgroundColor: alpha(tokens.colors.textPrimary, 0.16),\n },\n },\n '&.Mui-disabled': {\n borderColor: tokens.colors.border,\n },\n },\n sizeSmall: {\n paddingLeft: tokens.components.toggleButton.paddingXSm,\n paddingRight: tokens.components.toggleButton.paddingXSm,\n paddingTop: tokens.components.toggleButton.paddingYSm,\n paddingBottom: tokens.components.toggleButton.paddingYSm,\n },\n sizeLarge: {\n paddingLeft: tokens.components.toggleButton.paddingXLg,\n paddingRight: tokens.components.toggleButton.paddingXLg,\n paddingTop: tokens.components.toggleButton.paddingYLg,\n paddingBottom: tokens.components.toggleButton.paddingYLg,\n },\n },\n variants: [\n { props: { color: 'primary' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.primary, 0.16), color: tokens.colors.primary, '&:hover': { backgroundColor: alpha(tokens.colors.primary, 0.24) } } } },\n { props: { color: 'secondary' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.secondary, 0.16), color: tokens.colors.secondary, '&:hover': { backgroundColor: alpha(tokens.colors.secondary, 0.24) } } } },\n { props: { color: 'info' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.info, 0.16), color: tokens.colors.info, '&:hover': { backgroundColor: alpha(tokens.colors.info, 0.24) } } } },\n { props: { color: 'success' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.success, 0.16), color: tokens.colors.success, '&:hover': { backgroundColor: alpha(tokens.colors.success, 0.24) } } } },\n { props: { color: 'warning' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.warning, 0.16), color: tokens.colors.warning, '&:hover': { backgroundColor: alpha(tokens.colors.warning, 0.24) } } } },\n { props: { color: 'error' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.error, 0.16), color: tokens.colors.error, '&:hover': { backgroundColor: alpha(tokens.colors.error, 0.24) } } } },\n ],\n },\n\n MuiToggleButtonGroup: {\n styleOverrides: {\n root: {\n borderRadius: tokens.components.toggleButton.borderRadius,\n },\n grouped: {\n '&:not(:first-of-type)': {\n borderColor: tokens.colors.border,\n },\n },\n },\n },\n\n MuiPaper: {\n styleOverrides: {\n root: {\n backgroundImage: 'none', // Remove MUI's default gradient on dark mode\n },\n elevation1: { boxShadow: tokens.shadows.sm },\n elevation2: { boxShadow: tokens.shadows.md },\n elevation3: { boxShadow: tokens.shadows.lg },\n },\n },\n },\n\n // Attach the raw tokens to the theme so any component can access\n // values not already covered by MUI's built-in theme shape.\n // @ts-ignore — augmented in src/types/mui.d.ts\n tokens,\n });\n}\n","import React from 'react';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { TextField, TextFieldProps } from '../TextField';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { formatABN } from '../../utils/formatABN';\n\nexport interface ABNInputProps extends Omit<TextFieldProps, 'onChange'> {\n /** Marks the field as invalid — maps to MUI's `error` prop */\n isInvalid?: boolean;\n /** Shows a loading spinner in the end adornment */\n isLoading?: boolean;\n /** Makes the input read-only */\n readOnly?: boolean;\n /** Called with the synthetic event and `{ value, unformattedValue }` */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement>,\n values: { value: string; unformattedValue: string },\n ) => void;\n /** Current value — digits or pre-formatted ABN string */\n value?: string;\n}\n\nexport const ABNInput = React.forwardRef<HTMLInputElement, ABNInputProps>(\n function ABNInput(\n { value = '', onChange, isInvalid, readOnly, isLoading, slotProps, error, ...restProps },\n ref,\n ) {\n const formatted = formatABN(String(value));\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newFormatted = formatABN(event.target.value);\n onChange?.(event, {\n value: newFormatted,\n unformattedValue: newFormatted.replace(/\\s/g, ''),\n });\n };\n\n const endAdornment = isLoading ? (\n <InputAdornment position=\"end\">\n <CircularProgress size={20} />\n </InputAdornment>\n ) : undefined;\n\n const mergedSlotProps: TextFieldProps['slotProps'] = {\n ...slotProps,\n htmlInput: {\n maxLength: 14,\n inputMode: 'numeric',\n readOnly,\n ...(slotProps as { htmlInput?: object })?.htmlInput,\n },\n ...(endAdornment && {\n input: { endAdornment, ...(slotProps as { input?: object })?.input },\n }),\n };\n\n return (\n <TextField\n {...getCleanProps(restProps)}\n ref={ref}\n value={formatted}\n onChange={handleChange}\n error={isInvalid || !!error}\n slotProps={mergedSlotProps}\n />\n );\n },\n);\n\nABNInput.displayName = 'ToolkitABNInput';\n","import React, { useState } from 'react';\nimport {\n TextField as MuiTextField,\n TextFieldProps as MuiTextFieldProps,\n InputAdornment,\n IconButton,\n SvgIcon,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst VisibilityIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3\" />\n </SvgIcon>\n);\n\nconst VisibilityOffIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75C21.27 5.61 17 2.5 12 2.5c-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 5.13 11.35 5 12 5M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27M7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01\" />\n </SvgIcon>\n);\n\nexport type TextFieldProps = MuiTextFieldProps & {\n /** When true and type=\"password\", renders a visibility toggle icon button as end adornment. */\n showPasswordToggle?: boolean;\n};\n\n/**\n * Extended TextField.\n *\n * Border radius, border widths, background colours, and font sizes all\n * come from the active theme tokens. The MUI style overrides in\n * createMuiTheme.ts handle most of the work; this component adds any\n * extras that require the styled() API.\n *\n * Accessibility notes for callers:\n * - Always provide `label`, `aria-label`, or `aria-labelledby` — an unlabelled\n * input is inaccessible to screen readers.\n * - When using `error`, pair it with a descriptive `helperText` so users know\n * what to correct. The helper text is automatically announced as an alert.\n */\nconst StyledTextField = styled(MuiTextField)(({ theme }) => ({\n // Transition on the entire field when focus changes\n '& .MuiOutlinedInput-root': {\n transition: `box-shadow ${theme.tokens.transitions.durationFast} ${theme.tokens.transitions.easingDefault}`,\n '&.Mui-focused': {\n boxShadow: theme.tokens.shadows.xs,\n },\n },\n}));\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n function TextField({ error, FormHelperTextProps, inputProps, label, showPasswordToggle, type, slotProps, ...props }, ref) {\n const [showPassword, setShowPassword] = useState(false);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!label && !props['aria-label'] && !props['aria-labelledby'] && !inputProps?.['aria-label'] && !inputProps?.['aria-labelledby']) {\n console.warn('[ToolkitTextField] Missing accessible label. Provide `label`, `aria-label`, or `aria-labelledby`.');\n }\n }\n\n const resolvedType = showPasswordToggle && type === 'password'\n ? (showPassword ? 'text' : 'password')\n : type;\n\n const toggleAdornment = showPasswordToggle && type === 'password' ? (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n onClick={() => setShowPassword((prev) => !prev)}\n edge=\"end\"\n >\n {showPassword ? VisibilityOffIcon : VisibilityIcon}\n </IconButton>\n </InputAdornment>\n ) : null;\n\n const mergedSlotProps: TextFieldProps['slotProps'] = toggleAdornment\n ? { ...slotProps, input: { endAdornment: toggleAdornment, ...(slotProps as { input?: object })?.input } }\n : slotProps;\n\n return (\n <StyledTextField\n fullWidth\n variant=\"outlined\"\n label={label}\n error={error}\n type={resolvedType}\n inputRef={ref}\n inputProps={inputProps}\n slotProps={mergedSlotProps}\n FormHelperTextProps={error ? { role: 'alert', ...FormHelperTextProps } : FormHelperTextProps}\n {...props}\n />\n );\n }\n);\n\nTextField.displayName = 'ToolkitTextField';\n","/**\n * Strips props that should never be forwarded to a toolkit component's root element:\n *\n * - `style` — inline styles are forbidden; all visual values must come from theme tokens.\n * - `role` — ARIA roles are set by each component; consumer overrides would break accessibility.\n */\nexport function getCleanProps<T extends { style?: unknown; role?: unknown }>(\n props: T,\n): Omit<T, 'style' | 'role'> {\n const { style: _style, role: _role, ...cleanProps } = props;\n return cleanProps as Omit<T, 'style' | 'role'>;\n}\n","/**\n * Formats a string of digits into ABN display format: XX XXX XXX XXX\n * Non-digit characters are stripped; input is capped at 11 digits.\n */\nexport function formatABN(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 11);\n if (digits.length <= 2) return digits;\n if (digits.length <= 5) return `${digits.slice(0, 2)} ${digits.slice(2)}`;\n if (digits.length <= 8) return `${digits.slice(0, 2)} ${digits.slice(2, 5)} ${digits.slice(5)}`;\n return `${digits.slice(0, 2)} ${digits.slice(2, 5)} ${digits.slice(5, 8)} ${digits.slice(8)}`;\n}\n","import React from 'react';\nimport {\n Button as MuiButton,\n ButtonProps as MuiButtonProps,\n CircularProgress,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport interface ButtonProps extends MuiButtonProps {\n /** Show a loading spinner and disable interaction */\n loading?: boolean;\n}\n\n/**\n * Extended Button.\n *\n * All visual values — border radius, padding, font weight, letter spacing,\n * transition timing — come from the active theme's token set via\n * createMuiTheme.ts. No hard-coded CSS values appear here.\n *\n * The `styled()` call accesses the MUI theme (which already has our tokens\n * baked in by createMuiTheme) so every property can reference\n * `theme.tokens.*` for anything not already handled by MUI's style overrides.\n */\nconst StyledButton = styled(MuiButton)(({ theme }) => ({\n // Gap between icon and label — not surfaced by MUI's styleOverrides\n '& .MuiButton-startIcon': {\n marginRight: theme.tokens.components.button.iconGap,\n },\n '& .MuiButton-endIcon': {\n marginLeft: theme.tokens.components.button.iconGap,\n },\n}));\n\nexport function Button({ loading, disabled, children, ...props }: ButtonProps) {\n const baseLabel = props['aria-label'] ?? (typeof children === 'string' ? children : undefined);\n const ariaLabel = loading && baseLabel ? `${baseLabel}, loading` : props['aria-label'];\n\n return (\n <StyledButton\n {...props}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n aria-label={ariaLabel}\n startIcon={\n loading ? <CircularProgress size={16} color=\"inherit\" /> : props.startIcon\n }\n >\n {children}\n </StyledButton>\n );\n}\n\nButton.displayName = 'ToolkitButton';\n","import React from 'react';\nimport { Chip as MuiChip, ChipProps as MuiChipProps, SvgIcon, SvgIconProps } from '@mui/material';\n\n/**\n * Circular X delete icon — matches the minimals.cc design system.\n * Used as the default deleteIcon when onDelete is provided.\n */\nfunction CircleXIcon(props: SvgIconProps) {\n return (\n <SvgIcon {...props} viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2s10 4.477 10 10M8.97 8.97a.75.75 0 0 1 1.06 0L12 10.94l1.97-1.97a.75.75 0 0 1 1.06 1.06L13.06 12l1.97 1.97a.75.75 0 0 1-1.06 1.06L12 13.06l-1.97 1.97a.75.75 0 0 1-1.06-1.06L10.94 12l-1.97-1.97a.75.75 0 0 1 0-1.06\"\n clipRule=\"evenodd\"\n />\n </SvgIcon>\n );\n}\n\nexport type ChipProps = MuiChipProps;\n\n/**\n * Chip component extending MUI Chip.\n *\n * Adds a `soft` variant (like Button) and `black`/`white` color options.\n * Uses a custom circular-X delete icon by default when `onDelete` is provided.\n *\n * All visual values come from the active theme's token set — no hard-coded CSS.\n */\nexport function Chip({ deleteIcon, onDelete, ...props }: ChipProps) {\n return (\n <MuiChip\n {...props}\n onDelete={onDelete}\n deleteIcon={onDelete ? (deleteIcon ?? <CircleXIcon />) : undefined}\n />\n );\n}\n\nChip.displayName = 'ToolkitChip';\n","import React from 'react';\nimport {\n Card as MuiCard,\n CardContent as MuiCardContent,\n CardHeader as MuiCardHeader,\n CardActions as MuiCardActions,\n CardProps as MuiCardProps,\n CardHeaderProps as MuiCardHeaderProps,\n CardActionsProps as MuiCardActionsProps,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport interface CardProps extends MuiCardProps {\n /** Use the more compact inner padding variant */\n compact?: boolean;\n}\n\n/**\n * Extended Card.\n *\n * Border radius, padding, shadow, and border colour all come from the\n * active theme tokens — no hard-coded values.\n */\nconst StyledCard = styled(MuiCard, {\n shouldForwardProp: (prop) => prop !== 'compact',\n})<CardProps>(({ theme, compact }) => ({\n padding: compact\n ? theme.tokens.components.card.paddingCompact\n : theme.tokens.components.card.padding,\n // Override MUI CardContent's own padding since we set it at the Card level\n '& .MuiCardContent-root': {\n padding: 0,\n '&:last-child': { paddingBottom: 0 },\n },\n '&:hover': {\n boxShadow: theme.tokens.shadows.md,\n transition: `box-shadow ${theme.tokens.transitions.durationBase} ${theme.tokens.transitions.easingDefault}`,\n },\n}));\n\nexport function Card({ compact, children, ...props }: CardProps) {\n return (\n <StyledCard compact={compact} {...props}>\n {children}\n </StyledCard>\n );\n}\n\n// Re-export MUI sub-components with the same name so consumers get one import\nexport const CardContent = MuiCardContent;\nexport const CardHeader = MuiCardHeader;\nexport const CardActions = MuiCardActions;\n\nexport type { MuiCardHeaderProps as CardHeaderProps, MuiCardActionsProps as CardActionsProps };\n\nCard.displayName = 'ToolkitCard';\n","import React from 'react';\nimport {\n Alert as MuiAlert,\n AlertProps as MuiAlertProps,\n AlertTitle as MuiAlertTitle,\n AlertTitleProps as MuiAlertTitleProps,\n SvgIcon,\n} from '@mui/material';\n\nexport type AlertProps = MuiAlertProps;\nexport type AlertTitleProps = MuiAlertTitleProps;\n\n// Custom severity icons matching the minimals.cc design system\nconst InfoIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2s10 4.477 10 10m-10 5.75a.75.75 0 0 0 .75-.75v-6a.75.75 0 0 0-1.5 0v6c0 .414.336.75.75.75M12 7a1 1 0 1 1 0 2a1 1 0 0 1 0-2\" clipRule=\"evenodd\" />\n </SvgIcon>\n);\n\nconst SuccessIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2s10 4.477 10 10m-5.97-3.03a.75.75 0 0 1 0 1.06l-5 5a.75.75 0 0 1-1.06 0l-2-2a.75.75 0 1 1 1.06-1.06l1.47 1.47l2.235-2.235L14.97 8.97a.75.75 0 0 1 1.06 0\" clipRule=\"evenodd\" />\n </SvgIcon>\n);\n\nconst WarningIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M5.312 10.762C8.23 5.587 9.689 3 12 3c2.31 0 3.77 2.587 6.688 7.762l.364.644c2.425 4.3 3.638 6.45 2.542 8.022S17.786 21 12.364 21h-.728c-5.422 0-8.134 0-9.23-1.572s.117-3.722 2.542-8.022zM12 7.25a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-1.5 0V8a.75.75 0 0 1 .75-.75M12 17a1 1 0 1 0 0-2a1 1 0 0 0 0 2\" clipRule=\"evenodd\" />\n </SvgIcon>\n);\n\nconst ErrorIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M7.843 3.802C9.872 2.601 10.886 2 12 2c1.114 0 2.128.6 4.157 1.802l.686.406c2.029 1.202 3.043 1.803 3.6 2.792c.557.99.557 2.19.557 4.594v.812c0 2.403 0 3.605-.557 4.594c-.557.99-1.571 1.59-3.6 2.791l-.686.407C14.128 21.399 13.114 22 12 22c-1.114 0-2.128-.6-4.157-1.802l-.686-.407c-2.029-1.2-3.043-1.802-3.6-2.791C3 16.01 3 14.81 3 12.406v-.812C3 9.19 3 7.989 3.557 7c.557-.99 1.571-1.59 3.6-2.792zM13 16a1 1 0 1 1-2 0a1 1 0 0 1 2 0m-1-9.75a.75.75 0 0 1 .75.75v6a.75.75 0 0 1-1.5 0V7a.75.75 0 0 1 .75-.75\" clipRule=\"evenodd\" />\n </SvgIcon>\n);\n\nconst defaultIconMapping: MuiAlertProps['iconMapping'] = {\n info: InfoIcon,\n success: SuccessIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n};\n\n/**\n * Extended Alert.\n *\n * Supports all three MUI variants (standard, filled, outlined) across all\n * four severities (info, success, warning, error). Uses custom minimals-style\n * severity icons by default; override via the `iconMapping` prop.\n *\n * Visual values come from the active theme tokens — no hard-coded CSS.\n */\nexport function Alert({ iconMapping, ...props }: AlertProps) {\n return <MuiAlert iconMapping={{ ...defaultIconMapping, ...iconMapping }} {...props} />;\n}\n\nexport function AlertTitle(props: AlertTitleProps) {\n return <MuiAlertTitle {...props} />;\n}\n\nAlert.displayName = 'ToolkitAlert';\nAlertTitle.displayName = 'ToolkitAlertTitle';\n","import React from 'react';\nimport {\n Accordion as MuiAccordion,\n AccordionProps as MuiAccordionProps,\n AccordionSummary as MuiAccordionSummary,\n AccordionSummaryProps as MuiAccordionSummaryProps,\n AccordionDetails as MuiAccordionDetails,\n AccordionDetailsProps as MuiAccordionDetailsProps,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\n\nexport type AccordionProps = MuiAccordionProps;\nexport type AccordionSummaryProps = MuiAccordionSummaryProps;\nexport type AccordionDetailsProps = MuiAccordionDetailsProps;\n\n/**\n * Standalone accordion variant — each item is its own card with a\n * subtle grey background. Expands to a slightly darker tint.\n * Drop-in replacement for Accordion in contexts where you want\n * independent card-per-item styling.\n */\nexport const StandaloneAccordion = styled(MuiAccordion)(({ theme }) => ({\n borderRadius: `${theme.tokens.components.accordion.standaloneRadius} !important`,\n backgroundColor: theme.tokens.components.accordion.standaloneBackground,\n boxShadow: 'none',\n marginBottom: theme.spacing(1),\n '&.Mui-expanded': {\n backgroundColor: theme.tokens.components.accordion.standaloneBackgroundExpanded,\n margin: `0 0 ${theme.spacing(1)}`,\n },\n '& .MuiAccordionSummary-root': {\n padding: `${theme.tokens.components.accordion.summaryPaddingY} ${theme.tokens.components.accordion.summaryPaddingX}`,\n },\n '& .MuiAccordionDetails-root': {\n padding: `0 ${theme.tokens.components.accordion.detailsPaddingX} ${theme.tokens.components.accordion.detailsPaddingBottom}`,\n },\n}));\n\nexport function Accordion(props: AccordionProps) {\n return <MuiAccordion {...props} />;\n}\n\n/**\n * Renders the clickable header of an accordion panel.\n *\n * A default expand/collapse chevron is injected automatically; pass\n * `expandIcon` to override it.\n *\n * For reliable screen-reader support, pair `id` on this component with\n * a matching `aria-controls` pointing to the AccordionDetails panel id,\n * or let MUI auto-generate them by passing a consistent `id` to the\n * parent Accordion:\n *\n * <Accordion>\n * <AccordionSummary id=\"panel1-header\" aria-controls=\"panel1-content\">\n * Title\n * </AccordionSummary>\n * <AccordionDetails id=\"panel1-content\">…</AccordionDetails>\n * </Accordion>\n */\nexport function AccordionSummary({ expandIcon, ...props }: AccordionSummaryProps) {\n return (\n <MuiAccordionSummary expandIcon={expandIcon ?? <ExpandMoreIcon />} {...props} />\n );\n}\n\nexport function AccordionDetails(props: AccordionDetailsProps) {\n return <MuiAccordionDetails {...props} />;\n}\n\nAccordion.displayName = 'ToolkitAccordion';\nAccordionSummary.displayName = 'ToolkitAccordionSummary';\nAccordionDetails.displayName = 'ToolkitAccordionDetails';\nStandaloneAccordion.displayName = 'ToolkitStandaloneAccordion';\n","import React from 'react';\nimport MuiAvatar, { AvatarProps as MuiAvatarProps } from '@mui/material/Avatar';\nimport { styled } from '@mui/material/styles';\nimport { ThemeTokens } from '../../themes/tokens';\nexport { default as AvatarGroup } from '@mui/material/AvatarGroup';\nexport type { AvatarGroupProps } from '@mui/material/AvatarGroup';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';\n\nexport interface AvatarProps extends Omit<MuiAvatarProps, 'ref'> {\n size?: AvatarSize;\n}\n\nexport function getDimension(avatar: ThemeTokens['components']['avatar'], size: AvatarSize): string {\n const map: Record<AvatarSize, string> = {\n xs: avatar.sizeXs,\n sm: avatar.sizeSm,\n md: avatar.sizeMd,\n lg: avatar.sizeLg,\n xl: avatar.sizeXl,\n xxl: avatar.sizeXxl,\n };\n return map[size];\n}\n\nconst StyledAvatar = styled(MuiAvatar, {\n shouldForwardProp: (prop) => prop !== 'size',\n})<AvatarProps>(({ theme, size = 'md' }) => {\n const dimension = getDimension(theme.tokens.components.avatar, size);\n return {\n width: dimension,\n height: dimension,\n };\n});\n\nexport function Avatar({ size = 'md', ...props }: AvatarProps) {\n return <StyledAvatar size={size} {...props} />;\n}\n","import {\n ToggleButton as MuiToggleButton,\n ToggleButtonProps as MuiToggleButtonProps,\n ToggleButtonGroup as MuiToggleButtonGroup,\n ToggleButtonGroupProps as MuiToggleButtonGroupProps,\n} from '@mui/material';\n\nexport type ToggleButtonProps = MuiToggleButtonProps;\nexport type ToggleButtonGroupProps = MuiToggleButtonGroupProps;\n\nexport function ToggleButton(props: ToggleButtonProps) {\n return <MuiToggleButton {...props} />;\n}\nToggleButton.displayName = 'ToolkitToggleButton';\n\nexport function ToggleButtonGroup(props: ToggleButtonGroupProps) {\n return <MuiToggleButtonGroup {...props} />;\n}\nToggleButtonGroup.displayName = 'ToolkitToggleButtonGroup';\n","import React, { useState } from 'react';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport {\n DatePicker as MuiDatePicker,\n DatePickerProps as MuiDatePickerProps,\n} from '@mui/x-date-pickers/DatePicker';\nimport {\n DesktopDatePicker as MuiDesktopDatePicker,\n DesktopDatePickerProps as MuiDesktopDatePickerProps,\n} from '@mui/x-date-pickers/DesktopDatePicker';\nimport {\n MobileDatePicker as MuiMobileDatePicker,\n MobileDatePickerProps as MuiMobileDatePickerProps,\n} from '@mui/x-date-pickers/MobileDatePicker';\nimport {\n DateField as MuiDateField,\n DateFieldProps as MuiDateFieldProps,\n} from '@mui/x-date-pickers/DateField';\nimport {\n StaticDatePicker as MuiStaticDatePicker,\n StaticDatePickerProps as MuiStaticDatePickerProps,\n} from '@mui/x-date-pickers/StaticDatePicker';\nimport {\n TimePicker as MuiTimePicker,\n TimePickerProps as MuiTimePickerProps,\n} from '@mui/x-date-pickers/TimePicker';\nimport {\n DesktopTimePicker as MuiDesktopTimePicker,\n DesktopTimePickerProps as MuiDesktopTimePickerProps,\n} from '@mui/x-date-pickers/DesktopTimePicker';\nimport {\n MobileTimePicker as MuiMobileTimePicker,\n MobileTimePickerProps as MuiMobileTimePickerProps,\n} from '@mui/x-date-pickers/MobileTimePicker';\nimport {\n TimeField as MuiTimeField,\n TimeFieldProps as MuiTimeFieldProps,\n} from '@mui/x-date-pickers/TimeField';\nimport {\n StaticTimePicker as MuiStaticTimePicker,\n StaticTimePickerProps as MuiStaticTimePickerProps,\n} from '@mui/x-date-pickers/StaticTimePicker';\nimport {\n DateTimePicker as MuiDateTimePicker,\n DateTimePickerProps as MuiDateTimePickerProps,\n} from '@mui/x-date-pickers/DateTimePicker';\nimport {\n DesktopDateTimePicker as MuiDesktopDateTimePicker,\n DesktopDateTimePickerProps as MuiDesktopDateTimePickerProps,\n} from '@mui/x-date-pickers/DesktopDateTimePicker';\nimport {\n MobileDateTimePicker as MuiMobileDateTimePicker,\n MobileDateTimePickerProps as MuiMobileDateTimePickerProps,\n} from '@mui/x-date-pickers/MobileDateTimePicker';\nimport {\n DateTimeField as MuiDateTimeField,\n DateTimeFieldProps as MuiDateTimeFieldProps,\n} from '@mui/x-date-pickers/DateTimeField';\nimport {\n StaticDateTimePicker as MuiStaticDateTimePicker,\n StaticDateTimePickerProps as MuiStaticDateTimePickerProps,\n} from '@mui/x-date-pickers/StaticDateTimePicker';\nimport {\n DateCalendar as MuiDateCalendar,\n DateCalendarProps as MuiDateCalendarProps,\n} from '@mui/x-date-pickers/DateCalendar';\nimport type { Dayjs } from 'dayjs';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\nimport Box from '@mui/material/Box';\nimport TextField from '@mui/material/TextField';\nimport { styled } from '@mui/material/styles';\n\n// ─── Re-export types ────────────────────────────────────────────────────────────\n// MUI X v8 removed the date-value generic from component props — types are inferred\n// from the adapter registered via LocalizationProvider.\n\nexport type DatePickerProps = MuiDatePickerProps;\nexport type DesktopDatePickerProps = MuiDesktopDatePickerProps;\nexport type MobileDatePickerProps = MuiMobileDatePickerProps;\nexport type DateFieldProps = MuiDateFieldProps;\nexport type StaticDatePickerProps = MuiStaticDatePickerProps;\nexport type TimePickerProps = MuiTimePickerProps;\nexport type DesktopTimePickerProps = MuiDesktopTimePickerProps;\nexport type MobileTimePickerProps = MuiMobileTimePickerProps;\nexport type TimeFieldProps = MuiTimeFieldProps;\nexport type StaticTimePickerProps = MuiStaticTimePickerProps;\nexport type DateTimePickerProps = MuiDateTimePickerProps;\nexport type DesktopDateTimePickerProps = MuiDesktopDateTimePickerProps;\nexport type MobileDateTimePickerProps = MuiMobileDateTimePickerProps;\nexport type DateTimeFieldProps = MuiDateTimeFieldProps;\nexport type StaticDateTimePickerProps = MuiStaticDateTimePickerProps;\nexport type DateCalendarProps = MuiDateCalendarProps;\n\n// ─── Provider ──────────────────────────────────────────────────────────────────\n\nexport interface DateLocalizationProviderProps {\n children: React.ReactNode;\n}\n\nexport function DateLocalizationProvider({ children }: DateLocalizationProviderProps) {\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n {children}\n </LocalizationProvider>\n );\n}\n\nDateLocalizationProvider.displayName = 'ToolkitDateLocalizationProvider';\n\n// ─── Date Pickers ──────────────────────────────────────────────────────────────\n\nexport function DatePicker(props: DatePickerProps) {\n return <MuiDatePicker {...props} />;\n}\nDatePicker.displayName = 'ToolkitDatePicker';\n\nexport function DesktopDatePicker(props: DesktopDatePickerProps) {\n return <MuiDesktopDatePicker {...props} />;\n}\nDesktopDatePicker.displayName = 'ToolkitDesktopDatePicker';\n\nexport function MobileDatePicker(props: MobileDatePickerProps) {\n return <MuiMobileDatePicker {...props} />;\n}\nMobileDatePicker.displayName = 'ToolkitMobileDatePicker';\n\nexport function DateField(props: DateFieldProps) {\n return <MuiDateField {...props} />;\n}\nDateField.displayName = 'ToolkitDateField';\n\nexport function StaticDatePicker(props: StaticDatePickerProps) {\n return <MuiStaticDatePicker {...props} />;\n}\nStaticDatePicker.displayName = 'ToolkitStaticDatePicker';\n\n// ─── Time Pickers ──────────────────────────────────────────────────────────────\n\nexport function TimePicker(props: TimePickerProps) {\n return <MuiTimePicker {...props} />;\n}\nTimePicker.displayName = 'ToolkitTimePicker';\n\nexport function DesktopTimePicker(props: DesktopTimePickerProps) {\n return <MuiDesktopTimePicker {...props} />;\n}\nDesktopTimePicker.displayName = 'ToolkitDesktopTimePicker';\n\nexport function MobileTimePicker(props: MobileTimePickerProps) {\n return <MuiMobileTimePicker {...props} />;\n}\nMobileTimePicker.displayName = 'ToolkitMobileTimePicker';\n\nexport function TimeField(props: TimeFieldProps) {\n return <MuiTimeField {...props} />;\n}\nTimeField.displayName = 'ToolkitTimeField';\n\nexport function StaticTimePicker(props: StaticTimePickerProps) {\n return <MuiStaticTimePicker {...props} />;\n}\nStaticTimePicker.displayName = 'ToolkitStaticTimePicker';\n\n// ─── Date Time Pickers ─────────────────────────────────────────────────────────\n\nexport function DateTimePicker(props: DateTimePickerProps) {\n return <MuiDateTimePicker {...props} />;\n}\nDateTimePicker.displayName = 'ToolkitDateTimePicker';\n\nexport function DesktopDateTimePicker(props: DesktopDateTimePickerProps) {\n return <MuiDesktopDateTimePicker {...props} />;\n}\nDesktopDateTimePicker.displayName = 'ToolkitDesktopDateTimePicker';\n\nexport function MobileDateTimePicker(props: MobileDateTimePickerProps) {\n return <MuiMobileDateTimePicker {...props} />;\n}\nMobileDateTimePicker.displayName = 'ToolkitMobileDateTimePicker';\n\nexport function DateTimeField(props: DateTimeFieldProps) {\n return <MuiDateTimeField {...props} />;\n}\nDateTimeField.displayName = 'ToolkitDateTimeField';\n\nexport function StaticDateTimePicker(props: StaticDateTimePickerProps) {\n return <MuiStaticDateTimePicker {...props} />;\n}\nStaticDateTimePicker.displayName = 'ToolkitStaticDateTimePicker';\n\nexport function DateCalendar(props: DateCalendarProps) {\n return <MuiDateCalendar {...props} />;\n}\nDateCalendar.displayName = 'ToolkitDateCalendar';\n\n// ─── Custom Range Picker ────────────────────────────────────────────────────────\n\nexport interface DateRangeValue {\n start: Dayjs | null;\n end: Dayjs | null;\n}\n\nexport interface DateRangePickerInputProps {\n value: DateRangeValue;\n onChange: (value: DateRangeValue) => void;\n startLabel?: string;\n endLabel?: string;\n buttonLabel?: string;\n}\n\nconst RangeRow = styled(Box)(({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(2),\n alignItems: 'center',\n}));\n\nexport function DateRangePickerInput({\n value,\n onChange,\n startLabel = 'Start date',\n endLabel = 'End date',\n buttonLabel = 'Click me!',\n}: DateRangePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState<DateRangeValue>(value);\n\n const handleOpen = () => {\n setDraft(value);\n setOpen(true);\n };\n\n const handleCancel = () => setOpen(false);\n\n const handleOk = () => {\n onChange(draft);\n setOpen(false);\n };\n\n return (\n <>\n <Button variant=\"contained\" color=\"inherit\" disableElevation onClick={handleOpen}>\n {buttonLabel}\n </Button>\n <Dialog open={open} onClose={handleCancel} maxWidth=\"sm\" fullWidth>\n <DialogContent>\n <RangeRow>\n <MuiDatePicker\n label={startLabel}\n value={draft.start}\n onChange={(v) => setDraft((prev) => ({ ...prev, start: v }))}\n slotProps={{ textField: { fullWidth: true } }}\n />\n <MuiDatePicker\n label={endLabel}\n value={draft.end}\n onChange={(v) => setDraft((prev) => ({ ...prev, end: v }))}\n slotProps={{ textField: { fullWidth: true } }}\n />\n </RangeRow>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleCancel} color=\"inherit\">Cancel</Button>\n <Button onClick={handleOk} color=\"inherit\">OK</Button>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n\nDateRangePickerInput.displayName = 'ToolkitDateRangePickerInput';\n\nexport interface DateRangePickerCalendarProps {\n value: DateRangeValue;\n onChange: (value: DateRangeValue) => void;\n buttonLabel?: string;\n}\n\nexport function DateRangePickerCalendar({\n value,\n onChange,\n buttonLabel = 'Click me!',\n}: DateRangePickerCalendarProps) {\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState<DateRangeValue>(value);\n const [selecting, setSelecting] = useState<'start' | 'end'>('start');\n\n const handleOpen = () => {\n setDraft(value);\n setSelecting('start');\n setOpen(true);\n };\n\n const handleCancel = () => setOpen(false);\n\n const handleOk = () => {\n onChange(draft);\n setOpen(false);\n };\n\n const handleDaySelect = (date: Dayjs | null) => {\n if (selecting === 'start') {\n setDraft({ start: date, end: null });\n setSelecting('end');\n } else {\n setDraft((prev) => ({ ...prev, end: date }));\n }\n };\n\n return (\n <>\n <Button variant=\"contained\" color=\"inherit\" disableElevation onClick={handleOpen}>\n {buttonLabel}\n </Button>\n <Dialog open={open} onClose={handleCancel}>\n <DialogContent sx={{ p: 1 }}>\n <Box sx={{ mb: 1, px: 1 }}>\n <TextField\n size=\"small\"\n label=\"Selecting\"\n value={selecting === 'start' ? 'Start date' : 'End date'}\n inputProps={{ readOnly: true }}\n fullWidth\n />\n </Box>\n <MuiDateCalendar\n value={selecting === 'start' ? draft.start : draft.end}\n onChange={handleDaySelect}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={handleCancel} color=\"inherit\">Cancel</Button>\n <Button onClick={handleOk} color=\"inherit\">OK</Button>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n\nDateRangePickerCalendar.displayName = 'ToolkitDateRangePickerCalendar';\n","import { Grid2 as MuiGrid2, Grid2Props as MuiGrid2Props } from '@mui/material';\n\nexport type GridProps = MuiGrid2Props;\n\n/**\n * 12-column layout grid, based on MUI Grid2.\n *\n * Use `container` on the wrapper and `size` on children to set column spans.\n * `size` accepts a number (fixed across all breakpoints) or a responsive\n * object mapping breakpoints to spans:\n *\n * size={6} // 6/12 at all sizes\n * size={{ xs: 12, md: 6 }} // full width → half width\n * size=\"grow\" // fills remaining space\n * size=\"auto\" // shrinks to content\n *\n * Spacing multiplies the theme spacing unit (8px):\n * spacing={1} → 8px gap\n * spacing={2} → 16px gap (default on containers)\n * spacing={3} → 24px gap\n * spacing={4} → 32px gap\n * spacing={5} → 40px gap\n *\n * @example\n * // 2-column layout, 16px gap, stacks on mobile\n * <Grid container spacing={2}>\n * <Grid size={{ xs: 12, md: 6 }}>Left</Grid>\n * <Grid size={{ xs: 12, md: 6 }}>Right</Grid>\n * </Grid>\n *\n * @example\n * // 4-column card grid\n * <Grid container spacing={3}>\n * {items.map((item) => (\n * <Grid key={item.id} size={{ xs: 12, sm: 6, md: 3 }}>\n * <Card>…</Card>\n * </Grid>\n * ))}\n * </Grid>\n */\nexport function Grid({ container, spacing, ...props }: GridProps) {\n return (\n <MuiGrid2\n container={container}\n spacing={container && spacing === undefined ? 2 : spacing}\n {...props}\n />\n );\n}\n\nGrid.displayName = 'ToolkitGrid';\n","import React from 'react';\nimport { SvgIconProps } from '@mui/material';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledIconTextRoot, StyledIconTextSymbol } from './IconText.styles';\n\nexport interface IconTextSymbol {\n content?: string;\n id?: string;\n viewBox?: string;\n isMounted?: boolean;\n}\n\nexport interface IconTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** SVG symbol object (e.g. from @online/symbols or an inline SVG descriptor) */\n symbol: IconTextSymbol;\n /** Props forwarded to the MUI SvgIcon wrapper */\n symbolProps?: Omit<SvgIconProps, 'children'>;\n /** Render the icon before or after children */\n symbolPosition?: 'front' | 'end';\n /** Inherit font-family and line-height from the parent (useful inside buttons, links) */\n inheritFontFamily?: boolean;\n}\n\nexport const IconText = React.forwardRef<HTMLDivElement, IconTextProps>(\n function IconText(\n {\n symbol,\n symbolPosition = 'front',\n symbolProps,\n inheritFontFamily = false,\n children,\n ...rest\n },\n ref,\n ) {\n const icon = (\n <StyledIconTextSymbol\n $position={symbolPosition}\n viewBox={symbol.viewBox ?? '0 0 24 24'}\n aria-hidden=\"true\"\n {...symbolProps}\n >\n {symbol.content && <g dangerouslySetInnerHTML={{ __html: symbol.content }} />}\n </StyledIconTextSymbol>\n );\n\n return (\n <StyledIconTextRoot\n ref={ref}\n $inheritFontFamily={inheritFontFamily}\n {...getCleanProps(rest)}\n >\n {symbolPosition === 'front' && icon}\n {children}\n {symbolPosition === 'end' && icon}\n </StyledIconTextRoot>\n );\n },\n);\n\nIconText.displayName = 'ToolkitIconText';\n","import { styled } from '@mui/material/styles';\nimport { SvgIcon } from '@mui/material';\n\nexport const StyledIconTextRoot = styled('div')<{ $inheritFontFamily?: boolean }>(\n ({ $inheritFontFamily }) => ({\n display: 'flex',\n alignItems: 'center',\n backgroundColor: 'inherit',\n color: 'inherit',\n fontSize: 'inherit',\n fontWeight: 'inherit',\n textAlign: 'inherit' as const,\n textTransform: 'inherit' as const,\n ...($inheritFontFamily && {\n fontFamily: 'inherit',\n lineHeight: 'inherit',\n }),\n }),\n);\n\nexport const StyledIconTextSymbol = styled(SvgIcon, {\n shouldForwardProp: (prop) => prop !== '$position',\n})<{ $position: 'front' | 'end' }>(({ theme, $position }) => ({\n flexShrink: 0,\n marginRight: $position === 'front' ? theme.spacing(1) : 0,\n marginLeft: $position === 'end' ? theme.spacing(1) : 0,\n}));\n","import React from 'react';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport {\n StyledWrapper,\n StyledListItemContainer,\n StyledLeftIconWrapper,\n StyledRightIconWrapper,\n StyledLabelContainer,\n StyledLabel,\n StyledCaption,\n} from './InternalLinkItem.styles';\n\nexport interface InternalLinkItemProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {\n /** URL for the anchor href */\n link?: string;\n /** The label to display */\n label: string;\n /** Secondary text displayed beneath the label */\n caption?: string;\n /** Optional icon rendered on the left */\n icon?: React.ReactNode;\n /**\n * Swap the rendered element — pass a React Router `<Link>` or any\n * component that accepts an `href`/`to` prop.\n * Defaults to a plain `<a>`.\n */\n component?: React.ElementType;\n}\n\nexport function InternalLinkItem({\n link,\n icon,\n label,\n caption,\n component,\n ...restProps\n}: InternalLinkItemProps) {\n return (\n <StyledWrapper data-component-id=\"internalLinkItem\">\n <StyledListItemContainer\n component={component ?? 'a'}\n href={link}\n {...getCleanProps(restProps)}\n >\n {icon && (\n <StyledLeftIconWrapper data-testid=\"icon_container\">\n {icon}\n </StyledLeftIconWrapper>\n )}\n <StyledLabelContainer>\n <StyledLabel className=\"itemLabel\">{label}</StyledLabel>\n {caption && <StyledCaption>{caption}</StyledCaption>}\n </StyledLabelContainer>\n <StyledRightIconWrapper className=\"iconColor\" data-testid=\"icon_action_container\">\n <ChevronRightIcon fontSize=\"small\" />\n </StyledRightIconWrapper>\n </StyledListItemContainer>\n </StyledWrapper>\n );\n}\n\nInternalLinkItem.displayName = 'ToolkitInternalLinkItem';\n","import Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\n\nexport const StyledWrapper = styled('div')(({ theme }) => ({\n '& > a, & > div': {\n textDecoration: 'none',\n color: theme.tokens.colors.textPrimary,\n '&:hover': {\n color: theme.tokens.colors.textPrimary,\n },\n },\n}));\n\nexport const StyledListItemContainer = styled(Box)(({ theme }) => ({\n width: '100%',\n minHeight: '66px',\n borderTop: `1px solid ${theme.tokens.colors.divider}`,\n borderBottom: `1px solid ${theme.tokens.colors.divider}`,\n display: 'flex',\n alignItems: 'center',\n textDecoration: 'none',\n color: 'inherit',\n transition: [\n `border-color ${theme.tokens.transitions.durationBase} ease-in`,\n `box-shadow ${theme.tokens.transitions.durationBase} ease-in`,\n `background-color ${theme.tokens.transitions.durationBase} ease-in`,\n `color ${theme.tokens.transitions.durationBase} ease-in`,\n `fill ${theme.tokens.transitions.durationBase} ease-in`,\n ].join(', '),\n\n '& .iconColor svg': {\n color: theme.tokens.colors.primary,\n fill: theme.tokens.colors.primary,\n transition: `all ${theme.tokens.transitions.durationBase} ease`,\n },\n\n '&:hover': {\n backgroundColor: theme.tokens.colors.backgroundSubtle,\n borderTop: `1px solid ${theme.tokens.colors.textPrimary}`,\n borderBottom: `1px solid ${theme.tokens.colors.textPrimary}`,\n cursor: 'pointer',\n '& .itemLabel': {\n textDecoration: 'underline',\n },\n '& .iconColor svg': {\n color: theme.tokens.colors.textPrimary,\n fill: theme.tokens.colors.textPrimary,\n transform: 'translateX(4px)',\n },\n },\n\n '&:focus, &:active': {\n boxShadow: `inset 0 0 0 3px ${theme.tokens.colors.border}`,\n borderTop: '1px solid transparent',\n borderBottom: '1px solid transparent',\n outlineColor: 'transparent',\n outlineStyle: 'solid',\n },\n})) as typeof Box;\n\nexport const StyledLeftIconWrapper = styled('span')({\n display: 'flex',\n paddingLeft: '4px',\n});\n\nexport const StyledRightIconWrapper = styled('span')({\n display: 'flex',\n paddingRight: '4px',\n});\n\nexport const StyledLabelContainer = styled('div')({\n flex: 1,\n padding: '12px 8px',\n});\n\nexport const StyledLabel = styled('p')(({ theme }) => ({\n fontFamily: theme.tokens.typography.fontFamilyBase,\n fontSize: theme.tokens.typography.fontSizeLg,\n lineHeight: '20px',\n fontWeight: theme.tokens.typography.fontWeightSemiBold,\n margin: 0,\n textDecoration: 'none',\n}));\n\nexport const StyledCaption = styled('p')(({ theme }) => ({\n fontFamily: theme.tokens.typography.fontFamilyBase,\n color: theme.tokens.colors.textSecondary,\n fontSize: theme.tokens.typography.fontSizeLg,\n lineHeight: '20px',\n fontWeight: theme.tokens.typography.fontWeightRegular,\n margin: 0,\n textDecoration: 'none',\n}));\n","import React from 'react';\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledAnchor, StyledIconSpan, StyledScreenReaderOnly } from './Link.styles';\n\nexport const Variant = {\n standard: 'standard',\n external: 'external',\n file: 'file',\n} as const;\n\nfunction DocumentIcon() {\n return (\n <SvgIcon viewBox=\"0 0 384 512\" fontSize=\"inherit\">\n <path\n fillRule=\"evenodd\"\n d=\"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128z\"\n />\n </SvgIcon>\n );\n}\n\nfunction getIcon(variant: string, icon?: React.ElementType): React.ElementType | undefined {\n switch (variant) {\n case Variant.external:\n return OpenInNewIcon;\n case Variant.file:\n return DocumentIcon;\n default:\n return icon;\n }\n}\n\nexport interface LinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'color'> {\n /** Content of the link */\n children: React.ReactNode;\n /** Visual variant — controls icon and default target */\n variant?: 'standard' | 'external' | 'file';\n /** Custom icon component (standard variant only) */\n icon?: React.ElementType;\n /** Render the icon on the right instead of the left */\n iconToRight?: boolean;\n /** Extra padding, renders the link as a standalone block-level call-to-action */\n standalone?: boolean;\n /** High-contrast mode for use on dark backgrounds */\n isOnDarkBg?: boolean;\n /** Link colour */\n color?: 'black' | 'primary' | 'error';\n /** Link URL */\n href?: string;\n /** Swap the rendered element — pass a React Router `<Link>` or similar */\n component?: React.ElementType;\n}\n\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n {\n children,\n variant = 'standard',\n icon,\n color = 'primary',\n target: targetProp,\n iconToRight,\n href,\n component,\n standalone,\n isOnDarkBg,\n ...restProps\n },\n ref,\n) {\n const Icon = getIcon(variant, icon);\n const target = variant !== Variant.standard ? '_blank' : targetProp;\n const iconRight = variant === Variant.external ? true : !!iconToRight;\n // React Router uses `to` instead of `href`\n const urlProp = component ? { to: href } : { href };\n\n return (\n <StyledAnchor\n component={component ?? 'a'}\n {...getCleanProps(restProps)}\n {...urlProp}\n data-component-id=\"Link\"\n tint={color}\n isOnDarkBg={isOnDarkBg}\n target={target}\n iconRight={iconRight}\n standalonelink={!!standalone}\n ref={ref}\n >\n {Icon && (\n <StyledIconSpan iconRight={iconRight}>\n <Icon fontSize=\"inherit\" />\n </StyledIconSpan>\n )}\n {children}\n {variant === Variant.external && (\n <StyledScreenReaderOnly>, opens in a new tab</StyledScreenReaderOnly>\n )}\n </StyledAnchor>\n );\n});\n\nLink.displayName = 'ToolkitLink';\n","import Box from '@mui/material/Box';\nimport { styled, alpha } from '@mui/material/styles';\n\ninterface StyledAnchorProps {\n tint?: 'primary' | 'black' | 'error';\n isOnDarkBg?: boolean;\n standalonelink?: boolean;\n iconRight?: boolean;\n}\n\ninterface StyledIconSpanProps {\n iconRight?: boolean;\n}\n\nexport const StyledScreenReaderOnly = styled('span')({\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n});\n\nexport const StyledIconSpan = styled('span', {\n shouldForwardProp: (prop) => prop !== 'iconRight',\n})<StyledIconSpanProps>(({ iconRight }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n paddingLeft: iconRight ? '4px' : undefined,\n paddingRight: iconRight ? undefined : '4px',\n}));\n\nexport const StyledAnchor = styled(Box, {\n shouldForwardProp: (prop) =>\n !['tint', 'isOnDarkBg', 'standalonelink', 'iconRight'].includes(prop as string),\n})<StyledAnchorProps>(({ theme, tint = 'primary', isOnDarkBg, standalonelink, iconRight }) => {\n type TintKey = 'primary' | 'black' | 'error' | 'white';\n const resolvedTint: TintKey = isOnDarkBg ? 'white' : (tint as TintKey);\n\n const baseColors: Record<TintKey, string> = {\n primary: theme.tokens.colors.primary,\n black: theme.tokens.colors.textPrimary,\n error: theme.tokens.colors.error,\n white: theme.palette.common.white,\n };\n\n const hoverColors: Record<TintKey, string> = {\n primary: theme.tokens.colors.textPrimary,\n black: theme.tokens.colors.primary,\n error: theme.tokens.colors.textPrimary,\n white: theme.tokens.colors.border,\n };\n\n const baseColor = baseColors[resolvedTint];\n const hoverColor = hoverColors[resolvedTint];\n\n return {\n display: 'inline-flex',\n alignItems: 'center',\n flexDirection: iconRight ? 'row-reverse' : undefined,\n verticalAlign: 'bottom',\n fontFamily: theme.tokens.typography.fontFamilyBase,\n textDecoration: 'underline',\n borderRadius: theme.tokens.borderRadius.md,\n cursor: 'pointer',\n transition: `all ${theme.tokens.transitions.durationBase} ease`,\n color: baseColor,\n\n '& svg': {\n color: baseColor,\n transition: `all ${theme.tokens.transitions.durationBase} ease`,\n },\n\n '&:hover': {\n textDecoration: 'none',\n color: hoverColor,\n '& svg': { color: hoverColor },\n },\n\n '&:focus-visible': {\n textDecoration: 'underline',\n color: baseColor,\n outline: 'none',\n boxShadow: `0 0 0 3px ${alpha(baseColor, 0.35)}`,\n '& svg': { color: baseColor },\n },\n\n '&:active': {\n color: hoverColor,\n boxShadow: `0 0 0 3px ${alpha(isOnDarkBg ? baseColor : hoverColor, 0.65)}`,\n textDecoration: 'none',\n '& svg': { color: hoverColor },\n },\n\n ...(standalonelink && {\n paddingTop: '0.75rem',\n paddingBottom: '0.75rem',\n }),\n };\n}) as typeof Box;\n","import React from 'react';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledLogoLink, StyledLogoSpan } from './LogoLink.styles';\n\nexport interface LogoLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {\n /** Logo content — pass an `<img>`, inline SVG, or any React node */\n children: React.ReactNode;\n /** Link destination, defaults to '/' */\n href?: string;\n /** Compact height mode (45px instead of 55px) */\n isSmall?: boolean;\n /** Accessible title for the link, defaults to 'Home' */\n title?: string;\n /** Swap the rendered element — pass a React Router `<Link>` or similar */\n component?: React.ElementType;\n}\n\nexport const LogoLink = React.forwardRef<HTMLAnchorElement, LogoLinkProps>(function LogoLink(\n { children, href = '/', isSmall, title = 'Home', component, ...restProps },\n ref,\n) {\n return (\n <StyledLogoLink\n component={component ?? 'a'}\n href={href}\n isSmall={isSmall}\n title={title}\n data-component-id=\"LogoLink\"\n {...getCleanProps(restProps)}\n ref={ref}\n >\n <StyledLogoSpan>{children}</StyledLogoSpan>\n </StyledLogoLink>\n );\n});\n\nLogoLink.displayName = 'ToolkitLogoLink';\n","import Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\n\ninterface StyledLogoLinkProps {\n isSmall?: boolean;\n}\n\nexport const StyledLogoLink = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'isSmall',\n})<StyledLogoLinkProps>(({ theme, isSmall }) => ({\n display: 'inline-flex',\n height: isSmall ? '45px' : '55px',\n flexShrink: 0,\n backgroundColor: theme.tokens.colors.primary,\n color: theme.palette.common.white,\n textDecoration: 'none',\n\n '&:hover > span': {\n transform: 'translateY(5px)',\n },\n\n '@media print': {\n backgroundColor: theme.palette.common.white,\n color: theme.tokens.colors.primaryDark,\n },\n})) as typeof Box;\n\nexport const StyledLogoSpan = styled('span')(({ theme }) => ({\n padding: '0 10px 0 15px',\n backgroundColor: theme.tokens.colors.primary,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: theme.tokens.transitions.durationBase,\n transitionTimingFunction: 'ease-in-out',\n\n '@media (max-width: 640px)': {\n padding: '0 7px 0 10px',\n },\n\n '@media print': {\n backgroundColor: 'transparent',\n },\n}));\n","import React, { useEffect, useRef } from 'react';\nimport Portal from '@mui/material/Portal';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { useForkRef } from '@mui/material/utils';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { backgroundScrollTether } from '../../utils/backgroundScrollTether';\nimport { tabTrap } from '../../utils/tabTrap';\nimport { setA11yMessage } from '../../utils/a11yAnnouncer';\nimport {\n StyledPageSpinnerRoot,\n StyledOverlay,\n StyledSpinnerCentre,\n StyledSpinnerMessage,\n StyledScreenReaderOnly,\n} from './PageSpinner.styles';\n\nconst ARIA_REANNOUNCE_INTERVAL = 30000;\n\nexport interface PageSpinnerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'role'> {\n /** Loading message shown below the spinner */\n message?: string;\n /** Override the visible message with a React node (the `message` prop is still announced to screen readers) */\n customMessageLayout?: React.ReactNode;\n /** Use light-on-dark colour scheme */\n isOnDarkBg?: boolean;\n /** Additional screen reader text when no visible message is needed */\n srText?: string;\n /** DOM node to portal into (defaults to document.body) */\n rootNode?: Element;\n /** Aria-live politeness for the screen reader announcement */\n messageTone?: 'assertive' | 'polite';\n}\n\nexport const PageSpinner = React.forwardRef<HTMLDivElement, PageSpinnerProps>(\n function PageSpinner(\n {\n message = 'Processing, please wait',\n customMessageLayout,\n isOnDarkBg = false,\n srText,\n rootNode = typeof document !== 'undefined' ? document.body : undefined,\n messageTone = 'assertive',\n ...restProps\n },\n ref,\n ) {\n const internalRef = useRef<HTMLDivElement>(null);\n const mergedRef = useForkRef(ref, internalRef);\n\n useEffect(() => {\n const blockKeyDown = (e: KeyboardEvent) => e.preventDefault();\n document.addEventListener('keydown', blockKeyDown);\n return () => document.removeEventListener('keydown', blockKeyDown);\n }, [rootNode]);\n\n useEffect(() => {\n const ariaRole = messageTone === 'polite' ? 'status' : 'alert';\n setA11yMessage(message, messageTone, ariaRole);\n\n const interval = setInterval(() => {\n setA11yMessage(message, messageTone, ariaRole);\n }, ARIA_REANNOUNCE_INTERVAL);\n\n tabTrap(true, internalRef.current, rootNode);\n backgroundScrollTether(true);\n\n return () => {\n setA11yMessage('');\n clearInterval(interval);\n tabTrap(false, internalRef.current, rootNode);\n backgroundScrollTether(false);\n };\n }, [message, rootNode, messageTone]);\n\n return (\n <Portal container={rootNode}>\n <StyledPageSpinnerRoot\n data-component-id=\"PageSpinner\"\n role=\"dialog\"\n ref={mergedRef}\n {...getCleanProps(restProps)}\n >\n <StyledOverlay $darkBg={isOnDarkBg} />\n <StyledSpinnerCentre>\n <CircularProgress\n size={60}\n sx={isOnDarkBg ? { color: 'common.white' } : undefined}\n aria-hidden=\"true\"\n />\n {customMessageLayout ?? (\n <StyledSpinnerMessage $darkBg={isOnDarkBg}>{message}</StyledSpinnerMessage>\n )}\n {srText && <StyledScreenReaderOnly>{srText}</StyledScreenReaderOnly>}\n </StyledSpinnerCentre>\n </StyledPageSpinnerRoot>\n </Portal>\n );\n },\n);\n\nPageSpinner.displayName = 'ToolkitPageSpinner';\n","const getScrollWidth = (): number | null => {\n if (typeof document === 'undefined') {\n return null;\n }\n const documentWidth = document.documentElement.clientWidth;\n const windowWidth = window.innerWidth;\n return windowWidth - documentWidth;\n};\n\n/**\n * Locks/unlocks body scroll by injecting a style tag.\n * Call with `true` to lock, `false` to unlock.\n */\nexport const backgroundScrollTether = (on: boolean): null => {\n if (typeof document === 'undefined') {\n return null;\n }\n const id = 'backgroundScrollTether';\n const get = () => document.querySelector(`#${id}`);\n if (on) {\n if (!get()) {\n const style = document.createElement('style');\n style.id = id;\n style.innerText = `body { padding-right: ${getScrollWidth()}px; overflow-y: hidden; }`;\n document.body.appendChild(style);\n }\n } else {\n const style = get();\n if (style && style.parentNode) style.parentNode.removeChild(style);\n }\n return null;\n};\n","const FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nconst suppressKeys = (on: boolean, self: Element, root: Element | Document) => {\n if (!self || !root) return;\n\n const focusableElements = self.querySelectorAll(FOCUSABLE_SELECTOR);\n let startElement: Element | undefined;\n let endElement: Element | undefined;\n\n if (focusableElements && focusableElements.length >= 1) {\n startElement = focusableElements[0];\n endElement = focusableElements[focusableElements.length - 1];\n }\n\n const handleEvent = (event: KeyboardEvent) => {\n const activeElement = (root as Document).activeElement || document.activeElement;\n if (event.shiftKey && event.key === 'Tab') {\n if (activeElement === startElement && endElement) {\n event.preventDefault();\n (endElement as HTMLElement).focus();\n }\n } else if (event.key === 'Tab') {\n if (activeElement === endElement && startElement) {\n event.preventDefault();\n (startElement as HTMLElement).focus();\n }\n }\n };\n\n if (on) {\n self.addEventListener('keydown', handleEvent as EventListener, true);\n } else {\n self.removeEventListener('keydown', handleEvent as EventListener, true);\n }\n};\n\nconst injectTabTrap = (elem: Element, attr: string, cache: string, disablerValue: string) => {\n const currentIndex = elem.getAttribute(attr);\n elem.setAttribute(attr, disablerValue);\n elem.setAttribute(cache, currentIndex ?? '');\n};\n\nconst ejectTabTrap = (elem: Element, attr: string, cache: string) => {\n const priorIndex = elem.getAttribute(cache) || '';\n if (priorIndex) {\n elem.setAttribute(attr, priorIndex);\n } else {\n elem.removeAttribute(attr);\n }\n elem.removeAttribute(cache);\n};\n\n/**\n * Traps tab focus within `self`, disabling all focusable siblings within `root`.\n * Call with `on=true` to engage, `on=false` to release.\n */\nexport const tabTrap = (\n on: boolean,\n self: Element | null,\n root: Element | ShadowRoot = typeof document !== 'undefined' ? document.body : (null as any),\n) => {\n const applyTabTrap = (topElem: Element) => {\n [...topElem.querySelectorAll('*'), topElem].forEach((elem) => {\n if (elem.hasAttribute('aria-live')) return;\n\n const isSvg = elem.tagName.toLowerCase() === 'svg';\n const attr = isSvg ? 'focusable' : 'tabindex';\n const cache = `data-prior-${attr}`;\n const disablerValue = isSvg ? 'false' : '-1';\n const elemWasTouched = elem.hasAttribute(cache);\n\n if (on) {\n if (!elemWasTouched) {\n injectTabTrap(elem, attr, cache, disablerValue);\n injectTabTrap(elem, 'aria-hidden', 'data-prior-hidden', 'true');\n }\n } else {\n if (elemWasTouched) {\n ejectTabTrap(elem, attr, cache);\n ejectTabTrap(elem, 'aria-hidden', 'data-prior-hidden');\n }\n }\n });\n };\n\n [...(root as Element).children].forEach((topElem) => {\n if (topElem !== self) {\n applyTabTrap(topElem);\n }\n });\n\n if (root !== document.body) {\n [...document.body.children].forEach((topElem) => {\n const shadowHost = (root as ShadowRoot).host;\n if (!(topElem.contains(root as Node) || (shadowHost && topElem.contains(shadowHost)))) {\n applyTabTrap(topElem);\n }\n });\n }\n\n if (self) suppressKeys(on, self, root as Element);\n};\n","const A11Y_REGION_ID = 'a11y-region';\nconst DEFAULT_TONE = 'polite';\nconst DEFAULT_ROLE = 'status';\n\nlet clearTimer: ReturnType<typeof setTimeout>;\n\nfunction createA11yRegion(): HTMLDivElement {\n const region = document.createElement('div');\n region.setAttribute('id', A11Y_REGION_ID);\n region.setAttribute('role', DEFAULT_ROLE);\n region.setAttribute('aria-live', DEFAULT_TONE);\n region.setAttribute('aria-atomic', 'true');\n Object.assign(region.style, {\n border: '0',\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: '0',\n position: 'absolute',\n width: '1px',\n });\n return region;\n}\n\nexport function getA11yRegion(): HTMLElement | null {\n if (typeof document === 'undefined') return null;\n const existing = document.getElementById(A11Y_REGION_ID);\n if (existing) return existing;\n const region = createA11yRegion();\n document.body.appendChild(region);\n return region;\n}\n\n/**\n * Announces a message to screen readers via a live region.\n * Clears automatically after `clearAfter` ms (default 5s).\n */\nexport function setA11yMessage(\n messageText: string,\n messageTone?: string,\n messageRole?: string,\n clearAfter = 5000,\n): void {\n const region = getA11yRegion();\n if (!region) return;\n region.setAttribute('aria-live', messageTone ?? DEFAULT_TONE);\n region.setAttribute('role', messageRole ?? DEFAULT_ROLE);\n region.textContent = messageText || '';\n clearTimeout(clearTimer);\n clearTimer = setTimeout(() => {\n region.textContent = '';\n }, clearAfter);\n}\n","import { styled } from '@mui/material/styles';\nimport { alpha } from '@mui/material/styles';\n\n// Above MUI dialogs (1300) so the spinner always overlays everything\nconst PAGE_SPINNER_Z_INDEX = 1400;\n\ntype DarkBgProp = { $darkBg?: boolean };\n\nexport const StyledPageSpinnerRoot = styled('div')(() => ({\n position: 'relative',\n}));\n\nexport const StyledOverlay = styled('div', {\n shouldForwardProp: (prop) => prop !== '$darkBg',\n})<DarkBgProp>(({ theme, $darkBg = false }) => ({\n position: 'fixed',\n inset: 0,\n zIndex: PAGE_SPINNER_Z_INDEX,\n backgroundColor: $darkBg\n ? alpha(theme.tokens.colors.textPrimary, 0.9)\n : alpha(theme.palette.common.white, 0.9),\n}));\n\nexport const StyledSpinnerCentre = styled('div')(() => ({\n position: 'fixed',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n zIndex: PAGE_SPINNER_Z_INDEX + 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '16px',\n}));\n\nexport const StyledSpinnerMessage = styled('p', {\n shouldForwardProp: (prop) => prop !== '$darkBg',\n})<DarkBgProp>(({ theme, $darkBg = false }) => ({\n margin: 0,\n fontFamily: theme.tokens.typography.fontFamilyBase,\n fontSize: theme.tokens.typography.fontSizeLg,\n fontWeight: theme.tokens.typography.fontWeightRegular,\n lineHeight: theme.tokens.typography.lineHeightBase,\n color: $darkBg ? theme.palette.common.white : theme.tokens.colors.textPrimary,\n textAlign: 'center',\n}));\n\nexport const StyledScreenReaderOnly = styled('span')(() => ({\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0,0,0,0)',\n whiteSpace: 'nowrap',\n border: 0,\n}));\n","import React from 'react';\nimport MuiPagination from '@mui/material/Pagination';\nimport type { PaginationProps as MuiPaginationProps } from '@mui/material/Pagination';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledPaginationItem } from './Pagination.styles';\n\nexport type PaginationVariant = 'text' | 'outlined' | 'soft';\nexport type PaginationShape = 'circular' | 'rounded';\nexport type PaginationColor =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'info'\n | 'success'\n | 'warning'\n | 'error';\n\nexport interface PaginationProps\n extends Omit<MuiPaginationProps, 'variant' | 'color' | 'shape'> {\n /** Visual style variant */\n variant?: PaginationVariant;\n /** Shape of pagination items */\n shape?: PaginationShape;\n /** Color applied to the selected/active item */\n color?: PaginationColor;\n}\n\nexport const Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n function Pagination(\n { variant = 'text', shape = 'circular', color = 'default', ...restProps },\n ref,\n ) {\n return (\n <MuiPagination\n ref={ref}\n data-component-id=\"Pagination\"\n renderItem={(item) => (\n <StyledPaginationItem\n $variant={variant}\n $color={color}\n {...item}\n shape={shape}\n />\n )}\n {...getCleanProps(restProps)}\n />\n );\n },\n);\n\nPagination.displayName = 'ToolkitPagination';\n","import { styled, alpha } from '@mui/material/styles';\nimport type { Theme } from '@mui/material/styles';\nimport MuiPaginationItem from '@mui/material/PaginationItem';\nimport type { PaginationColor } from './Pagination';\n\nfunction getColorValue(theme: Theme, color: PaginationColor): string {\n switch (color) {\n case 'primary':\n return theme.tokens.colors.primary;\n case 'secondary':\n return theme.tokens.colors.secondary;\n case 'info':\n return theme.tokens.colors.info;\n case 'success':\n return theme.tokens.colors.success;\n case 'warning':\n return theme.tokens.colors.warning;\n case 'error':\n return theme.tokens.colors.error;\n default:\n return theme.tokens.colors.textPrimary;\n }\n}\n\ntype StyledItemProps = {\n $variant: 'text' | 'outlined' | 'soft';\n $color: PaginationColor;\n};\n\nexport const StyledPaginationItem = styled(MuiPaginationItem, {\n shouldForwardProp: (prop) => prop !== '$variant' && prop !== '$color',\n})<StyledItemProps>(({ theme, $variant, $color }) => {\n const colorValue = getColorValue(theme, $color);\n\n if ($variant === 'text') {\n return {\n '&.Mui-selected': {\n backgroundColor: alpha(colorValue, 0.08),\n color: colorValue,\n '&:hover': {\n backgroundColor: alpha(colorValue, 0.16),\n },\n },\n };\n }\n\n if ($variant === 'outlined') {\n return {\n border: `1px solid ${alpha(colorValue, 0.24)}`,\n '&.Mui-selected': {\n border: `1px solid ${alpha(colorValue, 0.8)}`,\n color: colorValue,\n backgroundColor: alpha(colorValue, 0.08),\n '&:hover': {\n backgroundColor: alpha(colorValue, 0.16),\n },\n },\n };\n }\n\n // soft variant\n return {\n '&.Mui-selected': {\n backgroundColor: alpha(colorValue, 0.16),\n color: colorValue,\n '&:hover': {\n backgroundColor: alpha(colorValue, 0.32),\n },\n },\n '&:hover': {\n backgroundColor: alpha(colorValue, 0.08),\n },\n };\n});\n","import React from 'react';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledParagraph } from './Paragraph.styles';\n\nexport interface ParagraphProps extends Omit<React.HTMLAttributes<HTMLParagraphElement>, 'color'> {\n /** Visual style variant */\n variant?: 'regular' | 'semibold' | 'bold' | 'overline' | 'primary' | 'secondary';\n /** Renders the correct text colour on a dark background */\n isOnDarkBg?: boolean;\n children: React.ReactNode;\n}\n\nexport const Paragraph = React.forwardRef<HTMLParagraphElement, ParagraphProps>(\n function Paragraph({ children, variant = 'regular', isOnDarkBg = false, ...restProps }, ref) {\n return (\n <StyledParagraph\n $variant={variant}\n $isOnDarkBg={isOnDarkBg}\n data-component-id=\"Paragraph\"\n {...getCleanProps(restProps)}\n ref={ref}\n >\n {children}\n </StyledParagraph>\n );\n },\n);\n\nParagraph.displayName = 'ToolkitParagraph';\n","import { styled } from '@mui/material/styles';\n\ntype StyledParagraphProps = {\n\t$variant?: 'regular' | 'semibold' | 'bold' | 'overline' | 'primary' | 'secondary';\n\t$isOnDarkBg?: boolean;\n};\n\nexport const StyledParagraph = styled('p', {\n\tshouldForwardProp: (prop) => prop !== '$variant' && prop !== '$isOnDarkBg',\n})<StyledParagraphProps>(({ theme, $variant = 'regular', $isOnDarkBg = false }) => ({\n\tmargin: 0,\n\tfontFamily: theme.tokens.typography.fontFamilyBase,\n\toutline: 'transparent',\n\tfontSize: theme.tokens.typography.fontSizeLg,\n\tlineHeight: theme.tokens.typography.lineHeightBase,\n\tcolor: $isOnDarkBg ? theme.palette.common.white : theme.tokens.colors.textPrimary,\n\n\t...($variant === 'regular' && {\n\t\tfontWeight: theme.tokens.typography.fontWeightRegular,\n\t}),\n\n\t...($variant === 'semibold' && {\n\t\tfontWeight: theme.tokens.typography.fontWeightSemiBold,\n\t}),\n\n\t...($variant === 'bold' && {\n\t\tfontWeight: theme.tokens.typography.fontWeightBold,\n\t}),\n\n\t...($variant === 'primary' && {\n\t\tfontWeight: theme.tokens.typography.fontWeightSemiBold,\n\t}),\n\n\t...($variant === 'secondary' && {\n\t\tfontWeight: theme.tokens.typography.fontWeightBold,\n\t}),\n\n\t...($variant === 'overline' && {\n\t\tcolor: $isOnDarkBg ? theme.tokens.colors.overlayLight75 : theme.tokens.colors.textSecondary,\n\t\tfontWeight: theme.tokens.typography.fontWeightBold,\n\t\tletterSpacing: '0.125rem',\n\t\ttextTransform: 'uppercase',\n\t}),\n}));\n","import React, { useState } from 'react';\nimport { TextField } from '../TextField';\nimport { PasswordCriteria, passwordValidator } from './PasswordCriteria';\nimport { StyledPasswordRoot, StyledPasswordInputWrapper } from './Password.styles';\nimport { getCleanProps } from '../../utils/getCleanProps';\n\nexport interface PasswordProps {\n isInvalid?: boolean;\n value?: string;\n label?: string;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, isCriteriaMet: boolean) => void;\n ariaDescribedby?: string;\n ariaLabelledby?: string;\n className?: string;\n id?: string;\n}\n\nexport const Password = React.forwardRef<HTMLInputElement, PasswordProps>(\n function Password(\n {\n isInvalid,\n value: initialValue,\n label = 'Password',\n onBlur,\n onChange,\n ariaDescribedby,\n ariaLabelledby,\n className,\n id,\n ...rest\n },\n ref,\n ) {\n const [value, setValue] = useState(initialValue ?? '');\n const [showCriteria, setShowCriteria] = useState(false);\n\n const handleFocus = () => {\n setShowCriteria(true);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n setShowCriteria(false);\n onBlur?.(event);\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n setValue(newValue);\n const validity = passwordValidator(newValue);\n const isCriteriaMet = Object.values(validity).every(Boolean);\n onChange?.(event, isCriteriaMet);\n };\n\n const criteriaId = id ? `${id}-criteria` : 'passwordCriteria';\n const cleanRest = getCleanProps(rest);\n\n return (\n <StyledPasswordRoot className={className} {...cleanRest}>\n <StyledPasswordInputWrapper>\n <TextField\n ref={ref}\n id={id}\n label={ariaLabelledby ? undefined : label}\n type=\"password\"\n showPasswordToggle\n value={value}\n error={isInvalid}\n inputProps={{\n 'aria-describedby': ariaDescribedby ?? criteriaId,\n 'aria-labelledby': ariaLabelledby,\n }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n </StyledPasswordInputWrapper>\n <PasswordCriteria show={showCriteria} value={value} id={criteriaId} />\n </StyledPasswordRoot>\n );\n },\n);\n\nPassword.displayName = 'ToolkitPassword';\n","import React from 'react';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport {\n StyledPasswordRule,\n StyledPasswordRuleIcon,\n StyledPasswordRuleText,\n StyledScreenReaderOnly,\n} from './PasswordRule.styles';\n\nexport interface PasswordRuleProps {\n valid?: boolean;\n rule?: string;\n idx?: number;\n}\n\nexport const PasswordRule = ({ valid = false, rule = '', idx }: PasswordRuleProps) => (\n <StyledPasswordRule\n className={valid ? 'PasswordRule--valid' : 'PasswordRule--invalid'}\n data-testid={`password-rule-${idx}`}\n >\n <StyledPasswordRuleIcon>\n {valid ? (\n <CheckCircleIcon fontSize=\"small\" aria-hidden=\"true\" />\n ) : (\n <CancelIcon fontSize=\"small\" aria-hidden=\"true\" />\n )}\n </StyledPasswordRuleIcon>\n <StyledPasswordRuleText>{rule}</StyledPasswordRuleText>\n <StyledScreenReaderOnly>{valid ? 'supplied' : 'not supplied'}</StyledScreenReaderOnly>\n </StyledPasswordRule>\n);\n\nPasswordRule.displayName = 'ToolkitPasswordRule';\n","import { styled } from '@mui/material/styles';\n\nexport const StyledPasswordRule = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.tokens.spacing.xs,\n padding: `${theme.tokens.spacing.xs} 0`,\n '&.PasswordRule--valid': {\n color: theme.tokens.colors.success,\n },\n '&.PasswordRule--invalid': {\n color: theme.tokens.colors.error,\n },\n}));\n\nexport const StyledPasswordRuleIcon = styled('span')({\n display: 'inline-flex',\n alignItems: 'center',\n flexShrink: 0,\n});\n\nexport const StyledPasswordRuleText = styled('span')(({ theme }) => ({\n fontSize: theme.tokens.typography.fontSizeSm,\n}));\n\nexport const StyledScreenReaderOnly = styled('span')({\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n});\n","import { styled } from '@mui/material/styles';\n\nexport const StyledPasswordCriteriaContainer = styled('div')<{ $show: boolean }>(\n ({ theme, $show }) => ({\n display: $show ? 'block' : 'none',\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: theme.tokens.zIndex.dropdown,\n marginTop: theme.tokens.spacing.xs,\n }),\n);\n\nexport const StyledPasswordRuleTitle = styled('div')(({ theme }) => ({\n color: theme.tokens.colors.textPrimary,\n fontSize: theme.tokens.typography.fontSizeSm,\n fontWeight: theme.tokens.typography.fontWeightMedium,\n padding: `${theme.tokens.spacing.xs} 0`,\n borderBottom: `1px solid ${theme.tokens.colors.border}`,\n marginBottom: theme.tokens.spacing.xs,\n}));\n","import React from 'react';\nimport { Card } from '../Card';\nimport { PasswordRule } from './PasswordRule';\nimport {\n StyledPasswordCriteriaContainer,\n StyledPasswordRuleTitle,\n} from './PasswordCriteria.styles';\n\nexport interface PasswordCriteriaProps {\n show?: boolean;\n value?: string;\n id?: string;\n}\n\nexport const PasswordRules = [\n { key: 'minLength', rule: 'Minimum 8 characters' },\n { key: 'lowercase', rule: 'At least one lowercase letter' },\n { key: 'uppercase', rule: 'At least one uppercase letter' },\n { key: 'digit', rule: 'At least one number' },\n { key: 'special', rule: 'At least one special character' },\n];\n\nexport const passwordValidator = (value: string): Record<string, boolean> => ({\n minLength: value.length >= 8,\n lowercase: /[a-z]/.test(value),\n uppercase: /[A-Z]/.test(value),\n digit: /[0-9]/.test(value),\n special: /[^A-Za-z0-9]/.test(value),\n});\n\nexport const PasswordCriteria = ({ show = false, value = '', id = 'passwordCriteria' }: PasswordCriteriaProps) => {\n const validity = passwordValidator(value);\n return (\n <StyledPasswordCriteriaContainer\n $show={show}\n aria-hidden={!show}\n id={id}\n data-testid=\"password-criteria\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <Card compact>\n <StyledPasswordRuleTitle>Password must contain:</StyledPasswordRuleTitle>\n {PasswordRules.map((item, idx) => (\n <PasswordRule key={item.key} valid={validity[item.key]} rule={item.rule} idx={idx} />\n ))}\n </Card>\n </StyledPasswordCriteriaContainer>\n );\n};\n\nPasswordCriteria.displayName = 'ToolkitPasswordCriteria';\n","import { styled } from '@mui/material/styles';\n\nexport const StyledPasswordRoot = styled('div')({\n position: 'relative',\n});\n\nexport const StyledPasswordInputWrapper = styled('div')({\n display: 'flex',\n position: 'relative',\n});\n","import React from 'react';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport {\n StyledSpinnerContainer,\n StyledSpinnerIconContainer,\n StyledSpinnerBackground,\n StyledSpinner,\n StyledSpinnerMessage,\n StyledScreenReaderOnly,\n} from './Spinner.styles';\nimport type { SpinnerSize } from './Spinner.styles';\n\nexport interface SpinnerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'role'> {\n /** Size of the spinner */\n size?: SpinnerSize;\n /** Message displayed below (or beside when isInline) the spinner */\n message?: React.ReactNode;\n /** Use light-on-dark colour scheme */\n isOnDarkBg?: boolean;\n /** Screen reader text when no visible message is provided */\n srText?: string;\n /** Display the spinner and message side by side */\n isInline?: boolean;\n}\n\nexport const Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n function Spinner(\n { size = 'sm', message, isOnDarkBg = false, srText, isInline = false, ...restProps },\n ref,\n ) {\n return (\n <StyledSpinnerContainer\n ref={ref}\n $inline={isInline}\n data-component-id=\"Spinner\"\n {...getCleanProps(restProps)}\n >\n <StyledSpinnerIconContainer $size={size} aria-hidden=\"true\">\n <StyledSpinnerBackground $size={size} $darkBg={isOnDarkBg} aria-hidden=\"true\" />\n <StyledSpinner $size={size} $darkBg={isOnDarkBg} aria-hidden=\"true\" />\n </StyledSpinnerIconContainer>\n {message && (\n <StyledSpinnerMessage $darkBg={isOnDarkBg} $inline={isInline}>\n {message}\n </StyledSpinnerMessage>\n )}\n {srText && <StyledScreenReaderOnly>{srText}</StyledScreenReaderOnly>}\n </StyledSpinnerContainer>\n );\n },\n);\n\nSpinner.displayName = 'ToolkitSpinner';\n","import { styled, alpha } from '@mui/material/styles';\n\nexport type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst spinnerSizing: Record<SpinnerSize, number> = {\n xs: 20,\n sm: 24,\n md: 40,\n lg: 56,\n xl: 72,\n};\n\ntype SizeProps = { $size: SpinnerSize };\ntype DarkBgProps = { $darkBg: boolean };\ntype InlineProps = { $inline: boolean };\n\nexport const StyledSpinnerContainer = styled('div', {\n shouldForwardProp: (prop) => prop !== '$inline',\n})<InlineProps>({}, ({ $inline }) => ({\n flex: '0 1 100%',\n display: 'flex',\n flexDirection: $inline ? 'row' : 'column',\n alignItems: 'center',\n}));\n\nexport const StyledSpinnerIconContainer = styled('div', {\n shouldForwardProp: (prop) => prop !== '$size' && prop !== '$darkBg',\n})<SizeProps>(({ $size }) => {\n const size = spinnerSizing[$size];\n return {\n position: 'relative',\n width: size,\n height: size,\n };\n});\n\nexport const StyledSpinnerBackground = styled('div', {\n shouldForwardProp: (prop) => prop !== '$size' && prop !== '$darkBg',\n})<SizeProps & DarkBgProps>(({ theme, $size, $darkBg }) => {\n const size = spinnerSizing[$size];\n const lineWidth = Math.round(size / 12);\n const borderColor = $darkBg\n ? alpha(theme.palette.common.white, 0.2)\n : alpha(theme.tokens.colors.textPrimary, 0.1);\n return {\n position: 'absolute',\n width: size,\n height: size,\n borderRadius: '50%',\n border: `${lineWidth}px solid ${borderColor}`,\n };\n});\n\nexport const StyledSpinner = styled('div', {\n shouldForwardProp: (prop) => prop !== '$size' && prop !== '$darkBg',\n})<SizeProps & DarkBgProps>(({ theme, $size, $darkBg }) => {\n const size = spinnerSizing[$size];\n const lineWidth = Math.round(size / 12);\n const animationSpeed = `${1 + size / 100}s`;\n const color = $darkBg ? theme.palette.common.white : theme.tokens.colors.primary;\n return {\n '@keyframes toolkit-spin': {\n '0%': { transform: 'rotate(0deg)' },\n '100%': { transform: 'rotate(360deg)' },\n },\n position: 'absolute',\n width: size,\n height: size,\n borderRadius: '50%',\n borderTop: '3px solid transparent',\n borderRight: '3px solid transparent',\n borderBottom: `${lineWidth}px solid ${color}`,\n borderLeft: `${lineWidth}px solid ${color}`,\n animation: `toolkit-spin ${animationSpeed} infinite linear`,\n };\n});\n\nexport const StyledSpinnerMessage = styled('span', {\n shouldForwardProp: (prop) => prop !== '$darkBg' && prop !== '$inline',\n})<DarkBgProps & InlineProps>(({ theme, $darkBg, $inline }) => ({\n fontFamily: theme.tokens.typography.fontFamilyBase,\n fontSize: theme.tokens.typography.fontSizeSm,\n color: $darkBg ? theme.palette.common.white : theme.tokens.colors.border,\n marginTop: $inline ? 0 : theme.spacing(1),\n marginLeft: $inline ? theme.spacing(1) : 0,\n}));\n\nexport const StyledScreenReaderOnly = styled('span')({\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0,0,0,0)',\n whiteSpace: 'nowrap',\n border: 0,\n});\n","import React from 'react';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledToggleWrapper, StyledSwitch, StyledFieldset, StyledLegend } from './Toggle.styles';\n\nexport interface ToggleProps extends Omit<React.HTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\n /** Unique name for the radio inputs */\n name: string;\n /** Whether the toggle is in the \"on\" state */\n checked?: boolean;\n /** Label displayed above the toggle */\n label?: string;\n /** Helper text displayed beneath the label */\n description?: string;\n /** Error message */\n error?: string;\n /** Callback with the new boolean value when the toggle changes */\n onChange?: (value: boolean) => void;\n /** Blur handler forwarded to both radio inputs */\n onBlur?: () => void;\n}\n\nexport function Toggle({\n name,\n checked = false,\n label,\n description,\n error,\n onChange,\n onBlur,\n ...restProps\n}: ToggleProps) {\n return (\n <StyledFieldset data-component-id=\"toggle\" {...getCleanProps(restProps)}>\n {label && <StyledLegend>{label}</StyledLegend>}\n {description && <FormHelperText>{description}</FormHelperText>}\n <StyledToggleWrapper>\n <StyledSwitch\n htmlFor={`${name}off`}\n selected={!checked}\n controlType=\"off\"\n >\n <input\n checked={!checked}\n id={`${name}off`}\n name={name}\n onChange={() => onChange?.(false)}\n onBlur={onBlur}\n type=\"radio\"\n readOnly={!onChange}\n />\n Off\n </StyledSwitch>\n <StyledSwitch\n htmlFor={`${name}on`}\n selected={checked}\n controlType=\"on\"\n >\n <input\n checked={checked}\n id={`${name}on`}\n name={name}\n onChange={() => onChange?.(true)}\n onBlur={onBlur}\n type=\"radio\"\n readOnly={!onChange}\n />\n On\n </StyledSwitch>\n </StyledToggleWrapper>\n {error && <FormHelperText error>{error}</FormHelperText>}\n </StyledFieldset>\n );\n}\n\nToggle.displayName = 'ToolkitToggle';\n","import { styled } from '@mui/material/styles';\n\nexport const StyledFieldset = styled('fieldset')(({ theme }) => ({\n border: 'none',\n margin: 0,\n padding: 0,\n minWidth: 0,\n}));\n\nexport const StyledLegend = styled('legend')(({ theme }) => ({\n fontFamily: theme.tokens.typography.fontFamilyBase,\n fontSize: theme.tokens.typography.fontSizeLg,\n fontWeight: theme.tokens.typography.fontWeightRegular,\n color: theme.tokens.colors.textPrimary,\n marginBottom: theme.spacing(1),\n padding: 0,\n}));\n\ninterface StyledSwitchProps {\n selected?: boolean;\n controlType?: 'off' | 'on';\n}\n\nexport const StyledToggleWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'row',\n width: theme.spacing(15),\n height: theme.spacing(6),\n backgroundColor: theme.palette.common.white,\n border: `1px solid ${theme.tokens.colors.border}`,\n borderRadius: theme.tokens.borderRadius.md,\n}));\n\nexport const StyledSwitch = styled('label', {\n shouldForwardProp: (prop) => prop !== 'selected' && prop !== 'controlType',\n})<StyledSwitchProps>(({ theme, selected, controlType }) => ({\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '54px',\n fontSize: theme.tokens.typography.fontSizeMd,\n fontFamily: theme.tokens.typography.fontFamilyBase,\n fontWeight: theme.tokens.typography.fontWeightBold,\n color: theme.tokens.colors.textPrimary,\n borderRadius: theme.tokens.borderRadius.md,\n userSelect: 'none',\n cursor: 'pointer',\n transition: `all ${theme.tokens.transitions.durationBase} ease`,\n\n '&::before': {\n position: 'absolute',\n top: 0,\n left: 0,\n display: 'block',\n content: '\"\"',\n border: '1px solid transparent',\n width: '100%',\n height: '100%',\n borderRadius: theme.tokens.borderRadius.md,\n visibility: 'hidden',\n },\n\n '&:active': {\n color: theme.palette.common.white,\n },\n\n '& input': {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n },\n\n ...(!selected && {\n '&:hover': {\n textDecoration: 'underline',\n backgroundColor: theme.tokens.colors.border,\n '&:active': {\n textDecoration: 'none',\n },\n '&::before': {\n visibility: 'visible',\n },\n },\n }),\n\n ...(selected && {\n color: theme.palette.common.white,\n '&::before': {\n visibility: 'visible',\n borderWidth: '3px',\n },\n }),\n\n ...(controlType === 'off' && {\n margin: theme.spacing(0.5),\n '&:focus-within': {\n boxShadow: `inset 0 0 0 3px ${theme.tokens.colors.border}`,\n },\n '&:active': {\n backgroundColor: theme.tokens.colors.backgroundSubtle,\n boxShadow: `inset 3px 3px 0 0 ${theme.tokens.colors.border}, inset -3px -3px 0 0 ${theme.tokens.colors.border}`,\n },\n ...(selected && {\n backgroundColor: theme.tokens.colors.textPrimary,\n }),\n }),\n\n ...(controlType === 'on' && {\n margin: `${theme.spacing(0.5)} ${theme.spacing(0.5)} ${theme.spacing(0.5)} 0`,\n '&:focus-within': {\n boxShadow: `inset 0 0 0 3px ${theme.tokens.colors.primary}`,\n },\n '&:active': {\n backgroundColor: theme.tokens.colors.primary,\n boxShadow: `inset 3px 3px 0 0 ${theme.tokens.colors.primary}, inset -3px -3px 0 0 ${theme.tokens.colors.primary}`,\n },\n ...(selected && {\n backgroundColor: theme.tokens.colors.primary,\n }),\n }),\n}));\n","import React from 'react';\nimport {\n Table as MuiTable,\n TableProps as MuiTableProps,\n TableHead as MuiTableHead,\n TableHeadProps as MuiTableHeadProps,\n TableBody as MuiTableBody,\n TableBodyProps as MuiTableBodyProps,\n TableRow as MuiTableRow,\n TableRowProps as MuiTableRowProps,\n TableCell as MuiTableCell,\n TableCellProps as MuiTableCellProps,\n TableContainer as MuiTableContainer,\n TableContainerProps as MuiTableContainerProps,\n TablePagination as MuiTablePagination,\n TableSortLabel as MuiTableSortLabel,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport type TableProps = MuiTableProps;\nexport type TableHeadProps = MuiTableHeadProps;\nexport type TableBodyProps = MuiTableBodyProps;\nexport type TableRowProps = MuiTableRowProps;\nexport type TableCellProps = MuiTableCellProps;\nexport type TableContainerProps = MuiTableContainerProps;\n\nconst StyledTableContainer = styled(MuiTableContainer)(() => ({\n overflowX: 'auto',\n}));\n\nconst StyledHeadCell = styled(MuiTableCell)(({ theme }) => ({\n fontWeight: theme.tokens.components.table.headerFontWeight,\n backgroundColor: theme.tokens.components.table.headerBackground,\n borderBottomWidth: theme.tokens.components.table.borderWidth,\n borderBottomColor: theme.tokens.components.table.borderColor,\n}));\n\nexport function Table(props: TableProps) {\n return <MuiTable {...props} />;\n}\n\nexport function TableHead(props: TableHeadProps) {\n return <MuiTableHead {...props} />;\n}\n\nexport function TableBody(props: TableBodyProps) {\n return <MuiTableBody {...props} />;\n}\n\nexport function TableRow(props: TableRowProps) {\n return <MuiTableRow {...props} />;\n}\n\nexport function TableCell(props: TableCellProps) {\n return <MuiTableCell {...props} />;\n}\n\nexport function TableHeadCell(props: TableCellProps) {\n return <StyledHeadCell component=\"th\" scope=\"col\" {...props} />;\n}\n\nexport function TableContainer(props: TableContainerProps) {\n return <StyledTableContainer {...props} />;\n}\n\nexport const TablePagination = MuiTablePagination;\nexport const TableSortLabel = MuiTableSortLabel;\n\nTable.displayName = 'ToolkitTable';\nTableHead.displayName = 'ToolkitTableHead';\nTableBody.displayName = 'ToolkitTableBody';\nTableRow.displayName = 'ToolkitTableRow';\nTableCell.displayName = 'ToolkitTableCell';\nTableHeadCell.displayName = 'ToolkitTableHeadCell';\nTableContainer.displayName = 'ToolkitTableContainer';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H1Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H1 = React.forwardRef<HTMLElement, H1Props>(\n function H1({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h1\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH1.displayName = 'ToolkitH1';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H2Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H2 = React.forwardRef<HTMLElement, H2Props>(\n function H2({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h2\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH2.displayName = 'ToolkitH2';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H3Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H3 = React.forwardRef<HTMLElement, H3Props>(\n function H3({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h3\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH3.displayName = 'ToolkitH3';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H4Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H4 = React.forwardRef<HTMLElement, H4Props>(\n function H4({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h4\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH4.displayName = 'ToolkitH4';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H5Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H5 = React.forwardRef<HTMLElement, H5Props>(\n function H5({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h5\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH5.displayName = 'ToolkitH5';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H6Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H6 = React.forwardRef<HTMLElement, H6Props>(\n function H6({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h6\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH6.displayName = 'ToolkitH6';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface Subtitle1Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const Subtitle1 = React.forwardRef<HTMLElement, Subtitle1Props>(\n function Subtitle1({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"subtitle1\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nSubtitle1.displayName = 'ToolkitSubtitle1';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface Subtitle2Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const Subtitle2 = React.forwardRef<HTMLElement, Subtitle2Props>(\n function Subtitle2({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"subtitle2\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nSubtitle2.displayName = 'ToolkitSubtitle2';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface Body1Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const Body1 = React.forwardRef<HTMLElement, Body1Props>(\n function Body1({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"body1\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nBody1.displayName = 'ToolkitBody1';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface Body2Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const Body2 = React.forwardRef<HTMLElement, Body2Props>(\n function Body2({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"body2\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nBody2.displayName = 'ToolkitBody2';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface CaptionProps extends Omit<TypographyProps, 'variant'> {}\n\nexport const Caption = React.forwardRef<HTMLElement, CaptionProps>(\n function Caption({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"caption\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nCaption.displayName = 'ToolkitCaption';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface OverlineProps extends Omit<TypographyProps, 'variant'> {}\n\nexport const Overline = React.forwardRef<HTMLElement, OverlineProps>(\n function Overline({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"overline\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nOverline.displayName = 'ToolkitOverline';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface TypographyButtonProps extends Omit<TypographyProps, 'variant'> {}\n\nexport const TypographyButton = React.forwardRef<HTMLElement, TypographyButtonProps>(\n function TypographyButton({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"button\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nTypographyButton.displayName = 'ToolkitTypographyButton';\n"],"mappings":"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","names":["MuiThemeProvider","import_react","import_material","import_styles","import_jsx_runtime","MuiTextField","React","TextField","import_jsx_runtime","React","ABNInput","InputAdornment","CircularProgress","import_material","import_styles","import_jsx_runtime","MuiButton","import_material","import_jsx_runtime","MuiChip","import_material","import_styles","import_jsx_runtime","MuiCard","MuiCardContent","MuiCardHeader","MuiCardActions","import_material","import_jsx_runtime","MuiAlert","MuiAlertTitle","import_material","import_styles","import_jsx_runtime","MuiAccordion","MuiAccordionSummary","ExpandMoreIcon","MuiAccordionDetails","import_styles","import_jsx_runtime","MuiAvatar","import_material","import_jsx_runtime","MuiToggleButton","MuiToggleButtonGroup","import_react","import_Button","import_TextField","import_styles","import_jsx_runtime","MuiDatePicker","MuiDesktopDatePicker","MuiMobileDatePicker","MuiDateField","MuiStaticDatePicker","MuiTimePicker","MuiDesktopTimePicker","MuiMobileTimePicker","MuiTimeField","MuiStaticTimePicker","MuiDateTimePicker","MuiDesktopDateTimePicker","MuiMobileDateTimePicker","MuiDateTimeField","MuiStaticDateTimePicker","MuiDateCalendar","Box","Button","Dialog","DialogContent","DialogActions","TextField","import_material","import_jsx_runtime","MuiGrid2","import_react","import_styles","import_material","import_jsx_runtime","React","IconText","import_Box","import_styles","Box","import_jsx_runtime","ChevronRightIcon","import_react","import_Box","import_styles","Box","import_jsx_runtime","SvgIcon","OpenInNewIcon","React","Link","import_react","import_Box","import_styles","Box","import_jsx_runtime","React","LogoLink","import_react","import_CircularProgress","import_styles","StyledScreenReaderOnly","import_jsx_runtime","React","PageSpinner","Portal","CircularProgress","StyledScreenReaderOnly","import_react","import_styles","MuiPaginationItem","import_jsx_runtime","React","Pagination","MuiPagination","import_react","import_styles","import_jsx_runtime","React","Paragraph","import_react","import_styles","StyledScreenReaderOnly","import_jsx_runtime","CheckCircleIcon","CancelIcon","StyledScreenReaderOnly","import_styles","import_jsx_runtime","import_styles","import_jsx_runtime","React","Password","import_react","import_styles","StyledSpinnerMessage","StyledScreenReaderOnly","import_jsx_runtime","React","Spinner","StyledSpinnerMessage","StyledScreenReaderOnly","import_styles","import_jsx_runtime","FormHelperText","import_material","import_styles","import_jsx_runtime","MuiTableContainer","MuiTableCell","MuiTable","MuiTableHead","MuiTableBody","MuiTableRow","MuiTablePagination","MuiTableSortLabel","import_react","import_material","import_jsx_runtime","React","H1","import_react","import_material","import_jsx_runtime","React","H2","import_react","import_material","import_jsx_runtime","React","H3","import_react","import_material","import_jsx_runtime","React","H4","import_react","import_material","import_jsx_runtime","React","H5","import_react","import_material","import_jsx_runtime","React","H6","import_react","import_material","import_jsx_runtime","React","Subtitle1","import_react","import_material","import_jsx_runtime","React","Subtitle2","import_react","import_material","import_jsx_runtime","React","Body1","import_react","import_material","import_jsx_runtime","React","Body2","import_react","import_material","import_jsx_runtime","React","Caption","import_react","import_material","import_jsx_runtime","React","Overline","import_react","import_material","import_jsx_runtime","React","TypographyButton"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/ThemeProvider.tsx","../src/themes/defaultTheme.ts","../src/themes/mergeTheme.ts","../src/themes/theme1/index.ts","../src/themes/theme2/index.ts","../src/themes/cps/index.ts","../src/themes/registry.ts","../src/themes/config.ts","../src/themes/createMuiTheme.ts","../src/components/ABNInput/ABNInput.tsx","../src/components/TextField/TextField.tsx","../src/utils/getCleanProps.ts","../src/utils/formatABN.ts","../src/components/Button/Button.tsx","../src/components/Chip/Chip.tsx","../src/components/Card/Card.tsx","../src/components/Alert/Alert.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Avatar/Avatar.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/DatePicker/DatePicker.tsx","../src/foundation/Grid/Grid.tsx","../src/components/IconText/IconText.tsx","../src/components/IconText/IconText.styles.tsx","../src/components/InternalLinkItem/InternalLinkItem.tsx","../src/components/InternalLinkItem/InternalLinkItem.styles.tsx","../src/components/Link/Link.tsx","../src/components/Link/Link.styles.tsx","../src/components/LogoLink/LogoLink.tsx","../src/components/LogoLink/LogoLink.styles.tsx","../src/components/PageSpinner/PageSpinner.tsx","../src/utils/backgroundScrollTether.ts","../src/utils/tabTrap.ts","../src/utils/a11yAnnouncer.ts","../src/components/PageSpinner/PageSpinner.styles.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/Pagination.styles.tsx","../src/components/Paragraph/Paragraph.tsx","../src/components/Paragraph/Paragraph.styles.tsx","../src/components/Password/Password.tsx","../src/components/Password/PasswordRule.tsx","../src/components/Password/PasswordRule.styles.tsx","../src/components/Password/PasswordCriteria.styles.tsx","../src/components/Password/PasswordCriteria.tsx","../src/components/Password/Password.styles.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Spinner/Spinner.styles.tsx","../src/components/Toggle/Toggle.tsx","../src/components/Toggle/Toggle.styles.tsx","../src/components/Table/Table.tsx","../src/foundation/H1/H1.tsx","../src/foundation/H2/H2.tsx","../src/foundation/H3/H3.tsx","../src/foundation/H4/H4.tsx","../src/foundation/H5/H5.tsx","../src/foundation/H6/H6.tsx","../src/foundation/Subtitle1/Subtitle1.tsx","../src/foundation/Subtitle2/Subtitle2.tsx","../src/foundation/Body1/Body1.tsx","../src/foundation/Body2/Body2.tsx","../src/foundation/Caption/Caption.tsx","../src/foundation/Overline/Overline.tsx","../src/foundation/TypographyButton/TypographyButton.tsx"],"sourcesContent":["// ─── Theme Provider ────────────────────────────────────────────────────────────\nexport { ToolkitThemeProvider } from './ThemeProvider';\n\n// ─── Theme Utilities ───────────────────────────────────────────────────────────\nexport { getThemeTokens, themeRegistry } from './themes/registry';\nexport type { ThemeName } from './themes/registry';\nexport { createMuiTheme } from './themes/createMuiTheme';\nexport { resolveThemeName } from './themes/config';\n\n// ─── Token Types ───────────────────────────────────────────────────────────────\nexport type {\n ThemeTokens,\n ColorTokens,\n TypographyTokens,\n SpacingTokens,\n BorderRadiusTokens,\n ShadowTokens,\n TransitionTokens,\n ZIndexTokens,\n ComponentTokens,\n} from './themes/tokens';\n\n// ─── Components ────────────────────────────────────────────────────────────────\nexport { ABNInput } from './components/ABNInput';\nexport type { ABNInputProps } from './components/ABNInput';\n\nexport { Button } from './components/Button';\nexport type { ButtonProps } from './components/Button';\n\nexport { Chip } from './components/Chip';\nexport type { ChipProps } from './components/Chip';\n\nexport { Card, CardContent, CardHeader, CardActions } from './components/Card';\nexport type { CardProps, CardHeaderProps, CardActionsProps } from './components/Card';\n\nexport { TextField } from './components/TextField';\nexport type { TextFieldProps } from './components/TextField';\n\nexport { Alert, AlertTitle } from './components/Alert';\nexport type { AlertProps, AlertTitleProps } from './components/Alert';\n\nexport { Accordion, AccordionSummary, AccordionDetails, StandaloneAccordion } from './components/Accordion';\nexport type { AccordionProps, AccordionSummaryProps, AccordionDetailsProps } from './components/Accordion';\n\nexport { Avatar, AvatarGroup } from './components/Avatar';\nexport type { AvatarProps, AvatarGroupProps, AvatarSize } from './components/Avatar';\n\nexport { ToggleButton, ToggleButtonGroup } from './components/ToggleButton';\nexport type { ToggleButtonProps, ToggleButtonGroupProps } from './components/ToggleButton';\n\nexport {\n DateLocalizationProvider,\n DatePicker,\n DesktopDatePicker,\n MobileDatePicker,\n DateField,\n StaticDatePicker,\n TimePicker,\n DesktopTimePicker,\n MobileTimePicker,\n TimeField,\n StaticTimePicker,\n DateTimePicker,\n DesktopDateTimePicker,\n MobileDateTimePicker,\n DateTimeField,\n StaticDateTimePicker,\n DateCalendar,\n DateRangePickerInput,\n DateRangePickerCalendar,\n} from './components/DatePicker';\nexport type {\n DateLocalizationProviderProps,\n DatePickerProps,\n DesktopDatePickerProps,\n MobileDatePickerProps,\n DateFieldProps,\n StaticDatePickerProps,\n TimePickerProps,\n DesktopTimePickerProps,\n MobileTimePickerProps,\n TimeFieldProps,\n StaticTimePickerProps,\n DateTimePickerProps,\n DesktopDateTimePickerProps,\n MobileDateTimePickerProps,\n DateTimeFieldProps,\n StaticDateTimePickerProps,\n DateCalendarProps,\n DateRangeValue,\n DateRangePickerInputProps,\n DateRangePickerCalendarProps,\n} from './components/DatePicker';\n\nexport { Grid } from './foundation/Grid';\nexport type { GridProps } from './foundation/Grid';\n\nexport { IconText } from './components/IconText';\nexport type { IconTextProps, IconTextSymbol } from './components/IconText';\n\nexport { InternalLinkItem } from './components/InternalLinkItem';\nexport type { InternalLinkItemProps } from './components/InternalLinkItem';\n\nexport { Link, Variant } from './components/Link';\nexport type { LinkProps } from './components/Link';\n\nexport { LogoLink } from './components/LogoLink';\nexport type { LogoLinkProps } from './components/LogoLink';\n\nexport { PageSpinner } from './components/PageSpinner';\nexport type { PageSpinnerProps } from './components/PageSpinner';\n\nexport { Pagination } from './components/Pagination';\nexport type { PaginationProps, PaginationVariant, PaginationShape, PaginationColor } from './components/Pagination';\n\n\nexport { Paragraph } from './components/Paragraph';\nexport type { ParagraphProps } from './components/Paragraph';\n\nexport { Password, PasswordCriteria, PasswordRule, PasswordRules, passwordValidator } from './components/Password';\nexport type { PasswordProps, PasswordCriteriaProps, PasswordRuleProps } from './components/Password';\n\nexport { Spinner } from './components/Spinner';\nexport type { SpinnerProps, SpinnerSize } from './components/Spinner';\n\nexport { Toggle } from './components/Toggle';\nexport type { ToggleProps } from './components/Toggle';\n\nexport {\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n TableHeadCell,\n TableContainer,\n TablePagination,\n TableSortLabel,\n} from './components/Table';\nexport type {\n TableProps,\n TableHeadProps,\n TableBodyProps,\n TableRowProps,\n TableCellProps,\n TableContainerProps,\n TablePaginationProps,\n TableSortLabelProps,\n} from './components/Table';\n\n// ─── Foundation ────────────────────────────────────────────────────────────────\nexport { H1, H2, H3, H4, H5, H6, Subtitle1, Subtitle2, Body1, Body2, Caption, Overline, TypographyButton } from './foundation';\nexport type { H1Props, H2Props, H3Props, H4Props, H5Props, H6Props, Subtitle1Props, Subtitle2Props, Body1Props, Body2Props, CaptionProps, OverlineProps, TypographyButtonProps } from './foundation';\n","import React from 'react';\nimport { ThemeProvider as MuiThemeProvider, CssBaseline } from '@mui/material';\nimport { ThemeName, getThemeTokens } from './themes/registry';\nimport { resolveThemeName } from './themes/config';\nimport { createMuiTheme } from './themes/createMuiTheme';\n\ninterface ToolkitThemeProviderProps {\n /**\n * Explicitly override which theme to use.\n *\n * If omitted, the theme is read from the environment variable\n * configured in your app's .env file (VITE_THEME, REACT_APP_THEME,\n * or NEXT_PUBLIC_THEME).\n *\n * Passing this prop is useful in tests, Storybook, or when you want\n * to let a user switch themes at runtime.\n */\n theme?: ThemeName;\n children: React.ReactNode;\n /**\n * Inject MUI's CssBaseline (recommended for normalizing browser styles).\n * Defaults to true.\n */\n injectCssBaseline?: boolean;\n /**\n * Enable dark mode. When true, palette.mode is set to 'dark' and\n * component overrides adapt accordingly.\n */\n darkMode?: boolean;\n}\n\n/**\n * Drop-in ThemeProvider for any app using the mui-ui-toolkit.\n *\n * Usage in your app root:\n *\n * // .env\n * VITE_THEME=theme2\n *\n * // main.tsx\n * import { ToolkitThemeProvider } from '@mui-ui-toolkit/core';\n *\n * <ToolkitThemeProvider>\n * <App />\n * </ToolkitThemeProvider>\n *\n * Or to override at runtime (e.g. user preference):\n *\n * <ToolkitThemeProvider theme=\"theme1\">\n * <App />\n * </ToolkitThemeProvider>\n */\nexport function ToolkitThemeProvider({\n theme,\n children,\n injectCssBaseline = true,\n darkMode = false,\n}: ToolkitThemeProviderProps) {\n const themeName = theme ?? resolveThemeName();\n const tokens = getThemeTokens(themeName);\n const muiTheme = createMuiTheme(tokens, darkMode);\n\n return (\n <MuiThemeProvider theme={muiTheme}>\n {injectCssBaseline && <CssBaseline />}\n {children}\n </MuiThemeProvider>\n );\n}\n","import { ThemeTokens } from './tokens';\n\n/**\n * Default theme — the baseline every theme builds on.\n *\n * Contains all values that are shared across themes (spacing, zIndex,\n * component sizes/paddings, etc.) plus neutral placeholder values for\n * brand-specific tokens (colors, shadows, typography fonts).\n *\n * Themes only need to override what differs from these defaults.\n */\nconst defaultTheme: ThemeTokens = {\n colors: {\n primary: '#BE0D00',\n primaryDark: '#003c8f',\n primaryLight: '#5e92f3',\n primaryContrast: '#ffffff',\n\n secondary: '#c95109',\n secondaryDark: '#38006b',\n secondaryLight: '#9c4dcc',\n secondaryContrast: '#ffffff',\n\n success: '#1A6D29',\n warning: '#E6920A',\n error: '#990000',\n info: '#0288D1',\n\n background: '#F5F7FA',\n backgroundPaper: '#ffffff',\n backgroundSubtle: '#EEF2F7',\n\n textPrimary: '#1A2340',\n textSecondary: '#546080',\n textDisabled: '#A0AABF',\n\n divider: '#DDE3EE',\n border: '#C5CFE0',\n borderFocus: '#1565C0',\n\n overlayLight: 'rgba(255, 255, 255, 0.8)',\n overlayDark: 'rgba(0, 0, 0, 0.12)',\n\n overlayLight60: 'rgba(255, 255, 255, 0.6)',\n overlayLight70: 'rgba(255, 255, 255, 0.7)',\n overlayLight75: 'rgba(255, 255, 255, 0.75)',\n overlayLight85: 'rgba(255, 255, 255, 0.85)',\n\n colorRed: '#FF5630',\n colorAmber: '#FFAB00',\n colorOrange: '#FF8B00',\n colorGreen: '#36B37E',\n colorBlue: '#0065FF',\n colorGrey: '#6B778C',\n },\n\n typography: {\n fontFamilyBase: '\"Source Sans Pro\", sans-serif',\n fontFamilyMono: '\"Inter\", \"Roboto\", \"Helvetica Neue\", Arial, sans-serif',\n\n // ── Sizes (identical across all themes) ──────────────────────────────\n fontSizeXs: '0.625rem', // 10px\n fontSizeSm: '0.75rem', // 12px\n fontSizeMd: '0.875rem', // 14px\n fontSizeLg: '1rem', // 16px\n fontSizeXl: '1.125rem', // 18px\n fontSize2xl: '1.375rem', // 22px\n fontSize3xl: '1.75rem', // 28px\n fontSize4xl: '2.25rem', // 36px\n\n // ── Weights (identical across all themes) ─────────────────────────────\n fontWeightLight: 300,\n fontWeightRegular: 400,\n fontWeightMedium: 500,\n fontWeightSemiBold: 600,\n fontWeightBold: 700,\n\n lineHeightTight: 1.2,\n lineHeightBase: 1.5,\n lineHeightRelaxed: 1.75,\n\n letterSpacingTight: '-0.02em',\n letterSpacingBase: '0em',\n letterSpacingWide: '0.06em',\n },\n\n // ── Spacing (identical across all themes) ──────────────────────────────\n spacing: {\n unit: 8,\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n xxl: '48px',\n },\n\n borderRadius: {\n none: '0px',\n xs: '2px',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n full: '9999px',\n },\n\n shadows: {\n none: 'none',\n xs: '0 1px 2px rgba(0, 0, 0, 0.08)',\n sm: '0 2px 6px rgba(0, 0, 0, 0.10)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.14)',\n xl: '0 16px 48px rgba(0, 0, 0, 0.18)',\n },\n\n transitions: {\n durationFast: '120ms',\n durationBase: '200ms',\n durationSlow: '350ms',\n easingDefault: 'cubic-bezier(0.4, 0, 0.2, 1)',\n easingIn: 'cubic-bezier(0.4, 0, 1, 1)',\n easingOut: 'cubic-bezier(0, 0, 0.2, 1)',\n },\n\n // ── Z-index (identical across all themes) ──────────────────────────────\n zIndex: {\n base: 0,\n dropdown: 100,\n sticky: 200,\n overlay: 300,\n modal: 400,\n popover: 500,\n toast: 600,\n tooltip: 700,\n },\n\n components: {\n footer: {\n background: '#003c8f',\n textColor: 'rgba(255, 255, 255, 0.7)',\n linkColor: 'rgba(255, 255, 255, 0.7)',\n linkHoverColor: '#ffffff',\n },\n\n icon: {\n xs: '12px',\n sm: '16px',\n md: '20px',\n lg: '24px',\n xl: '28px',\n xxl: '32px',\n xxxl: '36px',\n display: '56px',\n },\n\n button: {\n // Sizes & paddings (identical across themes)\n paddingX: '12px',\n paddingY: '6px',\n paddingXSm: '8px',\n paddingYSm: '4px',\n paddingXLg: '16px',\n paddingYLg: '8px',\n paddingXXl: '16px',\n paddingYXl: '8px',\n fontSizeSm: '0.8125rem',\n fontSizeMd: '0.875rem',\n fontSizeLg: '0.9375rem',\n heightSm: '30px',\n heightMd: '36px',\n heightLg: '48px',\n heightXl: '56px',\n // Typography & style (identical across themes)\n borderWidth: '1.5px',\n fontWeight: 700,\n letterSpacing: '0em',\n textTransform: 'none',\n iconGap: '8px',\n // Brand-specific — overridden per theme\n borderRadius: '8px',\n minWidth: '200px'\n },\n\n input: {\n // Sizes & paddings (identical across themes)\n paddingX: '14px',\n paddingY: '10px',\n borderWidthFocus: '2px',\n background: '#ffffff',\n labelFontSize: '0.875rem',\n helperFontSize: '0.75rem',\n // Brand-specific — overridden per theme\n borderRadius: '8px',\n borderWidth: '1px',\n backgroundDisabled: '#F5F7FA',\n minHeight: '44px',\n },\n\n card: {\n // Layout (identical across themes)\n padding: '24px',\n paddingCompact: '16px',\n borderWidth: '1px',\n background: '#ffffff',\n // Brand-specific — overridden per theme\n borderRadius: '12px',\n },\n\n // ── Chip (identical across all themes) ───────────────────────────────\n chip: {\n height: '32px',\n heightSm: '24px',\n paddingX: '12px',\n borderRadius: '9999px',\n fontSize: '0.8125rem',\n fontWeight: 500,\n iconSize: '16px',\n },\n\n // ── Badge (identical across all themes) ──────────────────────────────\n badge: {\n height: '20px',\n minWidth: '20px',\n paddingX: '6px',\n borderRadius: '9999px',\n fontSize: '0.6875rem',\n fontWeight: 700,\n borderWidth: '2px',\n },\n\n tooltip: {\n paddingX: '10px',\n paddingY: '6px',\n fontSize: '0.75rem',\n maxWidth: '280px',\n color: '#ffffff',\n // Brand-specific — overridden per theme\n borderRadius: '6px',\n background: '#1A2340',\n },\n\n dialog: {\n // Layout (identical across themes)\n padding: '32px',\n maxWidth: '600px',\n background: '#ffffff',\n // Brand-specific — overridden per theme\n borderRadius: '16px',\n },\n\n table: {\n // Layout (identical across themes)\n cellPaddingX: '16px',\n headerFontWeight: 600,\n borderWidth: '1px',\n // Brand-specific — overridden per theme\n cellPaddingY: '12px',\n headerBackground: '#EEF2F7',\n rowHoverBackground: '#F5F7FA',\n borderColor: '#DDE3EE',\n },\n\n avatar: {\n // Sizes (identical across themes)\n sizeXs: '24px',\n sizeSm: '32px',\n sizeMd: '40px',\n sizeLg: '56px',\n sizeXl: '80px',\n sizeXxl: '128px',\n // Style (identical across themes)\n borderRadius: '50%',\n groupSpacing: '-8px',\n groupBorderWidth: '2px',\n // Brand-specific — overridden per theme\n borderRadiusRounded: '12px',\n },\n\n divider: {\n thickness: '1px',\n // Brand-specific — overridden per theme\n color: '#DDE3EE',\n },\n\n alert: {\n // Layout (identical across themes)\n padding: '6px 16px',\n // Brand-specific — overridden per theme\n borderRadius: '8px',\n },\n\n accordion: {\n // Layout (identical across themes)\n standaloneRadius: '16px',\n summaryPaddingX: '16px',\n summaryPaddingY: '16px',\n summaryFontWeight: 600,\n detailsPaddingX: '16px',\n detailsPaddingBottom: '16px',\n standaloneBackground: 'rgba(145, 158, 171, 0.08)',\n standaloneBackgroundExpanded: 'rgba(145, 158, 171, 0.16)',\n // Brand-specific — overridden per theme\n borderRadius: '8px',\n },\n\n toggleButton: {\n borderRadius: '8px',\n borderWidth: '1px',\n paddingXSm: '7px',\n paddingYSm: '5px',\n paddingXMd: '11px',\n paddingYMd: '11px',\n paddingXLg: '15px',\n paddingYLg: '15px',\n fontWeight: 700,\n },\n },\n};\n\nexport default defaultTheme;\n","import { ThemeTokens, ThemeOverrides } from './tokens';\n\nfunction isPlainObject(val: unknown): val is Record<string, unknown> {\n return typeof val === 'object' && val !== null && !Array.isArray(val);\n}\n\nfunction deepMerge<T>(base: T, overrides: Record<string, unknown>): T {\n const result: Record<string, unknown> = { ...(base as Record<string, unknown>) };\n for (const key of Object.keys(overrides)) {\n const baseVal = result[key];\n const overrideVal = overrides[key];\n if (isPlainObject(baseVal) && isPlainObject(overrideVal)) {\n result[key] = deepMerge(baseVal, overrideVal);\n } else if (overrideVal !== undefined) {\n result[key] = overrideVal;\n }\n }\n return result as T;\n}\n\n/**\n * Merges a ThemeOverrides partial on top of a complete ThemeTokens base.\n * Only the keys present in `overrides` replace values in `base` —\n * missing keys fall through to the default.\n */\nexport function mergeTheme(base: ThemeTokens, overrides: ThemeOverrides): ThemeTokens {\n return deepMerge(base, overrides as Record<string, unknown>);\n}\n","import { ThemeOverrides } from '../tokens';\n\n/**\n * Theme 1 — \"Ocean Blue\"\n * A clean, professional theme with a deep blue primary palette.\n * Only brand-specific overrides are listed here — everything else\n * inherits from the default theme.\n */\nconst theme1Overrides: ThemeOverrides = {\n colors: {\n primary: '#1565C0',\n primaryDark: '#003c8f',\n primaryLight: '#5e92f3',\n primaryContrast: '#ffffff',\n\n secondary: '#6A1B9A',\n secondaryDark: '#38006b',\n secondaryLight: '#9c4dcc',\n secondaryContrast: '#ffffff',\n\n success: '#2E7D32',\n warning: '#ED6C02',\n error: '#D32F2F',\n info: '#0288D1',\n\n background: '#F5F7FA',\n backgroundPaper: '#ffffff',\n backgroundSubtle: '#EEF2F7',\n\n textPrimary: '#1A2340',\n textSecondary: '#546080',\n textDisabled: '#A0AABF',\n\n divider: '#DDE3EE',\n border: '#C5CFE0',\n borderFocus: '#1565C0',\n\n overlayLight: 'rgba(255, 255, 255, 0.8)',\n overlayDark: 'rgba(21, 101, 192, 0.12)',\n },\n\n typography: {\n fontFamilyBase: '\"Inter\", \"Roboto\", \"Helvetica Neue\", Arial, sans-serif',\n fontFamilyMono: '\"Fira Code\", \"Courier New\", monospace',\n lineHeightTight: 1.2,\n lineHeightBase: 1.5,\n lineHeightRelaxed: 1.75,\n letterSpacingTight: '-0.02em',\n letterSpacingWide: '0.06em',\n },\n\n borderRadius: {\n xs: '2px',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n },\n\n shadows: {\n xs: '0 1px 2px rgba(21, 101, 192, 0.08)',\n sm: '0 2px 6px rgba(21, 101, 192, 0.10)',\n md: '0 4px 12px rgba(21, 101, 192, 0.12)',\n lg: '0 8px 24px rgba(21, 101, 192, 0.14)',\n xl: '0 16px 48px rgba(21, 101, 192, 0.18)',\n },\n\n transitions: {\n durationFast: '120ms',\n durationBase: '200ms',\n durationSlow: '350ms',\n },\n\n components: {\n button: { borderRadius: '8px' },\n input: {\n borderRadius: '8px',\n borderWidth: '1px',\n backgroundDisabled: '#F5F7FA',\n minHeight: '44px',\n },\n card: { borderRadius: '12px' },\n tooltip: {\n borderRadius: '6px',\n background: '#1A2340',\n },\n dialog: { borderRadius: '16px' },\n table: {\n cellPaddingY: '12px',\n headerBackground: '#EEF2F7',\n rowHoverBackground: '#F5F7FA',\n borderColor: '#DDE3EE',\n },\n avatar: { borderRadiusRounded: '12px' },\n divider: { color: '#DDE3EE' },\n alert: { borderRadius: '8px' },\n accordion: { borderRadius: '8px' },\n },\n};\n\nexport default theme1Overrides;\n","import { ThemeOverrides } from '../tokens';\n\n/**\n * Theme 2 — \"Forest Green\"\n * A warm, earthy theme with a rich green primary palette and softer,\n * more rounded shapes than Theme 1.\n * Only brand-specific overrides are listed here — everything else\n * inherits from the default theme.\n */\nconst theme2Overrides: ThemeOverrides = {\n colors: {\n primary: '#2E7D32',\n primaryDark: '#1B5E20',\n primaryLight: '#60AD5E',\n primaryContrast: '#ffffff',\n\n secondary: '#F57F17',\n secondaryDark: '#BC5100',\n secondaryLight: '#FFAD42',\n secondaryContrast: '#1A1A1A',\n\n success: '#388E3C',\n warning: '#F57C00',\n error: '#C62828',\n info: '#01579B',\n\n background: '#F7F9F5',\n backgroundPaper: '#ffffff',\n backgroundSubtle: '#EDF3EB',\n\n textPrimary: '#1C2A1E',\n textSecondary: '#4A6350',\n textDisabled: '#9DB09F',\n\n divider: '#D4E5D0',\n border: '#B8D4B2',\n borderFocus: '#2E7D32',\n\n overlayLight: 'rgba(255, 255, 255, 0.8)',\n overlayDark: 'rgba(46, 125, 50, 0.12)',\n },\n\n typography: {\n fontFamilyBase: '\"DM Sans\", \"Roboto\", \"Helvetica Neue\", Arial, sans-serif',\n fontFamilyMono: '\"JetBrains Mono\", \"Courier New\", monospace',\n lineHeightTight: 1.25,\n lineHeightBase: 1.6,\n lineHeightRelaxed: 1.8,\n letterSpacingTight: '-0.01em',\n letterSpacingWide: '0.04em',\n },\n\n borderRadius: {\n xs: '4px',\n sm: '8px',\n md: '12px',\n lg: '20px',\n xl: '28px',\n },\n\n shadows: {\n xs: '0 1px 2px rgba(46, 125, 50, 0.06)',\n sm: '0 2px 8px rgba(46, 125, 50, 0.08)',\n md: '0 4px 16px rgba(46, 125, 50, 0.10)',\n lg: '0 8px 28px rgba(46, 125, 50, 0.13)',\n xl: '0 16px 56px rgba(46, 125, 50, 0.16)',\n },\n\n transitions: {\n durationFast: '150ms',\n durationBase: '250ms',\n durationSlow: '400ms',\n },\n\n components: {\n button: { borderRadius: '12px' },\n input: {\n borderRadius: '12px',\n borderWidth: '1.5px',\n backgroundDisabled: '#F7F9F5',\n minHeight: '46px',\n },\n card: { borderRadius: '20px' },\n tooltip: {\n borderRadius: '8px',\n background: '#1C2A1E',\n },\n dialog: { borderRadius: '24px' },\n table: {\n cellPaddingY: '14px',\n headerBackground: '#EDF3EB',\n rowHoverBackground: '#F7F9F5',\n borderColor: '#D4E5D0',\n },\n avatar: { borderRadiusRounded: '16px' },\n divider: { color: '#D4E5D0' },\n alert: { borderRadius: '12px' },\n accordion: { borderRadius: '12px' },\n },\n};\n\nexport default theme2Overrides;\n","import { ThemeOverrides } from '../tokens';\n\n/**\n * CPS — \"uses the default theme - minimal overrides\"\n */\nconst cpsThemeOverrides: ThemeOverrides = {\n};\n\nexport default cpsThemeOverrides;\n","import { ThemeTokens, ThemeOverrides } from './tokens';\nimport defaultTheme from './defaultTheme';\nimport { mergeTheme } from './mergeTheme';\nimport theme1Overrides from './theme1';\nimport theme2Overrides from './theme2';\nimport cpsThemeOverrides from './cps';\n\n/**\n * All available theme names. Add a new key here whenever you create a\n * new theme in its own sub-directory.\n */\nexport type ThemeName = 'theme1' | 'theme2' | 'cpsTheme';\n\n/**\n * Each entry is a partial override on top of the default theme.\n * Only brand-specific values need to be listed.\n */\nconst themeRegistry: Record<ThemeName, ThemeOverrides> = {\n theme1: theme1Overrides,\n theme2: theme2Overrides,\n cpsTheme: cpsThemeOverrides,\n};\n\n/**\n * Returns the fully resolved token set for the given theme name —\n * the default theme deep-merged with the theme's overrides.\n * Throws at runtime if an unknown name is provided.\n */\nexport function getThemeTokens(name: ThemeName): ThemeTokens {\n const overrides = themeRegistry[name];\n if (!overrides) {\n const available = Object.keys(themeRegistry).join(', ');\n throw new Error(`Unknown theme \"${name}\". Available themes: ${available}`);\n }\n return mergeTheme(defaultTheme, overrides);\n}\n\nexport { themeRegistry };\n","import { ThemeName } from './registry';\n\n/**\n * Resolves the active theme name from the environment.\n *\n * Priority order (first match wins):\n * 1. VITE_THEME — used by Vite-based apps\n * 2. REACT_APP_THEME — used by Create React App\n * 3. NEXT_PUBLIC_THEME — used by Next.js\n * 4. 'cpsTheme' — hardcoded fallback\n *\n * In your app's .env file, add one of:\n *\n * VITE_THEME=theme2\n * REACT_APP_THEME=theme2\n * NEXT_PUBLIC_THEME=theme2\n *\n * The value must match one of the keys in ThemeName ('theme1' | 'theme2' | …).\n * A typo will throw at runtime when getThemeTokens() is called.\n */\nexport function resolveThemeName(): ThemeName {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const importMetaEnv: Record<string, string | undefined> | undefined =\n typeof (import.meta as any)?.env === 'object' ? (import.meta as any).env : undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const env: Record<string, string | undefined> =\n importMetaEnv ||\n (typeof globalThis !== 'undefined' && (globalThis as any).process?.env) ||\n {};\n\n const raw = env['VITE_THEME'] || env['REACT_APP_THEME'] || env['NEXT_PUBLIC_THEME'] || 'cpsTheme';\n\n return raw as ThemeName;\n}\n","import { createTheme, Theme, alpha, darken } from '@mui/material/styles';\nimport { ThemeTokens } from './tokens';\n\n/**\n * Takes a ThemeTokens object and produces a fully configured MUI Theme.\n *\n * MUI's own theme properties (palette, typography, shape, shadows, etc.)\n * are derived from our tokens — not from hard-coded values — so that\n * swapping the tokens object swaps the entire visual language.\n *\n * The raw tokens are also attached as `theme.tokens` (via module\n * augmentation in types/mui.d.ts) so components can read any token\n * not already exposed by MUI's built-in theme shape.\n */\nexport function createMuiTheme(tokens: ThemeTokens, darkMode = false): Theme {\n return createTheme({\n palette: {\n mode: darkMode ? 'dark' : 'light',\n primary: {\n main: tokens.colors.primary,\n dark: tokens.colors.primaryDark,\n light: tokens.colors.primaryLight,\n contrastText: tokens.colors.primaryContrast,\n },\n secondary: {\n main: tokens.colors.secondary,\n dark: tokens.colors.secondaryDark,\n light: tokens.colors.secondaryLight,\n contrastText: tokens.colors.secondaryContrast,\n },\n success: { main: tokens.colors.success },\n warning: { main: tokens.colors.warning },\n error: { main: tokens.colors.error },\n info: { main: tokens.colors.info },\n background: {\n default: darkMode ? '#0d0d0d' : tokens.colors.background,\n paper: darkMode ? '#1a1a1a' : tokens.colors.backgroundPaper,\n subtle: darkMode ? '#2a2a2a' : tokens.colors.backgroundSubtle,\n },\n border: tokens.colors.border,\n text: darkMode ? undefined : {\n primary: tokens.colors.textPrimary,\n secondary: tokens.colors.textSecondary,\n disabled: tokens.colors.textDisabled,\n },\n divider: darkMode ? undefined : tokens.colors.divider,\n },\n\n typography: {\n fontFamily: tokens.typography.fontFamilyBase,\n fontWeightLight: tokens.typography.fontWeightLight,\n fontWeightRegular: tokens.typography.fontWeightRegular,\n fontWeightMedium: tokens.typography.fontWeightMedium,\n fontWeightBold: tokens.typography.fontWeightBold,\n fontSize: 14, // MUI base, actual sizes come from tokens\n },\n\n shape: {\n borderRadius: 8, // MUI uses a number; components use tokens directly\n },\n\n spacing: tokens.spacing.unit,\n\n zIndex: {\n appBar: tokens.zIndex.sticky,\n drawer: tokens.zIndex.overlay,\n modal: tokens.zIndex.modal,\n snackbar: tokens.zIndex.toast,\n tooltip: tokens.zIndex.tooltip,\n },\n\n components: {\n MuiButton: {\n defaultProps: {\n disableElevation: true,\n },\n styleOverrides: {\n root: {\n borderRadius: tokens.components.button.borderRadius,\n fontWeight: tokens.components.button.fontWeight,\n letterSpacing: tokens.components.button.letterSpacing,\n textTransform: tokens.components.button.textTransform as 'none',\n fontSize: tokens.components.button.fontSizeMd,\n minHeight: tokens.components.button.heightMd,\n paddingLeft: tokens.components.button.paddingX,\n paddingRight: tokens.components.button.paddingX,\n paddingTop: tokens.components.button.paddingY,\n paddingBottom: tokens.components.button.paddingY,\n boxShadow: tokens.shadows.none,\n transition: `all ${tokens.transitions.durationBase} ${tokens.transitions.easingDefault}`,\n '&:hover': {\n boxShadow: tokens.shadows.none,\n },\n },\n sizeSmall: {\n fontSize: tokens.components.button.fontSizeSm,\n minHeight: tokens.components.button.heightSm,\n paddingLeft: tokens.components.button.paddingXSm,\n paddingRight: tokens.components.button.paddingXSm,\n paddingTop: tokens.components.button.paddingYSm,\n paddingBottom: tokens.components.button.paddingYSm,\n },\n sizeLarge: {\n fontSize: tokens.components.button.fontSizeLg,\n minHeight: tokens.components.button.heightLg,\n paddingLeft: tokens.components.button.paddingXLg,\n paddingRight: tokens.components.button.paddingXLg,\n paddingTop: tokens.components.button.paddingYLg,\n paddingBottom: tokens.components.button.paddingYLg,\n },\n },\n variants: [\n // xlarge size\n {\n props: { size: 'xlarge' },\n style: {\n fontSize: tokens.components.button.fontSizeLg,\n minHeight: tokens.components.button.heightXl,\n paddingLeft: tokens.components.button.paddingXXl,\n paddingRight: tokens.components.button.paddingXXl,\n paddingTop: tokens.components.button.paddingYXl,\n paddingBottom: tokens.components.button.paddingYXl,\n },\n },\n // soft variant — base (inherit/no color)\n {\n props: { variant: 'soft' },\n style: {\n backgroundColor: alpha(tokens.colors.textSecondary, 0.12),\n color: tokens.colors.textPrimary,\n boxShadow: tokens.shadows.none,\n '&:hover': {\n backgroundColor: alpha(tokens.colors.textSecondary, 0.2),\n boxShadow: tokens.shadows.none,\n },\n '&.Mui-disabled': {\n backgroundColor: alpha(tokens.colors.textDisabled, 0.12),\n color: tokens.colors.textDisabled,\n },\n },\n },\n // soft variant — primary\n {\n props: { variant: 'soft', color: 'primary' },\n style: {\n backgroundColor: alpha(tokens.colors.primary, 0.16),\n color: tokens.colors.primaryDark,\n '&:hover': { backgroundColor: alpha(tokens.colors.primary, 0.24) },\n },\n },\n // soft variant — secondary\n {\n props: { variant: 'soft', color: 'secondary' },\n style: {\n backgroundColor: alpha(tokens.colors.secondary, 0.16),\n color: tokens.colors.secondaryDark,\n '&:hover': { backgroundColor: alpha(tokens.colors.secondary, 0.24) },\n },\n },\n // soft variant — error\n {\n props: { variant: 'soft', color: 'error' },\n style: {\n backgroundColor: alpha(tokens.colors.error, 0.16),\n color: darken(tokens.colors.error, 0.2),\n '&:hover': { backgroundColor: alpha(tokens.colors.error, 0.24) },\n },\n },\n // soft variant — warning\n {\n props: { variant: 'soft', color: 'warning' },\n style: {\n backgroundColor: alpha(tokens.colors.warning, 0.16),\n color: darken(tokens.colors.warning, 0.2),\n '&:hover': { backgroundColor: alpha(tokens.colors.warning, 0.24) },\n },\n },\n // soft variant — success\n {\n props: { variant: 'soft', color: 'success' },\n style: {\n backgroundColor: alpha(tokens.colors.success, 0.16),\n color: darken(tokens.colors.success, 0.2),\n '&:hover': { backgroundColor: alpha(tokens.colors.success, 0.24) },\n },\n },\n // soft variant — info\n {\n props: { variant: 'soft', color: 'info' },\n style: {\n backgroundColor: alpha(tokens.colors.info, 0.16),\n color: darken(tokens.colors.info, 0.2),\n '&:hover': { backgroundColor: alpha(tokens.colors.info, 0.24) },\n },\n },\n ],\n },\n\n MuiTextField: {\n styleOverrides: {\n root: ({ theme }) => ({\n '& .MuiOutlinedInput-root': {\n borderRadius: tokens.components.input.borderRadius,\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.background.paper : tokens.components.input.background,\n minHeight: tokens.components.input.minHeight,\n '& fieldset': {\n borderWidth: tokens.components.input.borderWidth,\n borderColor: theme.palette.mode === 'dark' ? theme.palette.divider : tokens.colors.border,\n },\n '&:hover fieldset': {\n borderColor: tokens.colors.primary,\n },\n '&.Mui-focused fieldset': {\n borderWidth: tokens.components.input.borderWidthFocus,\n borderColor: tokens.colors.borderFocus,\n },\n '&.Mui-disabled': {\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.action.disabledBackground : tokens.components.input.backgroundDisabled,\n },\n },\n '& .MuiInputLabel-root': {\n fontSize: tokens.components.input.labelFontSize,\n },\n '& .MuiFormHelperText-root': {\n fontSize: tokens.components.input.helperFontSize,\n },\n }),\n },\n },\n\n MuiCard: {\n styleOverrides: {\n root: ({ theme }) => ({\n borderRadius: tokens.components.card.borderRadius,\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.background.paper : tokens.components.card.background,\n boxShadow: tokens.shadows.sm,\n border: `${tokens.components.card.borderWidth} solid ${theme.palette.divider}`,\n }),\n },\n },\n\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: tokens.components.card.padding,\n '&:last-child': {\n paddingBottom: tokens.components.card.padding,\n },\n },\n },\n },\n\n MuiChip: {\n styleOverrides: {\n root: {\n height: tokens.components.chip.height,\n borderRadius: tokens.components.chip.borderRadius,\n fontSize: tokens.components.chip.fontSize,\n fontWeight: tokens.components.chip.fontWeight,\n paddingLeft: tokens.components.chip.paddingX,\n paddingRight: tokens.components.chip.paddingX,\n },\n sizeSmall: {\n height: tokens.components.chip.heightSm,\n },\n icon: {\n width: tokens.components.chip.iconSize,\n height: tokens.components.chip.iconSize,\n },\n },\n variants: [\n // ── soft — base (default color) ───────────────────────────────────\n {\n props: { variant: 'soft' },\n style: {\n backgroundColor: alpha(tokens.colors.textSecondary, 0.12),\n color: tokens.colors.textPrimary,\n '&:hover': { backgroundColor: alpha(tokens.colors.textSecondary, 0.2) },\n '&.Mui-disabled': { opacity: 0.6 },\n },\n },\n { props: { variant: 'soft', color: 'primary' }, style: { backgroundColor: alpha(tokens.colors.primary, 0.16), color: darken(tokens.colors.primary, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.primary, 0.24) } } },\n { props: { variant: 'soft', color: 'secondary' }, style: { backgroundColor: alpha(tokens.colors.secondary, 0.16), color: darken(tokens.colors.secondary, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.secondary, 0.24) } } },\n { props: { variant: 'soft', color: 'info' }, style: { backgroundColor: alpha(tokens.colors.info, 0.16), color: darken(tokens.colors.info, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.info, 0.24) } } },\n { props: { variant: 'soft', color: 'success' }, style: { backgroundColor: alpha(tokens.colors.success, 0.16), color: darken(tokens.colors.success, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.success, 0.24) } } },\n { props: { variant: 'soft', color: 'warning' }, style: { backgroundColor: alpha(tokens.colors.warning, 0.16), color: darken(tokens.colors.warning, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.warning, 0.24) } } },\n { props: { variant: 'soft', color: 'error' }, style: { backgroundColor: alpha(tokens.colors.error, 0.16), color: darken(tokens.colors.error, 0.2), '&:hover': { backgroundColor: alpha(tokens.colors.error, 0.24) } } },\n // ── black ─────────────────────────────────────────────────────────\n { props: { variant: 'filled', color: 'black' }, style: { backgroundColor: tokens.colors.textPrimary, color: tokens.colors.backgroundPaper, '&:hover': { backgroundColor: darken(tokens.colors.textPrimary, 0.1) } } },\n { props: { variant: 'outlined', color: 'black' }, style: { borderColor: tokens.colors.textPrimary, color: tokens.colors.textPrimary } },\n { props: { variant: 'soft', color: 'black' }, style: { backgroundColor: alpha(tokens.colors.textPrimary, 0.12), color: tokens.colors.textPrimary, '&:hover': { backgroundColor: alpha(tokens.colors.textPrimary, 0.2) } } },\n // ── white ─────────────────────────────────────────────────────────\n { props: { variant: 'filled', color: 'white' }, style: { backgroundColor: tokens.colors.backgroundPaper, color: tokens.colors.textPrimary, border: `1px solid ${tokens.colors.divider}`, '&:hover': { backgroundColor: tokens.colors.backgroundSubtle } } },\n { props: { variant: 'outlined', color: 'white' }, style: { borderColor: alpha(tokens.colors.backgroundPaper, 0.32), color: tokens.colors.backgroundPaper } },\n { props: { variant: 'soft', color: 'white' }, style: { backgroundColor: alpha(tokens.colors.backgroundPaper, 0.16), color: tokens.colors.backgroundPaper, '&:hover': { backgroundColor: alpha(tokens.colors.backgroundPaper, 0.24) } } },\n ],\n },\n\n MuiBadge: {\n styleOverrides: {\n badge: {\n height: tokens.components.badge.height,\n minWidth: tokens.components.badge.minWidth,\n borderRadius: tokens.components.badge.borderRadius,\n fontSize: tokens.components.badge.fontSize,\n fontWeight: tokens.components.badge.fontWeight,\n padding: `0 ${tokens.components.badge.paddingX}`,\n },\n },\n },\n\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backgroundColor: tokens.components.tooltip.background,\n color: tokens.components.tooltip.color,\n borderRadius: tokens.components.tooltip.borderRadius,\n fontSize: tokens.components.tooltip.fontSize,\n padding: `${tokens.components.tooltip.paddingY} ${tokens.components.tooltip.paddingX}`,\n maxWidth: tokens.components.tooltip.maxWidth,\n },\n },\n },\n\n MuiDialog: {\n styleOverrides: {\n paper: ({ theme }) => ({\n borderRadius: tokens.components.dialog.borderRadius,\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.background.paper : tokens.components.dialog.background,\n maxWidth: tokens.components.dialog.maxWidth,\n }),\n },\n },\n\n MuiDialogContent: {\n styleOverrides: {\n root: {\n padding: tokens.components.dialog.padding,\n },\n },\n },\n\n MuiTableCell: {\n styleOverrides: {\n root: ({ theme }) => ({\n paddingLeft: tokens.components.table.cellPaddingX,\n paddingRight: tokens.components.table.cellPaddingX,\n paddingTop: tokens.components.table.cellPaddingY,\n paddingBottom: tokens.components.table.cellPaddingY,\n borderBottom: `${tokens.components.table.borderWidth} solid ${theme.palette.mode === 'dark' ? theme.palette.divider : tokens.components.table.borderColor}`,\n }),\n head: ({ theme }) => ({\n fontWeight: tokens.components.table.headerFontWeight,\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.background.default : tokens.components.table.headerBackground,\n color: theme.palette.text.secondary,\n }),\n },\n },\n\n MuiTableRow: {\n styleOverrides: {\n root: ({ theme }) => ({\n '&:hover': {\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.action.hover : tokens.components.table.rowHoverBackground,\n },\n }),\n },\n },\n\n MuiAvatar: {\n styleOverrides: {\n root: {\n width: tokens.components.avatar.sizeMd,\n height: tokens.components.avatar.sizeMd,\n borderRadius: tokens.components.avatar.borderRadius,\n fontSize: tokens.typography.fontSizeLg,\n fontWeight: tokens.typography.fontWeightSemiBold,\n },\n rounded: {\n borderRadius: tokens.components.avatar.borderRadiusRounded,\n },\n },\n },\n\n MuiAvatarGroup: {\n styleOverrides: {\n root: {\n '& .MuiAvatar-root': {\n marginLeft: tokens.components.avatar.groupSpacing,\n border: `${tokens.components.avatar.groupBorderWidth} solid ${tokens.colors.backgroundPaper}`,\n boxSizing: 'content-box',\n },\n },\n },\n },\n\n MuiDivider: {\n styleOverrides: {\n root: {\n borderColor: tokens.components.divider.color,\n borderBottomWidth: tokens.components.divider.thickness,\n },\n },\n },\n\n MuiAlert: {\n styleOverrides: {\n root: {\n alignItems: 'center',\n borderRadius: tokens.components.alert.borderRadius,\n padding: tokens.components.alert.padding,\n fontSize: tokens.typography.fontSizeMd,\n },\n // ── Standard ──────────────────────────────────────────────────────\n standardInfo: {\n backgroundColor: alpha(tokens.colors.info, 0.16),\n color: darken(tokens.colors.info, 0.4),\n '& .MuiAlert-icon': { color: tokens.colors.info },\n },\n standardSuccess: {\n backgroundColor: alpha(tokens.colors.success, 0.16),\n color: darken(tokens.colors.success, 0.4),\n '& .MuiAlert-icon': { color: tokens.colors.success },\n },\n standardWarning: {\n backgroundColor: alpha(tokens.colors.warning, 0.16),\n color: darken(tokens.colors.warning, 0.4),\n '& .MuiAlert-icon': { color: tokens.colors.warning },\n },\n standardError: {\n backgroundColor: alpha(tokens.colors.error, 0.16),\n color: darken(tokens.colors.error, 0.4),\n '& .MuiAlert-icon': { color: tokens.colors.error },\n },\n // ── Filled ────────────────────────────────────────────────────────\n filledInfo: {\n backgroundColor: tokens.colors.info,\n color: tokens.colors.primaryContrast,\n fontWeight: tokens.typography.fontWeightMedium,\n },\n filledSuccess: {\n backgroundColor: tokens.colors.success,\n color: tokens.colors.primaryContrast,\n fontWeight: tokens.typography.fontWeightMedium,\n },\n filledWarning: {\n backgroundColor: tokens.colors.warning,\n // Warning is light enough to need dark text\n color: tokens.colors.textPrimary,\n fontWeight: tokens.typography.fontWeightMedium,\n '& .MuiAlert-icon': { color: tokens.colors.textPrimary },\n },\n filledError: {\n backgroundColor: tokens.colors.error,\n color: tokens.colors.primaryContrast,\n fontWeight: tokens.typography.fontWeightMedium,\n },\n // ── Outlined ──────────────────────────────────────────────────────\n outlinedInfo: {\n backgroundColor: alpha(tokens.colors.info, 0.08),\n color: darken(tokens.colors.info, 0.2),\n borderColor: alpha(tokens.colors.info, 0.32),\n '& .MuiAlert-icon': { color: tokens.colors.info },\n },\n outlinedSuccess: {\n backgroundColor: alpha(tokens.colors.success, 0.08),\n color: darken(tokens.colors.success, 0.2),\n borderColor: alpha(tokens.colors.success, 0.32),\n '& .MuiAlert-icon': { color: tokens.colors.success },\n },\n outlinedWarning: {\n backgroundColor: alpha(tokens.colors.warning, 0.08),\n color: darken(tokens.colors.warning, 0.2),\n borderColor: alpha(tokens.colors.warning, 0.32),\n '& .MuiAlert-icon': { color: tokens.colors.warning },\n },\n outlinedError: {\n backgroundColor: alpha(tokens.colors.error, 0.08),\n color: darken(tokens.colors.error, 0.2),\n borderColor: alpha(tokens.colors.error, 0.32),\n '& .MuiAlert-icon': { color: tokens.colors.error },\n },\n icon: {\n opacity: 1,\n padding: 0,\n },\n message: {\n padding: '4px 0',\n },\n },\n },\n\n MuiAlertTitle: {\n styleOverrides: {\n root: {\n fontWeight: tokens.typography.fontWeightSemiBold,\n marginBottom: '4px',\n },\n },\n },\n\n MuiAccordion: {\n styleOverrides: {\n root: {\n borderRadius: tokens.components.accordion.borderRadius,\n boxShadow: tokens.shadows.md,\n marginBottom: tokens.spacing.sm,\n '&:before': { display: 'none' },\n '&.Mui-expanded': { margin: `0 0 ${tokens.spacing.sm}` },\n '&:first-of-type': { borderRadius: tokens.components.accordion.borderRadius },\n '&:last-of-type': { borderRadius: tokens.components.accordion.borderRadius },\n },\n },\n },\n\n MuiAccordionSummary: {\n styleOverrides: {\n root: {\n padding: `${tokens.components.accordion.summaryPaddingY} 8px ${tokens.components.accordion.summaryPaddingY} ${tokens.components.accordion.summaryPaddingX}`,\n fontWeight: tokens.components.accordion.summaryFontWeight,\n minHeight: 'auto',\n '&.Mui-expanded': { minHeight: 'auto' },\n },\n content: {\n margin: 0,\n '&.Mui-expanded': { margin: 0 },\n },\n expandIconWrapper: {\n color: tokens.colors.textSecondary,\n },\n },\n },\n\n MuiAccordionDetails: {\n styleOverrides: {\n root: {\n padding: `0 ${tokens.components.accordion.detailsPaddingX} ${tokens.components.accordion.detailsPaddingBottom}`,\n },\n },\n },\n\n MuiToggleButton: {\n styleOverrides: {\n root: {\n borderRadius: tokens.components.toggleButton.borderRadius,\n borderWidth: tokens.components.toggleButton.borderWidth,\n borderColor: tokens.colors.border,\n fontWeight: tokens.components.toggleButton.fontWeight,\n paddingLeft: tokens.components.toggleButton.paddingXMd,\n paddingRight: tokens.components.toggleButton.paddingXMd,\n paddingTop: tokens.components.toggleButton.paddingYMd,\n paddingBottom: tokens.components.toggleButton.paddingYMd,\n textTransform: 'none' as const,\n transition: `all ${tokens.transitions.durationBase} ${tokens.transitions.easingDefault}`,\n '&.Mui-selected': {\n backgroundColor: alpha(tokens.colors.textPrimary, 0.08),\n color: tokens.colors.textPrimary,\n '&:hover': {\n backgroundColor: alpha(tokens.colors.textPrimary, 0.16),\n },\n },\n '&.Mui-disabled': {\n borderColor: tokens.colors.border,\n },\n },\n sizeSmall: {\n paddingLeft: tokens.components.toggleButton.paddingXSm,\n paddingRight: tokens.components.toggleButton.paddingXSm,\n paddingTop: tokens.components.toggleButton.paddingYSm,\n paddingBottom: tokens.components.toggleButton.paddingYSm,\n },\n sizeLarge: {\n paddingLeft: tokens.components.toggleButton.paddingXLg,\n paddingRight: tokens.components.toggleButton.paddingXLg,\n paddingTop: tokens.components.toggleButton.paddingYLg,\n paddingBottom: tokens.components.toggleButton.paddingYLg,\n },\n },\n variants: [\n { props: { color: 'primary' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.primary, 0.16), color: tokens.colors.primary, '&:hover': { backgroundColor: alpha(tokens.colors.primary, 0.24) } } } },\n { props: { color: 'secondary' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.secondary, 0.16), color: tokens.colors.secondary, '&:hover': { backgroundColor: alpha(tokens.colors.secondary, 0.24) } } } },\n { props: { color: 'info' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.info, 0.16), color: tokens.colors.info, '&:hover': { backgroundColor: alpha(tokens.colors.info, 0.24) } } } },\n { props: { color: 'success' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.success, 0.16), color: tokens.colors.success, '&:hover': { backgroundColor: alpha(tokens.colors.success, 0.24) } } } },\n { props: { color: 'warning' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.warning, 0.16), color: tokens.colors.warning, '&:hover': { backgroundColor: alpha(tokens.colors.warning, 0.24) } } } },\n { props: { color: 'error' }, style: { '&.Mui-selected': { backgroundColor: alpha(tokens.colors.error, 0.16), color: tokens.colors.error, '&:hover': { backgroundColor: alpha(tokens.colors.error, 0.24) } } } },\n ],\n },\n\n MuiToggleButtonGroup: {\n styleOverrides: {\n root: {\n borderRadius: tokens.components.toggleButton.borderRadius,\n },\n grouped: {\n '&:not(:first-of-type)': {\n borderColor: tokens.colors.border,\n },\n },\n },\n },\n\n MuiPaper: {\n styleOverrides: {\n root: {\n backgroundImage: 'none', // Remove MUI's default gradient on dark mode\n },\n elevation1: { boxShadow: tokens.shadows.sm },\n elevation2: { boxShadow: tokens.shadows.md },\n elevation3: { boxShadow: tokens.shadows.lg },\n },\n },\n },\n\n // Attach the raw tokens to the theme so any component can access\n // values not already covered by MUI's built-in theme shape.\n // @ts-ignore — augmented in src/types/mui.d.ts\n tokens,\n });\n}\n","import React from 'react';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { TextField, TextFieldProps } from '../TextField';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { formatABN } from '../../utils/formatABN';\n\nexport interface ABNInputProps extends Omit<TextFieldProps, 'onChange'> {\n /** Marks the field as invalid — maps to MUI's `error` prop */\n isInvalid?: boolean;\n /** Shows a loading spinner in the end adornment */\n isLoading?: boolean;\n /** Makes the input read-only */\n readOnly?: boolean;\n /** Called with the synthetic event and `{ value, unformattedValue }` */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement>,\n values: { value: string; unformattedValue: string },\n ) => void;\n /** Current value — digits or pre-formatted ABN string */\n value?: string;\n}\n\nexport const ABNInput = React.forwardRef<HTMLInputElement, ABNInputProps>(\n function ABNInput(\n { value = '', onChange, isInvalid, readOnly, isLoading, slotProps, error, ...restProps },\n ref,\n ) {\n const formatted = formatABN(String(value));\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newFormatted = formatABN(event.target.value);\n onChange?.(event, {\n value: newFormatted,\n unformattedValue: newFormatted.replace(/\\s/g, ''),\n });\n };\n\n const endAdornment = isLoading ? (\n <InputAdornment position=\"end\">\n <CircularProgress size={20} />\n </InputAdornment>\n ) : undefined;\n\n const mergedSlotProps: TextFieldProps['slotProps'] = {\n ...slotProps,\n htmlInput: {\n maxLength: 14,\n inputMode: 'numeric',\n readOnly,\n ...(slotProps as { htmlInput?: object })?.htmlInput,\n },\n ...(endAdornment && {\n input: { endAdornment, ...(slotProps as { input?: object })?.input },\n }),\n };\n\n return (\n <TextField\n {...getCleanProps(restProps)}\n ref={ref}\n value={formatted}\n onChange={handleChange}\n error={isInvalid || !!error}\n slotProps={mergedSlotProps}\n />\n );\n },\n);\n\nABNInput.displayName = 'ToolkitABNInput';\n","import React, { useState } from 'react';\nimport {\n TextField as MuiTextField,\n TextFieldProps as MuiTextFieldProps,\n InputAdornment,\n IconButton,\n SvgIcon,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst VisibilityIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3\" />\n </SvgIcon>\n);\n\nconst VisibilityOffIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75C21.27 5.61 17 2.5 12 2.5c-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 5.13 11.35 5 12 5M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27M7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01\" />\n </SvgIcon>\n);\n\nexport type TextFieldProps = MuiTextFieldProps & {\n /** When true and type=\"password\", renders a visibility toggle icon button as end adornment. */\n showPasswordToggle?: boolean;\n};\n\n/**\n * Extended TextField.\n *\n * Border radius, border widths, background colours, and font sizes all\n * come from the active theme tokens. The MUI style overrides in\n * createMuiTheme.ts handle most of the work; this component adds any\n * extras that require the styled() API.\n *\n * Accessibility notes for callers:\n * - Always provide `label`, `aria-label`, or `aria-labelledby` — an unlabelled\n * input is inaccessible to screen readers.\n * - When using `error`, pair it with a descriptive `helperText` so users know\n * what to correct. The helper text is automatically announced as an alert.\n */\nconst StyledTextField = styled(MuiTextField)(({ theme }) => ({\n // Transition on the entire field when focus changes\n '& .MuiOutlinedInput-root': {\n transition: `box-shadow ${theme.tokens.transitions.durationFast} ${theme.tokens.transitions.easingDefault}`,\n '&.Mui-focused': {\n boxShadow: theme.tokens.shadows.xs,\n },\n },\n}));\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n function TextField({ error, FormHelperTextProps, inputProps, label, showPasswordToggle, type, slotProps, ...props }, ref) {\n const [showPassword, setShowPassword] = useState(false);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!label && !props['aria-label'] && !props['aria-labelledby'] && !inputProps?.['aria-label'] && !inputProps?.['aria-labelledby']) {\n console.warn('[ToolkitTextField] Missing accessible label. Provide `label`, `aria-label`, or `aria-labelledby`.');\n }\n }\n\n const resolvedType = showPasswordToggle && type === 'password'\n ? (showPassword ? 'text' : 'password')\n : type;\n\n const toggleAdornment = showPasswordToggle && type === 'password' ? (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n onClick={() => setShowPassword((prev) => !prev)}\n edge=\"end\"\n >\n {showPassword ? VisibilityOffIcon : VisibilityIcon}\n </IconButton>\n </InputAdornment>\n ) : null;\n\n const mergedSlotProps: TextFieldProps['slotProps'] = toggleAdornment\n ? { ...slotProps, input: { endAdornment: toggleAdornment, ...(slotProps as { input?: object })?.input } }\n : slotProps;\n\n return (\n <StyledTextField\n fullWidth\n variant=\"outlined\"\n label={label}\n error={error}\n type={resolvedType}\n inputRef={ref}\n inputProps={inputProps}\n slotProps={mergedSlotProps}\n FormHelperTextProps={error ? { role: 'alert', ...FormHelperTextProps } : FormHelperTextProps}\n {...props}\n />\n );\n }\n);\n\nTextField.displayName = 'ToolkitTextField';\n","/**\n * Strips props that should never be forwarded to a toolkit component's root element:\n *\n * - `style` — inline styles are forbidden; all visual values must come from theme tokens.\n * - `role` — ARIA roles are set by each component; consumer overrides would break accessibility.\n */\nexport function getCleanProps<T extends { style?: unknown; role?: unknown }>(\n props: T,\n): Omit<T, 'style' | 'role'> {\n const { style: _style, role: _role, ...cleanProps } = props;\n return cleanProps as Omit<T, 'style' | 'role'>;\n}\n","/**\n * Formats a string of digits into ABN display format: XX XXX XXX XXX\n * Non-digit characters are stripped; input is capped at 11 digits.\n */\nexport function formatABN(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 11);\n if (digits.length <= 2) return digits;\n if (digits.length <= 5) return `${digits.slice(0, 2)} ${digits.slice(2)}`;\n if (digits.length <= 8) return `${digits.slice(0, 2)} ${digits.slice(2, 5)} ${digits.slice(5)}`;\n return `${digits.slice(0, 2)} ${digits.slice(2, 5)} ${digits.slice(5, 8)} ${digits.slice(8)}`;\n}\n","import React from 'react';\nimport {\n Button as MuiButton,\n ButtonProps as MuiButtonProps,\n CircularProgress,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport interface ButtonProps extends MuiButtonProps {\n /** Show a loading spinner and disable interaction */\n loading?: boolean;\n}\n\n/**\n * Extended Button.\n *\n * All visual values — border radius, padding, font weight, letter spacing,\n * transition timing — come from the active theme's token set via\n * createMuiTheme.ts. No hard-coded CSS values appear here.\n *\n * The `styled()` call accesses the MUI theme (which already has our tokens\n * baked in by createMuiTheme) so every property can reference\n * `theme.tokens.*` for anything not already handled by MUI's style overrides.\n */\nconst StyledButton = styled(MuiButton)(({ theme }) => ({\n // Gap between icon and label — not surfaced by MUI's styleOverrides\n '& .MuiButton-startIcon': {\n marginRight: theme.tokens.components.button.iconGap,\n },\n '& .MuiButton-endIcon': {\n marginLeft: theme.tokens.components.button.iconGap,\n },\n}));\n\nexport function Button({ loading, disabled, children, ...props }: ButtonProps) {\n const baseLabel = props['aria-label'] ?? (typeof children === 'string' ? children : undefined);\n const ariaLabel = loading && baseLabel ? `${baseLabel}, loading` : props['aria-label'];\n\n return (\n <StyledButton\n {...props}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n aria-label={ariaLabel}\n startIcon={\n loading ? <CircularProgress size={16} color=\"inherit\" /> : props.startIcon\n }\n >\n {children}\n </StyledButton>\n );\n}\n\nButton.displayName = 'ToolkitButton';\n","import React from 'react';\nimport { Chip as MuiChip, ChipProps as MuiChipProps, SvgIcon, SvgIconProps } from '@mui/material';\n\n/**\n * Circular X delete icon — matches the minimals.cc design system.\n * Used as the default deleteIcon when onDelete is provided.\n */\nfunction CircleXIcon(props: SvgIconProps) {\n return (\n <SvgIcon {...props} viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2s10 4.477 10 10M8.97 8.97a.75.75 0 0 1 1.06 0L12 10.94l1.97-1.97a.75.75 0 0 1 1.06 1.06L13.06 12l1.97 1.97a.75.75 0 0 1-1.06 1.06L12 13.06l-1.97 1.97a.75.75 0 0 1-1.06-1.06L10.94 12l-1.97-1.97a.75.75 0 0 1 0-1.06\"\n clipRule=\"evenodd\"\n />\n </SvgIcon>\n );\n}\n\nexport type ChipProps = MuiChipProps;\n\n/**\n * Chip component extending MUI Chip.\n *\n * Adds a `soft` variant (like Button) and `black`/`white` color options.\n * Uses a custom circular-X delete icon by default when `onDelete` is provided.\n *\n * All visual values come from the active theme's token set — no hard-coded CSS.\n */\nexport function Chip({ deleteIcon, onDelete, ...props }: ChipProps) {\n return (\n <MuiChip\n {...props}\n onDelete={onDelete}\n deleteIcon={onDelete ? (deleteIcon ?? <CircleXIcon />) : undefined}\n />\n );\n}\n\nChip.displayName = 'ToolkitChip';\n","import React from 'react';\nimport {\n Card as MuiCard,\n CardContent as MuiCardContent,\n CardHeader as MuiCardHeader,\n CardActions as MuiCardActions,\n CardProps as MuiCardProps,\n CardHeaderProps as MuiCardHeaderProps,\n CardActionsProps as MuiCardActionsProps,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport interface CardProps extends MuiCardProps {\n /** Use the more compact inner padding variant */\n compact?: boolean;\n}\n\n/**\n * Extended Card.\n *\n * Border radius, padding, shadow, and border colour all come from the\n * active theme tokens — no hard-coded values.\n */\nconst StyledCard = styled(MuiCard, {\n shouldForwardProp: (prop) => prop !== 'compact',\n})<CardProps>(({ theme, compact }) => ({\n padding: compact\n ? theme.tokens.components.card.paddingCompact\n : theme.tokens.components.card.padding,\n // Override MUI CardContent's own padding since we set it at the Card level\n '& .MuiCardContent-root': {\n padding: 0,\n '&:last-child': { paddingBottom: 0 },\n },\n '&:hover': {\n boxShadow: theme.tokens.shadows.md,\n transition: `box-shadow ${theme.tokens.transitions.durationBase} ${theme.tokens.transitions.easingDefault}`,\n },\n}));\n\nexport function Card({ compact, children, ...props }: CardProps) {\n return (\n <StyledCard compact={compact} {...props}>\n {children}\n </StyledCard>\n );\n}\n\n// Re-export MUI sub-components with the same name so consumers get one import\nexport const CardContent = MuiCardContent;\nexport const CardHeader = MuiCardHeader;\nexport const CardActions = MuiCardActions;\n\nexport type { MuiCardHeaderProps as CardHeaderProps, MuiCardActionsProps as CardActionsProps };\n\nCard.displayName = 'ToolkitCard';\n","import React from 'react';\nimport {\n Alert as MuiAlert,\n AlertProps as MuiAlertProps,\n AlertTitle as MuiAlertTitle,\n AlertTitleProps as MuiAlertTitleProps,\n SvgIcon,\n} from '@mui/material';\n\nexport type AlertProps = MuiAlertProps;\nexport type AlertTitleProps = MuiAlertTitleProps;\n\n// Custom severity icons matching the minimals.cc design system\nconst InfoIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2s10 4.477 10 10m-10 5.75a.75.75 0 0 0 .75-.75v-6a.75.75 0 0 0-1.5 0v6c0 .414.336.75.75.75M12 7a1 1 0 1 1 0 2a1 1 0 0 1 0-2\" clipRule=\"evenodd\" />\n </SvgIcon>\n);\n\nconst SuccessIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2s10 4.477 10 10m-5.97-3.03a.75.75 0 0 1 0 1.06l-5 5a.75.75 0 0 1-1.06 0l-2-2a.75.75 0 1 1 1.06-1.06l1.47 1.47l2.235-2.235L14.97 8.97a.75.75 0 0 1 1.06 0\" clipRule=\"evenodd\" />\n </SvgIcon>\n);\n\nconst WarningIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M5.312 10.762C8.23 5.587 9.689 3 12 3c2.31 0 3.77 2.587 6.688 7.762l.364.644c2.425 4.3 3.638 6.45 2.542 8.022S17.786 21 12.364 21h-.728c-5.422 0-8.134 0-9.23-1.572s.117-3.722 2.542-8.022zM12 7.25a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-1.5 0V8a.75.75 0 0 1 .75-.75M12 17a1 1 0 1 0 0-2a1 1 0 0 0 0 2\" clipRule=\"evenodd\" />\n </SvgIcon>\n);\n\nconst ErrorIcon = (\n <SvgIcon viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M7.843 3.802C9.872 2.601 10.886 2 12 2c1.114 0 2.128.6 4.157 1.802l.686.406c2.029 1.202 3.043 1.803 3.6 2.792c.557.99.557 2.19.557 4.594v.812c0 2.403 0 3.605-.557 4.594c-.557.99-1.571 1.59-3.6 2.791l-.686.407C14.128 21.399 13.114 22 12 22c-1.114 0-2.128-.6-4.157-1.802l-.686-.407c-2.029-1.2-3.043-1.802-3.6-2.791C3 16.01 3 14.81 3 12.406v-.812C3 9.19 3 7.989 3.557 7c.557-.99 1.571-1.59 3.6-2.792zM13 16a1 1 0 1 1-2 0a1 1 0 0 1 2 0m-1-9.75a.75.75 0 0 1 .75.75v6a.75.75 0 0 1-1.5 0V7a.75.75 0 0 1 .75-.75\" clipRule=\"evenodd\" />\n </SvgIcon>\n);\n\nconst defaultIconMapping: MuiAlertProps['iconMapping'] = {\n info: InfoIcon,\n success: SuccessIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n};\n\n/**\n * Extended Alert.\n *\n * Supports all three MUI variants (standard, filled, outlined) across all\n * four severities (info, success, warning, error). Uses custom minimals-style\n * severity icons by default; override via the `iconMapping` prop.\n *\n * Visual values come from the active theme tokens — no hard-coded CSS.\n */\nexport function Alert({ iconMapping, ...props }: AlertProps) {\n return <MuiAlert iconMapping={{ ...defaultIconMapping, ...iconMapping }} {...props} />;\n}\n\nexport function AlertTitle(props: AlertTitleProps) {\n return <MuiAlertTitle {...props} />;\n}\n\nAlert.displayName = 'ToolkitAlert';\nAlertTitle.displayName = 'ToolkitAlertTitle';\n","import React from 'react';\nimport {\n Accordion as MuiAccordion,\n AccordionProps as MuiAccordionProps,\n AccordionSummary as MuiAccordionSummary,\n AccordionSummaryProps as MuiAccordionSummaryProps,\n AccordionDetails as MuiAccordionDetails,\n AccordionDetailsProps as MuiAccordionDetailsProps,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\n\nexport type AccordionProps = MuiAccordionProps;\nexport type AccordionSummaryProps = MuiAccordionSummaryProps;\nexport type AccordionDetailsProps = MuiAccordionDetailsProps;\n\n/**\n * Standalone accordion variant — each item is its own card with a\n * subtle grey background. Expands to a slightly darker tint.\n * Drop-in replacement for Accordion in contexts where you want\n * independent card-per-item styling.\n */\nexport const StandaloneAccordion = styled(MuiAccordion)(({ theme }) => ({\n borderRadius: `${theme.tokens.components.accordion.standaloneRadius} !important`,\n backgroundColor: theme.tokens.components.accordion.standaloneBackground,\n boxShadow: 'none',\n marginBottom: theme.spacing(1),\n '&.Mui-expanded': {\n backgroundColor: theme.tokens.components.accordion.standaloneBackgroundExpanded,\n margin: `0 0 ${theme.spacing(1)}`,\n },\n '& .MuiAccordionSummary-root': {\n padding: `${theme.tokens.components.accordion.summaryPaddingY} ${theme.tokens.components.accordion.summaryPaddingX}`,\n },\n '& .MuiAccordionDetails-root': {\n padding: `0 ${theme.tokens.components.accordion.detailsPaddingX} ${theme.tokens.components.accordion.detailsPaddingBottom}`,\n },\n}));\n\nexport function Accordion(props: AccordionProps) {\n return <MuiAccordion {...props} />;\n}\n\n/**\n * Renders the clickable header of an accordion panel.\n *\n * A default expand/collapse chevron is injected automatically; pass\n * `expandIcon` to override it.\n *\n * For reliable screen-reader support, pair `id` on this component with\n * a matching `aria-controls` pointing to the AccordionDetails panel id,\n * or let MUI auto-generate them by passing a consistent `id` to the\n * parent Accordion:\n *\n * <Accordion>\n * <AccordionSummary id=\"panel1-header\" aria-controls=\"panel1-content\">\n * Title\n * </AccordionSummary>\n * <AccordionDetails id=\"panel1-content\">…</AccordionDetails>\n * </Accordion>\n */\nexport function AccordionSummary({ expandIcon, ...props }: AccordionSummaryProps) {\n return (\n <MuiAccordionSummary expandIcon={expandIcon ?? <ExpandMoreIcon />} {...props} />\n );\n}\n\nexport function AccordionDetails(props: AccordionDetailsProps) {\n return <MuiAccordionDetails {...props} />;\n}\n\nAccordion.displayName = 'ToolkitAccordion';\nAccordionSummary.displayName = 'ToolkitAccordionSummary';\nAccordionDetails.displayName = 'ToolkitAccordionDetails';\nStandaloneAccordion.displayName = 'ToolkitStandaloneAccordion';\n","import React from 'react';\nimport MuiAvatar, { AvatarProps as MuiAvatarProps } from '@mui/material/Avatar';\nimport { styled } from '@mui/material/styles';\nimport { ThemeTokens } from '../../themes/tokens';\nexport { default as AvatarGroup } from '@mui/material/AvatarGroup';\nexport type { AvatarGroupProps } from '@mui/material/AvatarGroup';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';\n\nexport interface AvatarProps extends Omit<MuiAvatarProps, 'ref'> {\n size?: AvatarSize;\n}\n\nexport function getDimension(avatar: ThemeTokens['components']['avatar'], size: AvatarSize): string {\n const map: Record<AvatarSize, string> = {\n xs: avatar.sizeXs,\n sm: avatar.sizeSm,\n md: avatar.sizeMd,\n lg: avatar.sizeLg,\n xl: avatar.sizeXl,\n xxl: avatar.sizeXxl,\n };\n return map[size];\n}\n\nconst StyledAvatar = styled(MuiAvatar, {\n shouldForwardProp: (prop) => prop !== 'size',\n})<AvatarProps>(({ theme, size = 'md' }) => {\n const dimension = getDimension(theme.tokens.components.avatar, size);\n return {\n width: dimension,\n height: dimension,\n };\n});\n\nexport function Avatar({ size = 'md', ...props }: AvatarProps) {\n return <StyledAvatar size={size} {...props} />;\n}\n","import {\n ToggleButton as MuiToggleButton,\n ToggleButtonProps as MuiToggleButtonProps,\n ToggleButtonGroup as MuiToggleButtonGroup,\n ToggleButtonGroupProps as MuiToggleButtonGroupProps,\n} from '@mui/material';\n\nexport type ToggleButtonProps = MuiToggleButtonProps;\nexport type ToggleButtonGroupProps = MuiToggleButtonGroupProps;\n\nexport function ToggleButton(props: ToggleButtonProps) {\n return <MuiToggleButton {...props} />;\n}\nToggleButton.displayName = 'ToolkitToggleButton';\n\nexport function ToggleButtonGroup(props: ToggleButtonGroupProps) {\n return <MuiToggleButtonGroup {...props} />;\n}\nToggleButtonGroup.displayName = 'ToolkitToggleButtonGroup';\n","import React, { useState } from 'react';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport {\n DatePicker as MuiDatePicker,\n DatePickerProps as MuiDatePickerProps,\n} from '@mui/x-date-pickers/DatePicker';\nimport {\n DesktopDatePicker as MuiDesktopDatePicker,\n DesktopDatePickerProps as MuiDesktopDatePickerProps,\n} from '@mui/x-date-pickers/DesktopDatePicker';\nimport {\n MobileDatePicker as MuiMobileDatePicker,\n MobileDatePickerProps as MuiMobileDatePickerProps,\n} from '@mui/x-date-pickers/MobileDatePicker';\nimport {\n DateField as MuiDateField,\n DateFieldProps as MuiDateFieldProps,\n} from '@mui/x-date-pickers/DateField';\nimport {\n StaticDatePicker as MuiStaticDatePicker,\n StaticDatePickerProps as MuiStaticDatePickerProps,\n} from '@mui/x-date-pickers/StaticDatePicker';\nimport {\n TimePicker as MuiTimePicker,\n TimePickerProps as MuiTimePickerProps,\n} from '@mui/x-date-pickers/TimePicker';\nimport {\n DesktopTimePicker as MuiDesktopTimePicker,\n DesktopTimePickerProps as MuiDesktopTimePickerProps,\n} from '@mui/x-date-pickers/DesktopTimePicker';\nimport {\n MobileTimePicker as MuiMobileTimePicker,\n MobileTimePickerProps as MuiMobileTimePickerProps,\n} from '@mui/x-date-pickers/MobileTimePicker';\nimport {\n TimeField as MuiTimeField,\n TimeFieldProps as MuiTimeFieldProps,\n} from '@mui/x-date-pickers/TimeField';\nimport {\n StaticTimePicker as MuiStaticTimePicker,\n StaticTimePickerProps as MuiStaticTimePickerProps,\n} from '@mui/x-date-pickers/StaticTimePicker';\nimport {\n DateTimePicker as MuiDateTimePicker,\n DateTimePickerProps as MuiDateTimePickerProps,\n} from '@mui/x-date-pickers/DateTimePicker';\nimport {\n DesktopDateTimePicker as MuiDesktopDateTimePicker,\n DesktopDateTimePickerProps as MuiDesktopDateTimePickerProps,\n} from '@mui/x-date-pickers/DesktopDateTimePicker';\nimport {\n MobileDateTimePicker as MuiMobileDateTimePicker,\n MobileDateTimePickerProps as MuiMobileDateTimePickerProps,\n} from '@mui/x-date-pickers/MobileDateTimePicker';\nimport {\n DateTimeField as MuiDateTimeField,\n DateTimeFieldProps as MuiDateTimeFieldProps,\n} from '@mui/x-date-pickers/DateTimeField';\nimport {\n StaticDateTimePicker as MuiStaticDateTimePicker,\n StaticDateTimePickerProps as MuiStaticDateTimePickerProps,\n} from '@mui/x-date-pickers/StaticDateTimePicker';\nimport {\n DateCalendar as MuiDateCalendar,\n DateCalendarProps as MuiDateCalendarProps,\n} from '@mui/x-date-pickers/DateCalendar';\nimport type { Dayjs } from 'dayjs';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\nimport Box from '@mui/material/Box';\nimport TextField from '@mui/material/TextField';\nimport { styled } from '@mui/material/styles';\n\n// ─── Re-export types ────────────────────────────────────────────────────────────\n// MUI X v8 removed the date-value generic from component props — types are inferred\n// from the adapter registered via LocalizationProvider.\n\nexport type DatePickerProps = MuiDatePickerProps;\nexport type DesktopDatePickerProps = MuiDesktopDatePickerProps;\nexport type MobileDatePickerProps = MuiMobileDatePickerProps;\nexport type DateFieldProps = MuiDateFieldProps;\nexport type StaticDatePickerProps = MuiStaticDatePickerProps;\nexport type TimePickerProps = MuiTimePickerProps;\nexport type DesktopTimePickerProps = MuiDesktopTimePickerProps;\nexport type MobileTimePickerProps = MuiMobileTimePickerProps;\nexport type TimeFieldProps = MuiTimeFieldProps;\nexport type StaticTimePickerProps = MuiStaticTimePickerProps;\nexport type DateTimePickerProps = MuiDateTimePickerProps;\nexport type DesktopDateTimePickerProps = MuiDesktopDateTimePickerProps;\nexport type MobileDateTimePickerProps = MuiMobileDateTimePickerProps;\nexport type DateTimeFieldProps = MuiDateTimeFieldProps;\nexport type StaticDateTimePickerProps = MuiStaticDateTimePickerProps;\nexport type DateCalendarProps = MuiDateCalendarProps;\n\n// ─── Provider ──────────────────────────────────────────────────────────────────\n\nexport interface DateLocalizationProviderProps {\n children: React.ReactNode;\n}\n\nexport function DateLocalizationProvider({ children }: DateLocalizationProviderProps) {\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n {children}\n </LocalizationProvider>\n );\n}\n\nDateLocalizationProvider.displayName = 'ToolkitDateLocalizationProvider';\n\n// ─── Date Pickers ──────────────────────────────────────────────────────────────\n\nexport function DatePicker(props: DatePickerProps) {\n return <MuiDatePicker {...props} />;\n}\nDatePicker.displayName = 'ToolkitDatePicker';\n\nexport function DesktopDatePicker(props: DesktopDatePickerProps) {\n return <MuiDesktopDatePicker {...props} />;\n}\nDesktopDatePicker.displayName = 'ToolkitDesktopDatePicker';\n\nexport function MobileDatePicker(props: MobileDatePickerProps) {\n return <MuiMobileDatePicker {...props} />;\n}\nMobileDatePicker.displayName = 'ToolkitMobileDatePicker';\n\nexport function DateField(props: DateFieldProps) {\n return <MuiDateField {...props} />;\n}\nDateField.displayName = 'ToolkitDateField';\n\nexport function StaticDatePicker(props: StaticDatePickerProps) {\n return <MuiStaticDatePicker {...props} />;\n}\nStaticDatePicker.displayName = 'ToolkitStaticDatePicker';\n\n// ─── Time Pickers ──────────────────────────────────────────────────────────────\n\nexport function TimePicker(props: TimePickerProps) {\n return <MuiTimePicker {...props} />;\n}\nTimePicker.displayName = 'ToolkitTimePicker';\n\nexport function DesktopTimePicker(props: DesktopTimePickerProps) {\n return <MuiDesktopTimePicker {...props} />;\n}\nDesktopTimePicker.displayName = 'ToolkitDesktopTimePicker';\n\nexport function MobileTimePicker(props: MobileTimePickerProps) {\n return <MuiMobileTimePicker {...props} />;\n}\nMobileTimePicker.displayName = 'ToolkitMobileTimePicker';\n\nexport function TimeField(props: TimeFieldProps) {\n return <MuiTimeField {...props} />;\n}\nTimeField.displayName = 'ToolkitTimeField';\n\nexport function StaticTimePicker(props: StaticTimePickerProps) {\n return <MuiStaticTimePicker {...props} />;\n}\nStaticTimePicker.displayName = 'ToolkitStaticTimePicker';\n\n// ─── Date Time Pickers ─────────────────────────────────────────────────────────\n\nexport function DateTimePicker(props: DateTimePickerProps) {\n return <MuiDateTimePicker {...props} />;\n}\nDateTimePicker.displayName = 'ToolkitDateTimePicker';\n\nexport function DesktopDateTimePicker(props: DesktopDateTimePickerProps) {\n return <MuiDesktopDateTimePicker {...props} />;\n}\nDesktopDateTimePicker.displayName = 'ToolkitDesktopDateTimePicker';\n\nexport function MobileDateTimePicker(props: MobileDateTimePickerProps) {\n return <MuiMobileDateTimePicker {...props} />;\n}\nMobileDateTimePicker.displayName = 'ToolkitMobileDateTimePicker';\n\nexport function DateTimeField(props: DateTimeFieldProps) {\n return <MuiDateTimeField {...props} />;\n}\nDateTimeField.displayName = 'ToolkitDateTimeField';\n\nexport function StaticDateTimePicker(props: StaticDateTimePickerProps) {\n return <MuiStaticDateTimePicker {...props} />;\n}\nStaticDateTimePicker.displayName = 'ToolkitStaticDateTimePicker';\n\nexport function DateCalendar(props: DateCalendarProps) {\n return <MuiDateCalendar {...props} />;\n}\nDateCalendar.displayName = 'ToolkitDateCalendar';\n\n// ─── Custom Range Picker ────────────────────────────────────────────────────────\n\nexport interface DateRangeValue {\n start: Dayjs | null;\n end: Dayjs | null;\n}\n\nexport interface DateRangePickerInputProps {\n value: DateRangeValue;\n onChange: (value: DateRangeValue) => void;\n startLabel?: string;\n endLabel?: string;\n buttonLabel?: string;\n}\n\nconst RangeRow = styled(Box)(({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(2),\n alignItems: 'center',\n}));\n\nexport function DateRangePickerInput({\n value,\n onChange,\n startLabel = 'Start date',\n endLabel = 'End date',\n buttonLabel = 'Click me!',\n}: DateRangePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState<DateRangeValue>(value);\n\n const handleOpen = () => {\n setDraft(value);\n setOpen(true);\n };\n\n const handleCancel = () => setOpen(false);\n\n const handleOk = () => {\n onChange(draft);\n setOpen(false);\n };\n\n return (\n <>\n <Button variant=\"contained\" color=\"inherit\" disableElevation onClick={handleOpen}>\n {buttonLabel}\n </Button>\n <Dialog open={open} onClose={handleCancel} maxWidth=\"sm\" fullWidth>\n <DialogContent>\n <RangeRow>\n <MuiDatePicker\n label={startLabel}\n value={draft.start}\n onChange={(v) => setDraft((prev) => ({ ...prev, start: v }))}\n slotProps={{ textField: { fullWidth: true } }}\n />\n <MuiDatePicker\n label={endLabel}\n value={draft.end}\n onChange={(v) => setDraft((prev) => ({ ...prev, end: v }))}\n slotProps={{ textField: { fullWidth: true } }}\n />\n </RangeRow>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleCancel} color=\"inherit\">Cancel</Button>\n <Button onClick={handleOk} color=\"inherit\">OK</Button>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n\nDateRangePickerInput.displayName = 'ToolkitDateRangePickerInput';\n\nexport interface DateRangePickerCalendarProps {\n value: DateRangeValue;\n onChange: (value: DateRangeValue) => void;\n buttonLabel?: string;\n}\n\nexport function DateRangePickerCalendar({\n value,\n onChange,\n buttonLabel = 'Click me!',\n}: DateRangePickerCalendarProps) {\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState<DateRangeValue>(value);\n const [selecting, setSelecting] = useState<'start' | 'end'>('start');\n\n const handleOpen = () => {\n setDraft(value);\n setSelecting('start');\n setOpen(true);\n };\n\n const handleCancel = () => setOpen(false);\n\n const handleOk = () => {\n onChange(draft);\n setOpen(false);\n };\n\n const handleDaySelect = (date: Dayjs | null) => {\n if (selecting === 'start') {\n setDraft({ start: date, end: null });\n setSelecting('end');\n } else {\n setDraft((prev) => ({ ...prev, end: date }));\n }\n };\n\n return (\n <>\n <Button variant=\"contained\" color=\"inherit\" disableElevation onClick={handleOpen}>\n {buttonLabel}\n </Button>\n <Dialog open={open} onClose={handleCancel}>\n <DialogContent sx={{ p: 1 }}>\n <Box sx={{ mb: 1, px: 1 }}>\n <TextField\n size=\"small\"\n label=\"Selecting\"\n value={selecting === 'start' ? 'Start date' : 'End date'}\n inputProps={{ readOnly: true }}\n fullWidth\n />\n </Box>\n <MuiDateCalendar\n value={selecting === 'start' ? draft.start : draft.end}\n onChange={handleDaySelect}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={handleCancel} color=\"inherit\">Cancel</Button>\n <Button onClick={handleOk} color=\"inherit\">OK</Button>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n\nDateRangePickerCalendar.displayName = 'ToolkitDateRangePickerCalendar';\n","import { Grid2 as MuiGrid2, Grid2Props as MuiGrid2Props } from '@mui/material';\n\nexport type GridProps = MuiGrid2Props;\n\n/**\n * 12-column layout grid, based on MUI Grid2.\n *\n * Use `container` on the wrapper and `size` on children to set column spans.\n * `size` accepts a number (fixed across all breakpoints) or a responsive\n * object mapping breakpoints to spans:\n *\n * size={6} // 6/12 at all sizes\n * size={{ xs: 12, md: 6 }} // full width → half width\n * size=\"grow\" // fills remaining space\n * size=\"auto\" // shrinks to content\n *\n * Spacing multiplies the theme spacing unit (8px):\n * spacing={1} → 8px gap\n * spacing={2} → 16px gap (default on containers)\n * spacing={3} → 24px gap\n * spacing={4} → 32px gap\n * spacing={5} → 40px gap\n *\n * @example\n * // 2-column layout, 16px gap, stacks on mobile\n * <Grid container spacing={2}>\n * <Grid size={{ xs: 12, md: 6 }}>Left</Grid>\n * <Grid size={{ xs: 12, md: 6 }}>Right</Grid>\n * </Grid>\n *\n * @example\n * // 4-column card grid\n * <Grid container spacing={3}>\n * {items.map((item) => (\n * <Grid key={item.id} size={{ xs: 12, sm: 6, md: 3 }}>\n * <Card>…</Card>\n * </Grid>\n * ))}\n * </Grid>\n */\nexport function Grid({ container, spacing, ...props }: GridProps) {\n return (\n <MuiGrid2\n container={container}\n spacing={container && spacing === undefined ? 2 : spacing}\n {...props}\n />\n );\n}\n\nGrid.displayName = 'ToolkitGrid';\n","import React from 'react';\nimport { SvgIconProps } from '@mui/material';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledIconTextRoot, StyledIconTextSymbol } from './IconText.styles';\n\nexport interface IconTextSymbol {\n content?: string;\n id?: string;\n viewBox?: string;\n isMounted?: boolean;\n}\n\nexport interface IconTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** SVG symbol object (e.g. from @online/symbols or an inline SVG descriptor) */\n symbol: IconTextSymbol;\n /** Props forwarded to the MUI SvgIcon wrapper */\n symbolProps?: Omit<SvgIconProps, 'children'>;\n /** Render the icon before or after children */\n symbolPosition?: 'front' | 'end';\n /** Inherit font-family and line-height from the parent (useful inside buttons, links) */\n inheritFontFamily?: boolean;\n}\n\nexport const IconText = React.forwardRef<HTMLDivElement, IconTextProps>(\n function IconText(\n {\n symbol,\n symbolPosition = 'front',\n symbolProps,\n inheritFontFamily = false,\n children,\n ...rest\n },\n ref,\n ) {\n const icon = (\n <StyledIconTextSymbol\n $position={symbolPosition}\n viewBox={symbol.viewBox ?? '0 0 24 24'}\n aria-hidden=\"true\"\n {...symbolProps}\n >\n {symbol.content && <g dangerouslySetInnerHTML={{ __html: symbol.content }} />}\n </StyledIconTextSymbol>\n );\n\n return (\n <StyledIconTextRoot\n ref={ref}\n $inheritFontFamily={inheritFontFamily}\n {...getCleanProps(rest)}\n >\n {symbolPosition === 'front' && icon}\n {children}\n {symbolPosition === 'end' && icon}\n </StyledIconTextRoot>\n );\n },\n);\n\nIconText.displayName = 'ToolkitIconText';\n","import { styled } from '@mui/material/styles';\nimport { SvgIcon } from '@mui/material';\n\nexport const StyledIconTextRoot = styled('div')<{ $inheritFontFamily?: boolean }>(\n ({ $inheritFontFamily }) => ({\n display: 'flex',\n alignItems: 'center',\n backgroundColor: 'inherit',\n color: 'inherit',\n fontSize: 'inherit',\n fontWeight: 'inherit',\n textAlign: 'inherit' as const,\n textTransform: 'inherit' as const,\n ...($inheritFontFamily && {\n fontFamily: 'inherit',\n lineHeight: 'inherit',\n }),\n }),\n);\n\nexport const StyledIconTextSymbol = styled(SvgIcon, {\n shouldForwardProp: (prop) => prop !== '$position',\n})<{ $position: 'front' | 'end' }>(({ theme, $position }) => ({\n flexShrink: 0,\n marginRight: $position === 'front' ? theme.spacing(1) : 0,\n marginLeft: $position === 'end' ? theme.spacing(1) : 0,\n}));\n","import React from 'react';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport {\n StyledWrapper,\n StyledListItemContainer,\n StyledLeftIconWrapper,\n StyledRightIconWrapper,\n StyledLabelContainer,\n StyledLabel,\n StyledCaption,\n} from './InternalLinkItem.styles';\n\nexport interface InternalLinkItemProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {\n /** URL for the anchor href */\n link?: string;\n /** The label to display */\n label: string;\n /** Secondary text displayed beneath the label */\n caption?: string;\n /** Optional icon rendered on the left */\n icon?: React.ReactNode;\n /**\n * Swap the rendered element — pass a React Router `<Link>` or any\n * component that accepts an `href`/`to` prop.\n * Defaults to a plain `<a>`.\n */\n component?: React.ElementType;\n}\n\nexport function InternalLinkItem({\n link,\n icon,\n label,\n caption,\n component,\n ...restProps\n}: InternalLinkItemProps) {\n return (\n <StyledWrapper data-component-id=\"internalLinkItem\">\n <StyledListItemContainer\n component={component ?? 'a'}\n href={link}\n {...getCleanProps(restProps)}\n >\n {icon && (\n <StyledLeftIconWrapper data-testid=\"icon_container\">\n {icon}\n </StyledLeftIconWrapper>\n )}\n <StyledLabelContainer>\n <StyledLabel className=\"itemLabel\">{label}</StyledLabel>\n {caption && <StyledCaption>{caption}</StyledCaption>}\n </StyledLabelContainer>\n <StyledRightIconWrapper className=\"iconColor\" data-testid=\"icon_action_container\">\n <ChevronRightIcon fontSize=\"small\" />\n </StyledRightIconWrapper>\n </StyledListItemContainer>\n </StyledWrapper>\n );\n}\n\nInternalLinkItem.displayName = 'ToolkitInternalLinkItem';\n","import Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\n\nexport const StyledWrapper = styled('div')(({ theme }) => ({\n '& > a, & > div': {\n textDecoration: 'none',\n color: theme.tokens.colors.textPrimary,\n '&:hover': {\n color: theme.tokens.colors.textPrimary,\n },\n },\n}));\n\nexport const StyledListItemContainer = styled(Box)(({ theme }) => ({\n width: '100%',\n minHeight: '66px',\n borderTop: `1px solid ${theme.tokens.colors.divider}`,\n borderBottom: `1px solid ${theme.tokens.colors.divider}`,\n display: 'flex',\n alignItems: 'center',\n textDecoration: 'none',\n color: 'inherit',\n transition: [\n `border-color ${theme.tokens.transitions.durationBase} ease-in`,\n `box-shadow ${theme.tokens.transitions.durationBase} ease-in`,\n `background-color ${theme.tokens.transitions.durationBase} ease-in`,\n `color ${theme.tokens.transitions.durationBase} ease-in`,\n `fill ${theme.tokens.transitions.durationBase} ease-in`,\n ].join(', '),\n\n '& .iconColor svg': {\n color: theme.tokens.colors.primary,\n fill: theme.tokens.colors.primary,\n transition: `all ${theme.tokens.transitions.durationBase} ease`,\n },\n\n '&:hover': {\n backgroundColor: theme.tokens.colors.backgroundSubtle,\n borderTop: `1px solid ${theme.tokens.colors.textPrimary}`,\n borderBottom: `1px solid ${theme.tokens.colors.textPrimary}`,\n cursor: 'pointer',\n '& .itemLabel': {\n textDecoration: 'underline',\n },\n '& .iconColor svg': {\n color: theme.tokens.colors.textPrimary,\n fill: theme.tokens.colors.textPrimary,\n transform: 'translateX(4px)',\n },\n },\n\n '&:focus, &:active': {\n boxShadow: `inset 0 0 0 3px ${theme.tokens.colors.border}`,\n borderTop: '1px solid transparent',\n borderBottom: '1px solid transparent',\n outlineColor: 'transparent',\n outlineStyle: 'solid',\n },\n})) as typeof Box;\n\nexport const StyledLeftIconWrapper = styled('span')({\n display: 'flex',\n paddingLeft: '4px',\n});\n\nexport const StyledRightIconWrapper = styled('span')({\n display: 'flex',\n paddingRight: '4px',\n});\n\nexport const StyledLabelContainer = styled('div')({\n flex: 1,\n padding: '12px 8px',\n});\n\nexport const StyledLabel = styled('p')(({ theme }) => ({\n fontFamily: theme.tokens.typography.fontFamilyBase,\n fontSize: theme.tokens.typography.fontSizeLg,\n lineHeight: '20px',\n fontWeight: theme.tokens.typography.fontWeightSemiBold,\n margin: 0,\n textDecoration: 'none',\n}));\n\nexport const StyledCaption = styled('p')(({ theme }) => ({\n fontFamily: theme.tokens.typography.fontFamilyBase,\n color: theme.tokens.colors.textSecondary,\n fontSize: theme.tokens.typography.fontSizeLg,\n lineHeight: '20px',\n fontWeight: theme.tokens.typography.fontWeightRegular,\n margin: 0,\n textDecoration: 'none',\n}));\n","import React from 'react';\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledAnchor, StyledIconSpan, StyledScreenReaderOnly } from './Link.styles';\n\nexport const Variant = {\n standard: 'standard',\n external: 'external',\n file: 'file',\n} as const;\n\nfunction DocumentIcon() {\n return (\n <SvgIcon viewBox=\"0 0 384 512\" fontSize=\"inherit\">\n <path\n fillRule=\"evenodd\"\n d=\"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128z\"\n />\n </SvgIcon>\n );\n}\n\nfunction getIcon(variant: string, icon?: React.ElementType): React.ElementType | undefined {\n switch (variant) {\n case Variant.external:\n return OpenInNewIcon;\n case Variant.file:\n return DocumentIcon;\n default:\n return icon;\n }\n}\n\nexport interface LinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'color'> {\n /** Content of the link */\n children: React.ReactNode;\n /** Visual variant — controls icon and default target */\n variant?: 'standard' | 'external' | 'file';\n /** Custom icon component (standard variant only) */\n icon?: React.ElementType;\n /** Render the icon on the right instead of the left */\n iconToRight?: boolean;\n /** Extra padding, renders the link as a standalone block-level call-to-action */\n standalone?: boolean;\n /** High-contrast mode for use on dark backgrounds */\n isOnDarkBg?: boolean;\n /** Link colour */\n color?: 'black' | 'primary' | 'error';\n /** Link URL */\n href?: string;\n /** Swap the rendered element — pass a React Router `<Link>` or similar */\n component?: React.ElementType;\n}\n\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n {\n children,\n variant = 'standard',\n icon,\n color = 'primary',\n target: targetProp,\n iconToRight,\n href,\n component,\n standalone,\n isOnDarkBg,\n ...restProps\n },\n ref,\n) {\n const Icon = getIcon(variant, icon);\n const target = variant !== Variant.standard ? '_blank' : targetProp;\n const iconRight = variant === Variant.external ? true : !!iconToRight;\n // React Router uses `to` instead of `href`\n const urlProp = component ? { to: href } : { href };\n\n return (\n <StyledAnchor\n component={component ?? 'a'}\n {...getCleanProps(restProps)}\n {...urlProp}\n data-component-id=\"Link\"\n tint={color}\n isOnDarkBg={isOnDarkBg}\n target={target}\n iconRight={iconRight}\n standalonelink={!!standalone}\n ref={ref}\n >\n {Icon && (\n <StyledIconSpan iconRight={iconRight}>\n <Icon fontSize=\"inherit\" />\n </StyledIconSpan>\n )}\n {children}\n {variant === Variant.external && (\n <StyledScreenReaderOnly>, opens in a new tab</StyledScreenReaderOnly>\n )}\n </StyledAnchor>\n );\n});\n\nLink.displayName = 'ToolkitLink';\n","import Box from '@mui/material/Box';\nimport { styled, alpha } from '@mui/material/styles';\n\ninterface StyledAnchorProps {\n tint?: 'primary' | 'black' | 'error';\n isOnDarkBg?: boolean;\n standalonelink?: boolean;\n iconRight?: boolean;\n}\n\ninterface StyledIconSpanProps {\n iconRight?: boolean;\n}\n\nexport const StyledScreenReaderOnly = styled('span')({\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n});\n\nexport const StyledIconSpan = styled('span', {\n shouldForwardProp: (prop) => prop !== 'iconRight',\n})<StyledIconSpanProps>(({ iconRight }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n paddingLeft: iconRight ? '4px' : undefined,\n paddingRight: iconRight ? undefined : '4px',\n}));\n\nexport const StyledAnchor = styled(Box, {\n shouldForwardProp: (prop) =>\n !['tint', 'isOnDarkBg', 'standalonelink', 'iconRight'].includes(prop as string),\n})<StyledAnchorProps>(({ theme, tint = 'primary', isOnDarkBg, standalonelink, iconRight }) => {\n type TintKey = 'primary' | 'black' | 'error' | 'white';\n const resolvedTint: TintKey = isOnDarkBg ? 'white' : (tint as TintKey);\n\n const baseColors: Record<TintKey, string> = {\n primary: theme.tokens.colors.primary,\n black: theme.tokens.colors.textPrimary,\n error: theme.tokens.colors.error,\n white: theme.palette.common.white,\n };\n\n const hoverColors: Record<TintKey, string> = {\n primary: theme.tokens.colors.textPrimary,\n black: theme.tokens.colors.primary,\n error: theme.tokens.colors.textPrimary,\n white: theme.tokens.colors.border,\n };\n\n const baseColor = baseColors[resolvedTint];\n const hoverColor = hoverColors[resolvedTint];\n\n return {\n display: 'inline-flex',\n alignItems: 'center',\n flexDirection: iconRight ? 'row-reverse' : undefined,\n verticalAlign: 'bottom',\n fontFamily: theme.tokens.typography.fontFamilyBase,\n textDecoration: 'underline',\n borderRadius: theme.tokens.borderRadius.md,\n cursor: 'pointer',\n transition: `all ${theme.tokens.transitions.durationBase} ease`,\n color: baseColor,\n\n '& svg': {\n color: baseColor,\n transition: `all ${theme.tokens.transitions.durationBase} ease`,\n },\n\n '&:hover': {\n textDecoration: 'none',\n color: hoverColor,\n '& svg': { color: hoverColor },\n },\n\n '&:focus-visible': {\n textDecoration: 'underline',\n color: baseColor,\n outline: 'none',\n boxShadow: `0 0 0 3px ${alpha(baseColor, 0.35)}`,\n '& svg': { color: baseColor },\n },\n\n '&:active': {\n color: hoverColor,\n boxShadow: `0 0 0 3px ${alpha(isOnDarkBg ? baseColor : hoverColor, 0.65)}`,\n textDecoration: 'none',\n '& svg': { color: hoverColor },\n },\n\n ...(standalonelink && {\n paddingTop: '0.75rem',\n paddingBottom: '0.75rem',\n }),\n };\n}) as typeof Box;\n","import React from 'react';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledLogoLink, StyledLogoSpan } from './LogoLink.styles';\n\nexport interface LogoLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {\n /** Logo content — pass an `<img>`, inline SVG, or any React node */\n children: React.ReactNode;\n /** Link destination, defaults to '/' */\n href?: string;\n /** Compact height mode (45px instead of 55px) */\n isSmall?: boolean;\n /** Accessible title for the link, defaults to 'Home' */\n title?: string;\n /** Swap the rendered element — pass a React Router `<Link>` or similar */\n component?: React.ElementType;\n}\n\nexport const LogoLink = React.forwardRef<HTMLAnchorElement, LogoLinkProps>(function LogoLink(\n { children, href = '/', isSmall, title = 'Home', component, ...restProps },\n ref,\n) {\n return (\n <StyledLogoLink\n component={component ?? 'a'}\n href={href}\n isSmall={isSmall}\n title={title}\n data-component-id=\"LogoLink\"\n {...getCleanProps(restProps)}\n ref={ref}\n >\n <StyledLogoSpan>{children}</StyledLogoSpan>\n </StyledLogoLink>\n );\n});\n\nLogoLink.displayName = 'ToolkitLogoLink';\n","import Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\n\ninterface StyledLogoLinkProps {\n isSmall?: boolean;\n}\n\nexport const StyledLogoLink = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'isSmall',\n})<StyledLogoLinkProps>(({ theme, isSmall }) => ({\n display: 'inline-flex',\n height: isSmall ? '45px' : '55px',\n flexShrink: 0,\n backgroundColor: theme.tokens.colors.primary,\n color: theme.palette.common.white,\n textDecoration: 'none',\n\n '&:hover > span': {\n transform: 'translateY(5px)',\n },\n\n '@media print': {\n backgroundColor: theme.palette.common.white,\n color: theme.tokens.colors.primaryDark,\n },\n})) as typeof Box;\n\nexport const StyledLogoSpan = styled('span')(({ theme }) => ({\n padding: '0 10px 0 15px',\n backgroundColor: theme.tokens.colors.primary,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: theme.tokens.transitions.durationBase,\n transitionTimingFunction: 'ease-in-out',\n\n '@media (max-width: 640px)': {\n padding: '0 7px 0 10px',\n },\n\n '@media print': {\n backgroundColor: 'transparent',\n },\n}));\n","import React, { useEffect, useRef } from 'react';\nimport Portal from '@mui/material/Portal';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { useForkRef } from '@mui/material/utils';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { backgroundScrollTether } from '../../utils/backgroundScrollTether';\nimport { tabTrap } from '../../utils/tabTrap';\nimport { setA11yMessage } from '../../utils/a11yAnnouncer';\nimport {\n StyledPageSpinnerRoot,\n StyledOverlay,\n StyledSpinnerCentre,\n StyledSpinnerMessage,\n StyledScreenReaderOnly,\n} from './PageSpinner.styles';\n\nconst ARIA_REANNOUNCE_INTERVAL = 30000;\n\nexport interface PageSpinnerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'role'> {\n /** Loading message shown below the spinner */\n message?: string;\n /** Override the visible message with a React node (the `message` prop is still announced to screen readers) */\n customMessageLayout?: React.ReactNode;\n /** Use light-on-dark colour scheme */\n isOnDarkBg?: boolean;\n /** Additional screen reader text when no visible message is needed */\n srText?: string;\n /** DOM node to portal into (defaults to document.body) */\n rootNode?: Element;\n /** Aria-live politeness for the screen reader announcement */\n messageTone?: 'assertive' | 'polite';\n}\n\nexport const PageSpinner = React.forwardRef<HTMLDivElement, PageSpinnerProps>(\n function PageSpinner(\n {\n message = 'Processing, please wait',\n customMessageLayout,\n isOnDarkBg = false,\n srText,\n rootNode = typeof document !== 'undefined' ? document.body : undefined,\n messageTone = 'assertive',\n ...restProps\n },\n ref,\n ) {\n const internalRef = useRef<HTMLDivElement>(null);\n const mergedRef = useForkRef(ref, internalRef);\n\n useEffect(() => {\n const blockKeyDown = (e: KeyboardEvent) => e.preventDefault();\n document.addEventListener('keydown', blockKeyDown);\n return () => document.removeEventListener('keydown', blockKeyDown);\n }, [rootNode]);\n\n useEffect(() => {\n const ariaRole = messageTone === 'polite' ? 'status' : 'alert';\n setA11yMessage(message, messageTone, ariaRole);\n\n const interval = setInterval(() => {\n setA11yMessage(message, messageTone, ariaRole);\n }, ARIA_REANNOUNCE_INTERVAL);\n\n tabTrap(true, internalRef.current, rootNode);\n backgroundScrollTether(true);\n\n return () => {\n setA11yMessage('');\n clearInterval(interval);\n tabTrap(false, internalRef.current, rootNode);\n backgroundScrollTether(false);\n };\n }, [message, rootNode, messageTone]);\n\n return (\n <Portal container={rootNode}>\n <StyledPageSpinnerRoot\n data-component-id=\"PageSpinner\"\n role=\"dialog\"\n ref={mergedRef}\n {...getCleanProps(restProps)}\n >\n <StyledOverlay $darkBg={isOnDarkBg} />\n <StyledSpinnerCentre>\n <CircularProgress\n size={60}\n sx={isOnDarkBg ? { color: 'common.white' } : undefined}\n aria-hidden=\"true\"\n />\n {customMessageLayout ?? (\n <StyledSpinnerMessage $darkBg={isOnDarkBg}>{message}</StyledSpinnerMessage>\n )}\n {srText && <StyledScreenReaderOnly>{srText}</StyledScreenReaderOnly>}\n </StyledSpinnerCentre>\n </StyledPageSpinnerRoot>\n </Portal>\n );\n },\n);\n\nPageSpinner.displayName = 'ToolkitPageSpinner';\n","const getScrollWidth = (): number | null => {\n if (typeof document === 'undefined') {\n return null;\n }\n const documentWidth = document.documentElement.clientWidth;\n const windowWidth = window.innerWidth;\n return windowWidth - documentWidth;\n};\n\n/**\n * Locks/unlocks body scroll by injecting a style tag.\n * Call with `true` to lock, `false` to unlock.\n */\nexport const backgroundScrollTether = (on: boolean): null => {\n if (typeof document === 'undefined') {\n return null;\n }\n const id = 'backgroundScrollTether';\n const get = () => document.querySelector(`#${id}`);\n if (on) {\n if (!get()) {\n const style = document.createElement('style');\n style.id = id;\n style.innerText = `body { padding-right: ${getScrollWidth()}px; overflow-y: hidden; }`;\n document.body.appendChild(style);\n }\n } else {\n const style = get();\n if (style && style.parentNode) style.parentNode.removeChild(style);\n }\n return null;\n};\n","const FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nconst suppressKeys = (on: boolean, self: Element, root: Element | Document) => {\n if (!self || !root) return;\n\n const focusableElements = self.querySelectorAll(FOCUSABLE_SELECTOR);\n let startElement: Element | undefined;\n let endElement: Element | undefined;\n\n if (focusableElements && focusableElements.length >= 1) {\n startElement = focusableElements[0];\n endElement = focusableElements[focusableElements.length - 1];\n }\n\n const handleEvent = (event: KeyboardEvent) => {\n const activeElement = (root as Document).activeElement || document.activeElement;\n if (event.shiftKey && event.key === 'Tab') {\n if (activeElement === startElement && endElement) {\n event.preventDefault();\n (endElement as HTMLElement).focus();\n }\n } else if (event.key === 'Tab') {\n if (activeElement === endElement && startElement) {\n event.preventDefault();\n (startElement as HTMLElement).focus();\n }\n }\n };\n\n if (on) {\n self.addEventListener('keydown', handleEvent as EventListener, true);\n } else {\n self.removeEventListener('keydown', handleEvent as EventListener, true);\n }\n};\n\nconst injectTabTrap = (elem: Element, attr: string, cache: string, disablerValue: string) => {\n const currentIndex = elem.getAttribute(attr);\n elem.setAttribute(attr, disablerValue);\n elem.setAttribute(cache, currentIndex ?? '');\n};\n\nconst ejectTabTrap = (elem: Element, attr: string, cache: string) => {\n const priorIndex = elem.getAttribute(cache) || '';\n if (priorIndex) {\n elem.setAttribute(attr, priorIndex);\n } else {\n elem.removeAttribute(attr);\n }\n elem.removeAttribute(cache);\n};\n\n/**\n * Traps tab focus within `self`, disabling all focusable siblings within `root`.\n * Call with `on=true` to engage, `on=false` to release.\n */\nexport const tabTrap = (\n on: boolean,\n self: Element | null,\n root: Element | ShadowRoot = typeof document !== 'undefined' ? document.body : (null as any),\n) => {\n const applyTabTrap = (topElem: Element) => {\n [...topElem.querySelectorAll('*'), topElem].forEach((elem) => {\n if (elem.hasAttribute('aria-live')) return;\n\n const isSvg = elem.tagName.toLowerCase() === 'svg';\n const attr = isSvg ? 'focusable' : 'tabindex';\n const cache = `data-prior-${attr}`;\n const disablerValue = isSvg ? 'false' : '-1';\n const elemWasTouched = elem.hasAttribute(cache);\n\n if (on) {\n if (!elemWasTouched) {\n injectTabTrap(elem, attr, cache, disablerValue);\n injectTabTrap(elem, 'aria-hidden', 'data-prior-hidden', 'true');\n }\n } else {\n if (elemWasTouched) {\n ejectTabTrap(elem, attr, cache);\n ejectTabTrap(elem, 'aria-hidden', 'data-prior-hidden');\n }\n }\n });\n };\n\n [...(root as Element).children].forEach((topElem) => {\n if (topElem !== self) {\n applyTabTrap(topElem);\n }\n });\n\n if (root !== document.body) {\n [...document.body.children].forEach((topElem) => {\n const shadowHost = (root as ShadowRoot).host;\n if (!(topElem.contains(root as Node) || (shadowHost && topElem.contains(shadowHost)))) {\n applyTabTrap(topElem);\n }\n });\n }\n\n if (self) suppressKeys(on, self, root as Element);\n};\n","const A11Y_REGION_ID = 'a11y-region';\nconst DEFAULT_TONE = 'polite';\nconst DEFAULT_ROLE = 'status';\n\nlet clearTimer: ReturnType<typeof setTimeout>;\n\nfunction createA11yRegion(): HTMLDivElement {\n const region = document.createElement('div');\n region.setAttribute('id', A11Y_REGION_ID);\n region.setAttribute('role', DEFAULT_ROLE);\n region.setAttribute('aria-live', DEFAULT_TONE);\n region.setAttribute('aria-atomic', 'true');\n Object.assign(region.style, {\n border: '0',\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: '0',\n position: 'absolute',\n width: '1px',\n });\n return region;\n}\n\nexport function getA11yRegion(): HTMLElement | null {\n if (typeof document === 'undefined') return null;\n const existing = document.getElementById(A11Y_REGION_ID);\n if (existing) return existing;\n const region = createA11yRegion();\n document.body.appendChild(region);\n return region;\n}\n\n/**\n * Announces a message to screen readers via a live region.\n * Clears automatically after `clearAfter` ms (default 5s).\n */\nexport function setA11yMessage(\n messageText: string,\n messageTone?: string,\n messageRole?: string,\n clearAfter = 5000,\n): void {\n const region = getA11yRegion();\n if (!region) return;\n region.setAttribute('aria-live', messageTone ?? DEFAULT_TONE);\n region.setAttribute('role', messageRole ?? DEFAULT_ROLE);\n region.textContent = messageText || '';\n clearTimeout(clearTimer);\n clearTimer = setTimeout(() => {\n region.textContent = '';\n }, clearAfter);\n}\n","import { styled } from '@mui/material/styles';\nimport { alpha } from '@mui/material/styles';\n\n// Above MUI dialogs (1300) so the spinner always overlays everything\nconst PAGE_SPINNER_Z_INDEX = 1400;\n\ntype DarkBgProp = { $darkBg?: boolean };\n\nexport const StyledPageSpinnerRoot = styled('div')(() => ({\n position: 'relative',\n}));\n\nexport const StyledOverlay = styled('div', {\n shouldForwardProp: (prop) => prop !== '$darkBg',\n})<DarkBgProp>(({ theme, $darkBg = false }) => ({\n position: 'fixed',\n inset: 0,\n zIndex: PAGE_SPINNER_Z_INDEX,\n backgroundColor: $darkBg\n ? alpha(theme.tokens.colors.textPrimary, 0.9)\n : alpha(theme.palette.common.white, 0.9),\n}));\n\nexport const StyledSpinnerCentre = styled('div')(() => ({\n position: 'fixed',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n zIndex: PAGE_SPINNER_Z_INDEX + 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '16px',\n}));\n\nexport const StyledSpinnerMessage = styled('p', {\n shouldForwardProp: (prop) => prop !== '$darkBg',\n})<DarkBgProp>(({ theme, $darkBg = false }) => ({\n margin: 0,\n fontFamily: theme.tokens.typography.fontFamilyBase,\n fontSize: theme.tokens.typography.fontSizeLg,\n fontWeight: theme.tokens.typography.fontWeightRegular,\n lineHeight: theme.tokens.typography.lineHeightBase,\n color: $darkBg ? theme.palette.common.white : theme.tokens.colors.textPrimary,\n textAlign: 'center',\n}));\n\nexport const StyledScreenReaderOnly = styled('span')(() => ({\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0,0,0,0)',\n whiteSpace: 'nowrap',\n border: 0,\n}));\n","import React from 'react';\nimport MuiPagination from '@mui/material/Pagination';\nimport type { PaginationProps as MuiPaginationProps } from '@mui/material/Pagination';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledPaginationItem } from './Pagination.styles';\n\nexport type PaginationVariant = 'text' | 'outlined' | 'soft';\nexport type PaginationShape = 'circular' | 'rounded';\nexport type PaginationColor =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'info'\n | 'success'\n | 'warning'\n | 'error';\n\nexport interface PaginationProps\n extends Omit<MuiPaginationProps, 'variant' | 'color' | 'shape'> {\n /** Visual style variant */\n variant?: PaginationVariant;\n /** Shape of pagination items */\n shape?: PaginationShape;\n /** Color applied to the selected/active item */\n color?: PaginationColor;\n}\n\nexport const Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n function Pagination(\n { variant = 'text', shape = 'circular', color = 'default', ...restProps },\n ref,\n ) {\n return (\n <MuiPagination\n ref={ref}\n data-component-id=\"Pagination\"\n renderItem={(item) => (\n <StyledPaginationItem\n $variant={variant}\n $color={color}\n {...item}\n shape={shape}\n />\n )}\n {...getCleanProps(restProps)}\n />\n );\n },\n);\n\nPagination.displayName = 'ToolkitPagination';\n","import { styled, alpha } from '@mui/material/styles';\nimport type { Theme } from '@mui/material/styles';\nimport MuiPaginationItem from '@mui/material/PaginationItem';\nimport type { PaginationColor } from './Pagination';\n\nfunction getColorValue(theme: Theme, color: PaginationColor): string {\n switch (color) {\n case 'primary':\n return theme.tokens.colors.primary;\n case 'secondary':\n return theme.tokens.colors.secondary;\n case 'info':\n return theme.tokens.colors.info;\n case 'success':\n return theme.tokens.colors.success;\n case 'warning':\n return theme.tokens.colors.warning;\n case 'error':\n return theme.tokens.colors.error;\n default:\n return theme.tokens.colors.textPrimary;\n }\n}\n\ntype StyledItemProps = {\n $variant: 'text' | 'outlined' | 'soft';\n $color: PaginationColor;\n};\n\nexport const StyledPaginationItem = styled(MuiPaginationItem, {\n shouldForwardProp: (prop) => prop !== '$variant' && prop !== '$color',\n})<StyledItemProps>(({ theme, $variant, $color }) => {\n const colorValue = getColorValue(theme, $color);\n\n if ($variant === 'text') {\n return {\n '&.Mui-selected': {\n backgroundColor: alpha(colorValue, 0.08),\n color: colorValue,\n '&:hover': {\n backgroundColor: alpha(colorValue, 0.16),\n },\n },\n };\n }\n\n if ($variant === 'outlined') {\n return {\n border: `1px solid ${alpha(colorValue, 0.24)}`,\n '&.Mui-selected': {\n border: `1px solid ${alpha(colorValue, 0.8)}`,\n color: colorValue,\n backgroundColor: alpha(colorValue, 0.08),\n '&:hover': {\n backgroundColor: alpha(colorValue, 0.16),\n },\n },\n };\n }\n\n // soft variant\n return {\n '&.Mui-selected': {\n backgroundColor: alpha(colorValue, 0.16),\n color: colorValue,\n '&:hover': {\n backgroundColor: alpha(colorValue, 0.32),\n },\n },\n '&:hover': {\n backgroundColor: alpha(colorValue, 0.08),\n },\n };\n});\n","import React from 'react';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledParagraph } from './Paragraph.styles';\n\nexport interface ParagraphProps extends Omit<React.HTMLAttributes<HTMLParagraphElement>, 'color'> {\n /** Visual style variant */\n variant?: 'regular' | 'semibold' | 'bold' | 'overline' | 'primary' | 'secondary';\n /** Renders the correct text colour on a dark background */\n isOnDarkBg?: boolean;\n children: React.ReactNode;\n}\n\nexport const Paragraph = React.forwardRef<HTMLParagraphElement, ParagraphProps>(\n function Paragraph({ children, variant = 'regular', isOnDarkBg = false, ...restProps }, ref) {\n return (\n <StyledParagraph\n $variant={variant}\n $isOnDarkBg={isOnDarkBg}\n data-component-id=\"Paragraph\"\n {...getCleanProps(restProps)}\n ref={ref}\n >\n {children}\n </StyledParagraph>\n );\n },\n);\n\nParagraph.displayName = 'ToolkitParagraph';\n","import { styled } from '@mui/material/styles';\n\ntype StyledParagraphProps = {\n\t$variant?: 'regular' | 'semibold' | 'bold' | 'overline' | 'primary' | 'secondary';\n\t$isOnDarkBg?: boolean;\n};\n\nexport const StyledParagraph = styled('p', {\n\tshouldForwardProp: (prop) => prop !== '$variant' && prop !== '$isOnDarkBg',\n})<StyledParagraphProps>(({ theme, $variant = 'regular', $isOnDarkBg = false }) => ({\n\tmargin: 0,\n\tfontFamily: theme.tokens.typography.fontFamilyBase,\n\toutline: 'transparent',\n\tfontSize: theme.tokens.typography.fontSizeLg,\n\tlineHeight: theme.tokens.typography.lineHeightBase,\n\tcolor: ($isOnDarkBg || theme.palette.mode === 'dark') ? theme.palette.common.white : theme.tokens.colors.textPrimary,\n\n\t...($variant === 'regular' && {\n\t\tfontWeight: theme.tokens.typography.fontWeightRegular,\n\t}),\n\n\t...($variant === 'semibold' && {\n\t\tfontWeight: theme.tokens.typography.fontWeightSemiBold,\n\t}),\n\n\t...($variant === 'bold' && {\n\t\tfontWeight: theme.tokens.typography.fontWeightBold,\n\t}),\n\n\t...($variant === 'primary' && {\n\t\tfontWeight: theme.tokens.typography.fontWeightSemiBold,\n\t}),\n\n\t...($variant === 'secondary' && {\n\t\tfontWeight: theme.tokens.typography.fontWeightBold,\n\t}),\n\n\t...($variant === 'overline' && {\n\t\tcolor: ($isOnDarkBg || theme.palette.mode === 'dark') ? theme.tokens.colors.overlayLight75 : theme.tokens.colors.textSecondary,\n\t\tfontWeight: theme.tokens.typography.fontWeightBold,\n\t\tletterSpacing: '0.125rem',\n\t\ttextTransform: 'uppercase',\n\t}),\n}));\n","import React, { useState } from 'react';\nimport { TextField } from '../TextField';\nimport { PasswordCriteria, passwordValidator } from './PasswordCriteria';\nimport { StyledPasswordRoot, StyledPasswordInputWrapper } from './Password.styles';\nimport { getCleanProps } from '../../utils/getCleanProps';\n\nexport interface PasswordProps {\n isInvalid?: boolean;\n value?: string;\n label?: string;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, isCriteriaMet: boolean) => void;\n ariaDescribedby?: string;\n ariaLabelledby?: string;\n className?: string;\n id?: string;\n}\n\nexport const Password = React.forwardRef<HTMLInputElement, PasswordProps>(\n function Password(\n {\n isInvalid,\n value: initialValue,\n label = 'Password',\n onBlur,\n onChange,\n ariaDescribedby,\n ariaLabelledby,\n className,\n id,\n ...rest\n },\n ref,\n ) {\n const [value, setValue] = useState(initialValue ?? '');\n const [showCriteria, setShowCriteria] = useState(false);\n\n const handleFocus = () => {\n setShowCriteria(true);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n setShowCriteria(false);\n onBlur?.(event);\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n setValue(newValue);\n const validity = passwordValidator(newValue);\n const isCriteriaMet = Object.values(validity).every(Boolean);\n onChange?.(event, isCriteriaMet);\n };\n\n const criteriaId = id ? `${id}-criteria` : 'passwordCriteria';\n const cleanRest = getCleanProps(rest);\n\n return (\n <StyledPasswordRoot className={className} {...cleanRest}>\n <StyledPasswordInputWrapper>\n <TextField\n ref={ref}\n id={id}\n label={ariaLabelledby ? undefined : label}\n type=\"password\"\n showPasswordToggle\n value={value}\n error={isInvalid}\n inputProps={{\n 'aria-describedby': ariaDescribedby ?? criteriaId,\n 'aria-labelledby': ariaLabelledby,\n }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n </StyledPasswordInputWrapper>\n <PasswordCriteria show={showCriteria} value={value} id={criteriaId} />\n </StyledPasswordRoot>\n );\n },\n);\n\nPassword.displayName = 'ToolkitPassword';\n","import React from 'react';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport {\n StyledPasswordRule,\n StyledPasswordRuleIcon,\n StyledPasswordRuleText,\n StyledScreenReaderOnly,\n} from './PasswordRule.styles';\n\nexport interface PasswordRuleProps {\n valid?: boolean;\n rule?: string;\n idx?: number;\n}\n\nexport const PasswordRule = ({ valid = false, rule = '', idx }: PasswordRuleProps) => (\n <StyledPasswordRule\n className={valid ? 'PasswordRule--valid' : 'PasswordRule--invalid'}\n data-testid={`password-rule-${idx}`}\n >\n <StyledPasswordRuleIcon>\n {valid ? (\n <CheckCircleIcon fontSize=\"small\" aria-hidden=\"true\" />\n ) : (\n <CancelIcon fontSize=\"small\" aria-hidden=\"true\" />\n )}\n </StyledPasswordRuleIcon>\n <StyledPasswordRuleText>{rule}</StyledPasswordRuleText>\n <StyledScreenReaderOnly>{valid ? 'supplied' : 'not supplied'}</StyledScreenReaderOnly>\n </StyledPasswordRule>\n);\n\nPasswordRule.displayName = 'ToolkitPasswordRule';\n","import { styled } from '@mui/material/styles';\n\nexport const StyledPasswordRule = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.tokens.spacing.xs,\n padding: `${theme.tokens.spacing.xs} 0`,\n '&.PasswordRule--valid': {\n color: theme.tokens.colors.success,\n },\n '&.PasswordRule--invalid': {\n color: theme.tokens.colors.error,\n },\n}));\n\nexport const StyledPasswordRuleIcon = styled('span')({\n display: 'inline-flex',\n alignItems: 'center',\n flexShrink: 0,\n});\n\nexport const StyledPasswordRuleText = styled('span')(({ theme }) => ({\n fontSize: theme.tokens.typography.fontSizeSm,\n}));\n\nexport const StyledScreenReaderOnly = styled('span')({\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n});\n","import { styled } from '@mui/material/styles';\n\nexport const StyledPasswordCriteriaContainer = styled('div')<{ $show: boolean }>(\n ({ theme, $show }) => ({\n display: $show ? 'block' : 'none',\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: theme.tokens.zIndex.dropdown,\n marginTop: theme.tokens.spacing.xs,\n }),\n);\n\nexport const StyledPasswordRuleTitle = styled('div')(({ theme }) => ({\n color: theme.tokens.colors.textPrimary,\n fontSize: theme.tokens.typography.fontSizeSm,\n fontWeight: theme.tokens.typography.fontWeightMedium,\n padding: `${theme.tokens.spacing.xs} 0`,\n borderBottom: `1px solid ${theme.tokens.colors.border}`,\n marginBottom: theme.tokens.spacing.xs,\n}));\n","import React from 'react';\nimport { Card } from '../Card';\nimport { PasswordRule } from './PasswordRule';\nimport {\n StyledPasswordCriteriaContainer,\n StyledPasswordRuleTitle,\n} from './PasswordCriteria.styles';\n\nexport interface PasswordCriteriaProps {\n show?: boolean;\n value?: string;\n id?: string;\n}\n\nexport const PasswordRules = [\n { key: 'minLength', rule: 'Minimum 8 characters' },\n { key: 'lowercase', rule: 'At least one lowercase letter' },\n { key: 'uppercase', rule: 'At least one uppercase letter' },\n { key: 'digit', rule: 'At least one number' },\n { key: 'special', rule: 'At least one special character' },\n];\n\nexport const passwordValidator = (value: string): Record<string, boolean> => ({\n minLength: value.length >= 8,\n lowercase: /[a-z]/.test(value),\n uppercase: /[A-Z]/.test(value),\n digit: /[0-9]/.test(value),\n special: /[^A-Za-z0-9]/.test(value),\n});\n\nexport const PasswordCriteria = ({ show = false, value = '', id = 'passwordCriteria' }: PasswordCriteriaProps) => {\n const validity = passwordValidator(value);\n return (\n <StyledPasswordCriteriaContainer\n $show={show}\n aria-hidden={!show}\n id={id}\n data-testid=\"password-criteria\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <Card compact>\n <StyledPasswordRuleTitle>Password must contain:</StyledPasswordRuleTitle>\n {PasswordRules.map((item, idx) => (\n <PasswordRule key={item.key} valid={validity[item.key]} rule={item.rule} idx={idx} />\n ))}\n </Card>\n </StyledPasswordCriteriaContainer>\n );\n};\n\nPasswordCriteria.displayName = 'ToolkitPasswordCriteria';\n","import { styled } from '@mui/material/styles';\n\nexport const StyledPasswordRoot = styled('div')({\n position: 'relative',\n});\n\nexport const StyledPasswordInputWrapper = styled('div')({\n display: 'flex',\n position: 'relative',\n});\n","import React from 'react';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport {\n StyledSpinnerContainer,\n StyledSpinnerIconContainer,\n StyledSpinnerBackground,\n StyledSpinner,\n StyledSpinnerMessage,\n StyledScreenReaderOnly,\n} from './Spinner.styles';\nimport type { SpinnerSize } from './Spinner.styles';\n\nexport interface SpinnerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'role'> {\n /** Size of the spinner */\n size?: SpinnerSize;\n /** Message displayed below (or beside when isInline) the spinner */\n message?: React.ReactNode;\n /** Use light-on-dark colour scheme */\n isOnDarkBg?: boolean;\n /** Screen reader text when no visible message is provided */\n srText?: string;\n /** Display the spinner and message side by side */\n isInline?: boolean;\n}\n\nexport const Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n function Spinner(\n { size = 'sm', message, isOnDarkBg = false, srText, isInline = false, ...restProps },\n ref,\n ) {\n return (\n <StyledSpinnerContainer\n ref={ref}\n $inline={isInline}\n data-component-id=\"Spinner\"\n {...getCleanProps(restProps)}\n >\n <StyledSpinnerIconContainer $size={size} aria-hidden=\"true\">\n <StyledSpinnerBackground $size={size} $darkBg={isOnDarkBg} aria-hidden=\"true\" />\n <StyledSpinner $size={size} $darkBg={isOnDarkBg} aria-hidden=\"true\" />\n </StyledSpinnerIconContainer>\n {message && (\n <StyledSpinnerMessage $darkBg={isOnDarkBg} $inline={isInline}>\n {message}\n </StyledSpinnerMessage>\n )}\n {srText && <StyledScreenReaderOnly>{srText}</StyledScreenReaderOnly>}\n </StyledSpinnerContainer>\n );\n },\n);\n\nSpinner.displayName = 'ToolkitSpinner';\n","import { styled, alpha } from '@mui/material/styles';\n\nexport type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst spinnerSizing: Record<SpinnerSize, number> = {\n xs: 20,\n sm: 24,\n md: 40,\n lg: 56,\n xl: 72,\n};\n\ntype SizeProps = { $size: SpinnerSize };\ntype DarkBgProps = { $darkBg: boolean };\ntype InlineProps = { $inline: boolean };\n\nexport const StyledSpinnerContainer = styled('div', {\n shouldForwardProp: (prop) => prop !== '$inline',\n})<InlineProps>({}, ({ $inline }) => ({\n flex: '0 1 100%',\n display: 'flex',\n flexDirection: $inline ? 'row' : 'column',\n alignItems: 'center',\n}));\n\nexport const StyledSpinnerIconContainer = styled('div', {\n shouldForwardProp: (prop) => prop !== '$size' && prop !== '$darkBg',\n})<SizeProps>(({ $size }) => {\n const size = spinnerSizing[$size];\n return {\n position: 'relative',\n width: size,\n height: size,\n };\n});\n\nexport const StyledSpinnerBackground = styled('div', {\n shouldForwardProp: (prop) => prop !== '$size' && prop !== '$darkBg',\n})<SizeProps & DarkBgProps>(({ theme, $size, $darkBg }) => {\n const size = spinnerSizing[$size];\n const lineWidth = Math.round(size / 12);\n const borderColor = $darkBg\n ? alpha(theme.palette.common.white, 0.2)\n : alpha(theme.tokens.colors.textPrimary, 0.1);\n return {\n position: 'absolute',\n width: size,\n height: size,\n borderRadius: '50%',\n border: `${lineWidth}px solid ${borderColor}`,\n };\n});\n\nexport const StyledSpinner = styled('div', {\n shouldForwardProp: (prop) => prop !== '$size' && prop !== '$darkBg',\n})<SizeProps & DarkBgProps>(({ theme, $size, $darkBg }) => {\n const size = spinnerSizing[$size];\n const lineWidth = Math.round(size / 12);\n const animationSpeed = `${1 + size / 100}s`;\n const color = $darkBg ? theme.palette.common.white : theme.tokens.colors.primary;\n return {\n '@keyframes toolkit-spin': {\n '0%': { transform: 'rotate(0deg)' },\n '100%': { transform: 'rotate(360deg)' },\n },\n position: 'absolute',\n width: size,\n height: size,\n borderRadius: '50%',\n borderTop: '3px solid transparent',\n borderRight: '3px solid transparent',\n borderBottom: `${lineWidth}px solid ${color}`,\n borderLeft: `${lineWidth}px solid ${color}`,\n animation: `toolkit-spin ${animationSpeed} infinite linear`,\n };\n});\n\nexport const StyledSpinnerMessage = styled('span', {\n shouldForwardProp: (prop) => prop !== '$darkBg' && prop !== '$inline',\n})<DarkBgProps & InlineProps>(({ theme, $darkBg, $inline }) => ({\n fontFamily: theme.tokens.typography.fontFamilyBase,\n fontSize: theme.tokens.typography.fontSizeSm,\n color: $darkBg ? theme.palette.common.white : theme.tokens.colors.border,\n marginTop: $inline ? 0 : theme.spacing(1),\n marginLeft: $inline ? theme.spacing(1) : 0,\n}));\n\nexport const StyledScreenReaderOnly = styled('span')({\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0,0,0,0)',\n whiteSpace: 'nowrap',\n border: 0,\n});\n","import React from 'react';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport { getCleanProps } from '../../utils/getCleanProps';\nimport { StyledToggleWrapper, StyledSwitch, StyledFieldset, StyledLegend } from './Toggle.styles';\n\nexport interface ToggleProps extends Omit<React.HTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\n /** Unique name for the radio inputs */\n name: string;\n /** Whether the toggle is in the \"on\" state */\n checked?: boolean;\n /** Label displayed above the toggle */\n label?: string;\n /** Helper text displayed beneath the label */\n description?: string;\n /** Error message */\n error?: string;\n /** Callback with the new boolean value when the toggle changes */\n onChange?: (value: boolean) => void;\n /** Blur handler forwarded to both radio inputs */\n onBlur?: () => void;\n}\n\nexport function Toggle({\n name,\n checked = false,\n label,\n description,\n error,\n onChange,\n onBlur,\n ...restProps\n}: ToggleProps) {\n return (\n <StyledFieldset data-component-id=\"toggle\" {...getCleanProps(restProps)}>\n {label && <StyledLegend>{label}</StyledLegend>}\n {description && <FormHelperText>{description}</FormHelperText>}\n <StyledToggleWrapper>\n <StyledSwitch\n htmlFor={`${name}off`}\n selected={!checked}\n controlType=\"off\"\n >\n <input\n checked={!checked}\n id={`${name}off`}\n name={name}\n onChange={() => onChange?.(false)}\n onBlur={onBlur}\n type=\"radio\"\n readOnly={!onChange}\n />\n Off\n </StyledSwitch>\n <StyledSwitch\n htmlFor={`${name}on`}\n selected={checked}\n controlType=\"on\"\n >\n <input\n checked={checked}\n id={`${name}on`}\n name={name}\n onChange={() => onChange?.(true)}\n onBlur={onBlur}\n type=\"radio\"\n readOnly={!onChange}\n />\n On\n </StyledSwitch>\n </StyledToggleWrapper>\n {error && <FormHelperText error>{error}</FormHelperText>}\n </StyledFieldset>\n );\n}\n\nToggle.displayName = 'ToolkitToggle';\n","import { styled } from '@mui/material/styles';\n\nexport const StyledFieldset = styled('fieldset')(({ theme }) => ({\n border: 'none',\n margin: 0,\n padding: 0,\n minWidth: 0,\n}));\n\nexport const StyledLegend = styled('legend')(({ theme }) => ({\n fontFamily: theme.tokens.typography.fontFamilyBase,\n fontSize: theme.tokens.typography.fontSizeLg,\n fontWeight: theme.tokens.typography.fontWeightRegular,\n color: theme.tokens.colors.textPrimary,\n marginBottom: theme.spacing(1),\n padding: 0,\n}));\n\ninterface StyledSwitchProps {\n selected?: boolean;\n controlType?: 'off' | 'on';\n}\n\nexport const StyledToggleWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'row',\n width: theme.spacing(15),\n height: theme.spacing(6),\n backgroundColor: theme.palette.common.white,\n border: `1px solid ${theme.tokens.colors.border}`,\n borderRadius: theme.tokens.borderRadius.md,\n}));\n\nexport const StyledSwitch = styled('label', {\n shouldForwardProp: (prop) => prop !== 'selected' && prop !== 'controlType',\n})<StyledSwitchProps>(({ theme, selected, controlType }) => ({\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '54px',\n fontSize: theme.tokens.typography.fontSizeMd,\n fontFamily: theme.tokens.typography.fontFamilyBase,\n fontWeight: theme.tokens.typography.fontWeightBold,\n color: theme.tokens.colors.textPrimary,\n borderRadius: theme.tokens.borderRadius.md,\n userSelect: 'none',\n cursor: 'pointer',\n transition: `all ${theme.tokens.transitions.durationBase} ease`,\n\n '&::before': {\n position: 'absolute',\n top: 0,\n left: 0,\n display: 'block',\n content: '\"\"',\n border: '1px solid transparent',\n width: '100%',\n height: '100%',\n borderRadius: theme.tokens.borderRadius.md,\n visibility: 'hidden',\n },\n\n '&:active': {\n color: theme.palette.common.white,\n },\n\n '& input': {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n },\n\n ...(!selected && {\n '&:hover': {\n textDecoration: 'underline',\n backgroundColor: theme.tokens.colors.border,\n '&:active': {\n textDecoration: 'none',\n },\n '&::before': {\n visibility: 'visible',\n },\n },\n }),\n\n ...(selected && {\n color: theme.palette.common.white,\n '&::before': {\n visibility: 'visible',\n borderWidth: '3px',\n },\n }),\n\n ...(controlType === 'off' && {\n margin: theme.spacing(0.5),\n '&:focus-within': {\n boxShadow: `inset 0 0 0 3px ${theme.tokens.colors.border}`,\n },\n '&:active': {\n backgroundColor: theme.tokens.colors.backgroundSubtle,\n boxShadow: `inset 3px 3px 0 0 ${theme.tokens.colors.border}, inset -3px -3px 0 0 ${theme.tokens.colors.border}`,\n },\n ...(selected && {\n backgroundColor: theme.tokens.colors.textPrimary,\n }),\n }),\n\n ...(controlType === 'on' && {\n margin: `${theme.spacing(0.5)} ${theme.spacing(0.5)} ${theme.spacing(0.5)} 0`,\n '&:focus-within': {\n boxShadow: `inset 0 0 0 3px ${theme.tokens.colors.primary}`,\n },\n '&:active': {\n backgroundColor: theme.tokens.colors.primary,\n boxShadow: `inset 3px 3px 0 0 ${theme.tokens.colors.primary}, inset -3px -3px 0 0 ${theme.tokens.colors.primary}`,\n },\n ...(selected && {\n backgroundColor: theme.tokens.colors.primary,\n }),\n }),\n}));\n","import React from 'react';\nimport {\n Table as MuiTable,\n TableProps as MuiTableProps,\n TableHead as MuiTableHead,\n TableHeadProps as MuiTableHeadProps,\n TableBody as MuiTableBody,\n TableBodyProps as MuiTableBodyProps,\n TableRow as MuiTableRow,\n TableRowProps as MuiTableRowProps,\n TableCell as MuiTableCell,\n TableCellProps as MuiTableCellProps,\n TableContainer as MuiTableContainer,\n TableContainerProps as MuiTableContainerProps,\n TablePagination as MuiTablePagination,\n TableSortLabel as MuiTableSortLabel,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport type TableProps = MuiTableProps;\nexport type TableHeadProps = MuiTableHeadProps;\nexport type TableBodyProps = MuiTableBodyProps;\nexport type TableRowProps = MuiTableRowProps;\nexport type TableCellProps = MuiTableCellProps;\nexport type TableContainerProps = MuiTableContainerProps;\n\nconst StyledTableContainer = styled(MuiTableContainer)(() => ({\n overflowX: 'auto',\n}));\n\nconst StyledHeadCell = styled(MuiTableCell)(({ theme }) => ({\n fontWeight: theme.tokens.components.table.headerFontWeight,\n backgroundColor: theme.tokens.components.table.headerBackground,\n borderBottomWidth: theme.tokens.components.table.borderWidth,\n borderBottomColor: theme.tokens.components.table.borderColor,\n}));\n\nexport function Table(props: TableProps) {\n return <MuiTable {...props} />;\n}\n\nexport function TableHead(props: TableHeadProps) {\n return <MuiTableHead {...props} />;\n}\n\nexport function TableBody(props: TableBodyProps) {\n return <MuiTableBody {...props} />;\n}\n\nexport function TableRow(props: TableRowProps) {\n return <MuiTableRow {...props} />;\n}\n\nexport function TableCell(props: TableCellProps) {\n return <MuiTableCell {...props} />;\n}\n\nexport function TableHeadCell(props: TableCellProps) {\n return <StyledHeadCell component=\"th\" scope=\"col\" {...props} />;\n}\n\nexport function TableContainer(props: TableContainerProps) {\n return <StyledTableContainer {...props} />;\n}\n\nexport const TablePagination = MuiTablePagination;\nexport const TableSortLabel = MuiTableSortLabel;\n\nTable.displayName = 'ToolkitTable';\nTableHead.displayName = 'ToolkitTableHead';\nTableBody.displayName = 'ToolkitTableBody';\nTableRow.displayName = 'ToolkitTableRow';\nTableCell.displayName = 'ToolkitTableCell';\nTableHeadCell.displayName = 'ToolkitTableHeadCell';\nTableContainer.displayName = 'ToolkitTableContainer';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H1Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H1 = React.forwardRef<HTMLElement, H1Props>(\n function H1({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h1\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH1.displayName = 'ToolkitH1';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H2Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H2 = React.forwardRef<HTMLElement, H2Props>(\n function H2({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h2\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH2.displayName = 'ToolkitH2';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H3Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H3 = React.forwardRef<HTMLElement, H3Props>(\n function H3({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h3\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH3.displayName = 'ToolkitH3';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H4Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H4 = React.forwardRef<HTMLElement, H4Props>(\n function H4({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h4\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH4.displayName = 'ToolkitH4';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H5Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H5 = React.forwardRef<HTMLElement, H5Props>(\n function H5({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h5\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH5.displayName = 'ToolkitH5';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface H6Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const H6 = React.forwardRef<HTMLElement, H6Props>(\n function H6({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"h6\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nH6.displayName = 'ToolkitH6';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface Subtitle1Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const Subtitle1 = React.forwardRef<HTMLElement, Subtitle1Props>(\n function Subtitle1({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"subtitle1\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nSubtitle1.displayName = 'ToolkitSubtitle1';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface Subtitle2Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const Subtitle2 = React.forwardRef<HTMLElement, Subtitle2Props>(\n function Subtitle2({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"subtitle2\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nSubtitle2.displayName = 'ToolkitSubtitle2';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface Body1Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const Body1 = React.forwardRef<HTMLElement, Body1Props>(\n function Body1({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"body1\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nBody1.displayName = 'ToolkitBody1';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface Body2Props extends Omit<TypographyProps, 'variant'> {}\n\nexport const Body2 = React.forwardRef<HTMLElement, Body2Props>(\n function Body2({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"body2\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nBody2.displayName = 'ToolkitBody2';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface CaptionProps extends Omit<TypographyProps, 'variant'> {}\n\nexport const Caption = React.forwardRef<HTMLElement, CaptionProps>(\n function Caption({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"caption\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nCaption.displayName = 'ToolkitCaption';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface OverlineProps extends Omit<TypographyProps, 'variant'> {}\n\nexport const Overline = React.forwardRef<HTMLElement, OverlineProps>(\n function Overline({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"overline\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nOverline.displayName = 'ToolkitOverline';\n","import React from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\n\nexport interface TypographyButtonProps extends Omit<TypographyProps, 'variant'> {}\n\nexport const TypographyButton = React.forwardRef<HTMLElement, TypographyButtonProps>(\n function TypographyButton({ color = 'text.primary', children, ...props }, ref) {\n return (\n <Typography ref={ref} variant=\"button\" color={color} {...props}>\n {children}\n </Typography>\n );\n }\n);\nTypographyButton.displayName = 'ToolkitTypographyButton';\n"],"mappings":"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","names":["MuiThemeProvider","import_react","import_material","import_styles","import_jsx_runtime","MuiTextField","React","TextField","import_jsx_runtime","React","ABNInput","InputAdornment","CircularProgress","import_material","import_styles","import_jsx_runtime","MuiButton","import_material","import_jsx_runtime","MuiChip","import_material","import_styles","import_jsx_runtime","MuiCard","MuiCardContent","MuiCardHeader","MuiCardActions","import_material","import_jsx_runtime","MuiAlert","MuiAlertTitle","import_material","import_styles","import_jsx_runtime","MuiAccordion","MuiAccordionSummary","ExpandMoreIcon","MuiAccordionDetails","import_styles","import_jsx_runtime","MuiAvatar","import_material","import_jsx_runtime","MuiToggleButton","MuiToggleButtonGroup","import_react","import_Button","import_TextField","import_styles","import_jsx_runtime","MuiDatePicker","MuiDesktopDatePicker","MuiMobileDatePicker","MuiDateField","MuiStaticDatePicker","MuiTimePicker","MuiDesktopTimePicker","MuiMobileTimePicker","MuiTimeField","MuiStaticTimePicker","MuiDateTimePicker","MuiDesktopDateTimePicker","MuiMobileDateTimePicker","MuiDateTimeField","MuiStaticDateTimePicker","MuiDateCalendar","Box","Button","Dialog","DialogContent","DialogActions","TextField","import_material","import_jsx_runtime","MuiGrid2","import_react","import_styles","import_material","import_jsx_runtime","React","IconText","import_Box","import_styles","Box","import_jsx_runtime","ChevronRightIcon","import_react","import_Box","import_styles","Box","import_jsx_runtime","SvgIcon","OpenInNewIcon","React","Link","import_react","import_Box","import_styles","Box","import_jsx_runtime","React","LogoLink","import_react","import_CircularProgress","import_styles","StyledScreenReaderOnly","import_jsx_runtime","React","PageSpinner","Portal","CircularProgress","StyledScreenReaderOnly","import_react","import_styles","MuiPaginationItem","import_jsx_runtime","React","Pagination","MuiPagination","import_react","import_styles","import_jsx_runtime","React","Paragraph","import_react","import_styles","StyledScreenReaderOnly","import_jsx_runtime","CheckCircleIcon","CancelIcon","StyledScreenReaderOnly","import_styles","import_jsx_runtime","import_styles","import_jsx_runtime","React","Password","import_react","import_styles","StyledSpinnerMessage","StyledScreenReaderOnly","import_jsx_runtime","React","Spinner","StyledSpinnerMessage","StyledScreenReaderOnly","import_styles","import_jsx_runtime","FormHelperText","import_material","import_styles","import_jsx_runtime","MuiTableContainer","MuiTableCell","MuiTable","MuiTableHead","MuiTableBody","MuiTableRow","MuiTablePagination","MuiTableSortLabel","import_react","import_material","import_jsx_runtime","React","H1","import_react","import_material","import_jsx_runtime","React","H2","import_react","import_material","import_jsx_runtime","React","H3","import_react","import_material","import_jsx_runtime","React","H4","import_react","import_material","import_jsx_runtime","React","H5","import_react","import_material","import_jsx_runtime","React","H6","import_react","import_material","import_jsx_runtime","React","Subtitle1","import_react","import_material","import_jsx_runtime","React","Subtitle2","import_react","import_material","import_jsx_runtime","React","Body1","import_react","import_material","import_jsx_runtime","React","Body2","import_react","import_material","import_jsx_runtime","React","Caption","import_react","import_material","import_jsx_runtime","React","Overline","import_react","import_material","import_jsx_runtime","React","TypographyButton"]}