From b6f8c78fae2fe94b1e7970d160bdb4aa30e87851 Mon Sep 17 00:00:00 2001 From: Zohar Manor-Abel Date: Fri, 8 May 2026 08:52:12 +0000 Subject: [PATCH 1/9] Introduce DiamondDS theme foundation and component updates Introduced the initial Diamond Design System theme foundation, including semantic colour roles, light/dark mode support, CSS variable mappings, and integration with the MUI theming architecture. Updated component styling, states, and overrides across inputs, buttons, checkboxes, radio buttons, overlays, borders, and theme icons. Fixed issues Prettify --- .storybook/ThemeSwapper.tsx | 8 +- .storybook/preview.tsx | 72 +- src/index.ts | 2 +- src/styles/diamondDS/diamond-ds-roles.css | 430 ++++++++ src/themes/DiamondDSTheme.ts | 1122 +++++++++++++++++++++ src/themes/ThemeProvider.tsx | 29 +- tsconfig.json | 18 +- 7 files changed, 1633 insertions(+), 48 deletions(-) create mode 100644 src/styles/diamondDS/diamond-ds-roles.css create mode 100644 src/themes/DiamondDSTheme.ts diff --git a/.storybook/ThemeSwapper.tsx b/.storybook/ThemeSwapper.tsx index efd541cc..99634d0f 100644 --- a/.storybook/ThemeSwapper.tsx +++ b/.storybook/ThemeSwapper.tsx @@ -21,12 +21,14 @@ export const TextDark = "Mode: Dark"; const ThemeSwapper = ({ context, children }: ThemeSwapperProps) => { const { mode, setMode } = useColorScheme(); - //if( !mode ) return useEffect(() => { const selectedThemeMode = context.globals.themeMode || TextLight; - setMode(selectedThemeMode == TextLight ? "light" : "dark"); - }, [context.globals.themeMode]); + const nextMode = selectedThemeMode === TextLight ? "light" : "dark"; + + setMode(nextMode); + document.documentElement.setAttribute("data-mode", nextMode); + }, [context.globals.themeMode, setMode]); return (
diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 4de2bdc4..821b5212 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -1,15 +1,53 @@ -import React from "react"; +import React, { useLayoutEffect } from "react"; import { CssBaseline } from "@mui/material"; import type { Preview } from "@storybook/react"; - import { ThemeProvider } from "../src"; -import { GenericTheme, DiamondTheme } from "../src"; - +import { + GenericTheme, + DiamondTheme, + DiamondDSTheme, + DiamondDSThemeDark, +} from "../src"; import { Context, ThemeSwapper, TextLight, TextDark } from "./ThemeSwapper"; const TextThemeBase = "Theme: Generic"; const TextThemeDiamond = "Theme: Diamond"; +const TextThemeDiamondDS = "Theme: DiamondDS"; + +function resolveTheme(selectedTheme: string, mode: "light" | "dark") { + switch (selectedTheme) { + case TextThemeBase: + return GenericTheme; + case TextThemeDiamondDS: + return mode === "dark" ? DiamondDSThemeDark : DiamondDSTheme; + case TextThemeDiamond: + default: + return DiamondTheme; + } +} + +function ApplyModeToPreviewDoc({ + mode, + doc, +}: { + mode: "light" | "dark"; + doc: Document; +}) { + useLayoutEffect(() => { + const root = doc.documentElement; // + root.setAttribute("data-mode", mode); + + // Optional: keep class too if your CSS supports it + root.classList.toggle("dark", mode === "dark"); + root.classList.toggle("light", mode === "light"); + + root.style.colorScheme = mode; + }, [mode, doc]); + + return null; +} + export const decorators = [ (StoriesWithPadding: React.FC) => { return ( @@ -28,12 +66,16 @@ export const decorators = [ (StoriesWithThemeProvider: React.FC, context: Context) => { const selectedTheme = context.globals.theme || TextThemeBase; const selectedThemeMode = context.globals.themeMode || TextLight; + const mode = selectedThemeMode === TextLight ? "light" : "dark"; + // ensure we target the preview iframe document + const doc: Document = context?.canvasElement?.ownerDocument ?? document; return ( + @@ -48,7 +90,7 @@ const preview: Preview = { toolbar: { title: "Theme", icon: "cog", - items: [TextThemeBase, TextThemeDiamond], + items: [TextThemeBase, TextThemeDiamond, TextThemeDiamondDS], dynamicTitle: true, }, }, @@ -63,8 +105,8 @@ const preview: Preview = { }, }, initialGlobals: { - theme: "Theme: Diamond", - themeMode: "Mode: Light", + theme: TextThemeDiamondDS, + themeMode: TextLight, }, parameters: { controls: { @@ -75,18 +117,6 @@ const preview: Preview = { }, backgrounds: { disable: true }, layout: "fullscreen", - options: { - storySort: { - order: [ - "Introduction", - "Components", - "Theme", - "Theme/Logos", - "Theme/Colours", - "Helpers", - ], - }, - }, }, argTypes: { linkComponent: { diff --git a/src/index.ts b/src/index.ts index 9b8dda18..386c9447 100644 --- a/src/index.ts +++ b/src/index.ts @@ -25,7 +25,7 @@ export * from "./components/helpers/jsonforms"; // themes export * from "./themes/BaseTheme"; export * from "./themes/DiamondTheme"; -export * from "./themes/DiamondOldTheme"; +export * from "./themes/DiamondDSTheme"; export * from "./themes/GenericTheme"; export * from "./themes/ThemeProvider"; export * from "./themes/ThemeManager"; diff --git a/src/styles/diamondDS/diamond-ds-roles.css b/src/styles/diamondDS/diamond-ds-roles.css new file mode 100644 index 00000000..ed198f98 --- /dev/null +++ b/src/styles/diamondDS/diamond-ds-roles.css @@ -0,0 +1,430 @@ +:root, .light, +html[data-mode="light"] { + /* Neutral */ + + --ds-background: #F6F6F9; + --ds-background-channel: 246 246 249; + + --ds-surface: #ffffff; + --ds-surface-channel: 255 255 255; + + --ds-surface-container: #eef1f5; + --ds-surface-container-high: #e6e9f0; + --ds-surface-disabled: rgba(0, 0, 0, 0.08); + + --ds-on-surface: #1a1c23; + --ds-on-surface-variant: #5e6473; + --ds-on-surface-disabled: rgba(0, 0, 0, 0.36); + --ds-action-disabled: rgba(0, 0, 0, 0.30); + --ds-on-solid: #ffffff; + + --ds-on-surface-channel: 26 28 35; + --ds-on-surface-variant-channel: 80 85 99; + + --ds-placeholder: #8a90a0; + --ds-placeholder-focus: #505563; + + --ds-border-subtle: #dde1e8; + --ds-border: #bcc2cd; + --ds-border-emphasis: #a5acb8; + + /* Overlay */ + --ds-overlay-hover: rgba(0, 0, 0, 0.08); + --ds-overlay-hover-solid: rgba(0, 0, 0, 0.16); + --ds-overlay-selected: rgba(0, 0, 0, 0.25); + --ds-overlay-focus: rgba(0, 0, 0, 0.10); + + /* Primary (Indigo-Blue) */ + --ds-primary: #2a4db8; + --ds-on-primary: #ffffff; + --ds-primary-emphasis: #1f3d96; + --ds-primary-accent: #6a86e4; + --ds-primary-container: #e5ebff; + --ds-on-primary-container: #1a2f6b; + --ds-primary-solid: #3f63c9; + --ds-on-primary-solid: #ffffff; + + --ds-on-primary-channel: 255 255 255; + --ds-primary-mainChannel: 42 77 184; + --ds-primary-lightChannel: 106 134 228; + --ds-primary-darkChannel: 31 61 150; + + /* Secondary (Teal) */ + --ds-secondary: #007b84; + --ds-on-secondary: #ffffff; + --ds-secondary-emphasis: #005f67; + --ds-secondary-accent: #27adb7; + --ds-secondary-container: #ddf3f5; + --ds-on-secondary-container: #00474d; + --ds-secondary-solid: #0a858e; + --ds-on-secondary-solid: #ffffff; + + --ds-on-secondary-channel: 255 255 255; + --ds-secondary-mainChannel: 0 123 132; + --ds-secondary-lightChannel: 39 173 183; + --ds-secondary-darkChannel: 0 95 103; + + /* Tertiary (Violet) */ + --ds-tertiary: #8c0070; + --ds-on-tertiary: #ffffff; + --ds-tertiary-emphasis: #6c0057; + --ds-tertiary-accent: #c735a8; + --ds-tertiary-container: #f8e2f2; + --ds-on-tertiary-container: #4f003f; + --ds-tertiary-solid: #b8329b; + --ds-on-tertiary-solid: #ffffff; + + --ds-on-tertiary-channel: 255 255 255; + --ds-tertiary-mainChannel: 140 0 112; + --ds-tertiary-lightChannel: 199 53 168; + --ds-tertiary-darkChannel: 108 0 87; + + /* Brand (Diamond Blue) */ + --ds-brand: #202945; + --ds-on-brand: #ffffff; + --ds-brand-emphasis: #171f35; + --ds-brand-accent: #6a86db; + --ds-brand-container: #e4e8f4; + --ds-on-brand-container: #202945; + --ds-brand-solid: #2f3b63; + --ds-on-brand-solid: #ffffff; + + --ds-brand-fixed: #202945; + --ds-brand-fixed-dim: #586084; + --ds-on-brand-fixed: #ffffff; + + --ds-on-brand-channel: 255 255 255; + --ds-brand-mainChannel: 32 41 69; + --ds-brand-lightChannel: 106 134 219; + --ds-brand-darkChannel: 23 31 53; + + /* Danger (Red) */ + --ds-danger: #b42318; + --ds-on-danger: #ffffff; + --ds-danger-emphasis: #912018; + --ds-danger-accent: #d94f45; + --ds-danger-container: #fde7e5; + --ds-on-danger-container: #6a1b15; + --ds-danger-solid: #d63c41; + --ds-on-danger-solid: #ffffff; + + --ds-on-danger-channel: 255 255 255; + --ds-danger-mainChannel: 180 35 24; + --ds-danger-lightChannel: 217 79 69; + --ds-danger-darkChannel: 145 32 24; + + /* Warning (Orange) */ + --ds-warning: #c96a04; + --ds-on-warning: #ffffff; + --ds-warning-emphasis: #a95703; + --ds-warning-accent: #e98a15; + --ds-warning-container: #fef0df; + --ds-on-warning-container: #6f3200; + --ds-warning-solid: #e97b12; + --ds-on-warning-solid: #ffffff; + + --ds-on-warning-channel: 255 255 255; + --ds-warning-mainChannel: 201 106 4; + --ds-warning-lightChannel: 233 138 21; + --ds-warning-darkChannel: 169 87 3; + + /* Success (Green) */ + --ds-success: #187a2f; + --ds-on-success: #ffffff; + --ds-success-emphasis: #146125; + --ds-success-accent: #2FB344; + --ds-success-container: #e3f4e7; + --ds-on-success-container: #124d22; + --ds-success-solid: #1B8834; + --ds-on-success-solid: #ffffff; + + --ds-on-success-channel: 255 255 255; + --ds-success-mainChannel: 24 122 47; + --ds-success-lightChannel: 47 154 73; + --ds-success-darkChannel: 20 97 37; + + /* Info (Blue) */ + --ds-info: #355ec9; + --ds-on-info: #ffffff; + --ds-info-emphasis: #2a4ea7; + --ds-info-accent: #6f8fe8; + --ds-info-container: #e9efff; + --ds-on-info-container: #1f3b85; + --ds-info-solid: #4d72dd; + --ds-on-info-solid: #ffffff; + + --ds-on-info-channel: 255 255 255; + --ds-info-mainChannel: 53 94 201; + --ds-info-lightChannel: 111 143 232; + --ds-info-darkChannel: 42 78 167; + + /* Highlight */ + --ds-highlight: #d4a900; + --ds-on-highlight: #1a1c23; + --ds-highlight-emphasis: #b89300; + --ds-highlight-accent: #ffd84d; + --ds-highlight-container: #fff4cc; + --ds-on-highlight-container: #6b5500; + --ds-highlight-solid: #b89300; + --ds-on-highlight-solid: #ffffff; + + --ds-on-highlight-channel: 26 28 35; + --ds-highlight-mainChannel: 212 169 0; + --ds-highlight-lightChannel: 255 216 77; + --ds-highlight-darkChannel: 184 147 0; + + /* Focus */ + --ds-focus-ring: var(--ds-primary-accent); + --ds-focus-ring-width: 2px; + --ds-focus-ring-offset: 2px; + + --ds-focus-ring-primary: var(--ds-primary-accent); + --ds-focus-ring-secondary: var(--ds-secondary-accent); + --ds-focus-ring-danger: var(--ds-danger-accent); + --ds-focus-ring-warning: var(--ds-warning-accent); + --ds-focus-ring-success: var(--ds-success-accent); + --ds-focus-ring-info: var(--ds-info-accent); + --ds-focus-ring-brand: var(--ds-brand-accent); + --ds-focus-ring-highlight: var(--ds-highlight-accent); +} + +.dark, +html[data-mode="dark"] { + /* Neutral */ + + --ds-background: #0e1017; + --ds-background-channel: 14 16 23; + + --ds-surface: #161820; + --ds-surface-channel: 22 24 32; + + --ds-surface-container: #222632; + --ds-surface-container-high: #2c3140; + --ds-surface-disabled: rgba(255, 255, 255, 0.14); + + --ds-on-surface: #e8eaf0; + --ds-on-surface-variant: #b6bcc9; + --ds-on-surface-disabled: rgba(255, 255, 255, 0.36); + --ds-action-disabled: rgba(255, 255, 255, 0.30); + --ds-on-solid: #ffffff; + + --ds-on-surface-channel: 232 234 240; + --ds-on-surface-variant-channel: 182 188 201; + + --ds-placeholder: #7a8191; + --ds-placeholder-focus: #b6bcc9; + + --ds-border-subtle: #3a3f4c; + --ds-border: #505664; + --ds-border-emphasis: #7c8394; + + /* Overlay */ + --ds-overlay-hover: rgba(255, 255, 255, 0.16); + --ds-overlay-hover-solid: rgba(255, 255, 255, 0.16); + --ds-overlay-selected: rgba(255, 255, 255, 0.12); + --ds-overlay-focus: rgba(255, 255, 255, 0.12); + + /* Primary */ + --ds-primary: #8aa7ff; + --ds-on-primary: #0b1638; + --ds-primary-emphasis: #c4d4ff; + --ds-primary-accent: #a5bcff; + --ds-primary-container: #1b2c5f; + --ds-on-primary-container: #e8eeff; + --ds-primary-solid: #3f63c9; + --ds-on-primary-solid: #ffffff; + + --ds-on-primary-channel: 11 22 56; + --ds-primary-mainChannel: 138 167 255; + --ds-primary-lightChannel: 196 212 255; + --ds-primary-darkChannel: 165 188 255; + + /* Secondary */ + --ds-secondary: #58d6de; + --ds-on-secondary: #002529; + --ds-secondary-emphasis: #9af0f3; + --ds-secondary-accent: #7be4ea; + --ds-secondary-container: #0d3338; + --ds-on-secondary-container: #ccf7f9; + --ds-secondary-solid: #0a858e; + --ds-on-secondary-solid: #ffffff; + + --ds-on-secondary-channel: 0 37 41; + --ds-secondary-mainChannel: 88 214 222; + --ds-secondary-lightChannel: 154 240 243; + --ds-secondary-darkChannel: 123 228 234; + + /* Tertiary */ + --ds-tertiary: #e587d1; + --ds-on-tertiary: #2a0022; + --ds-tertiary-emphasis: #f7bfeb; + --ds-tertiary-accent: #efa5e0; + --ds-tertiary-container: #381232; + --ds-on-tertiary-container: #f9d8f1; + --ds-tertiary-solid: #b8329b; + --ds-on-tertiary-solid: #ffffff; + + --ds-on-tertiary-channel: 42 0 34; + --ds-tertiary-mainChannel: 229 135 209; + --ds-tertiary-lightChannel: 247 191 235; + --ds-tertiary-darkChannel: 239 165 224; + + /* Brand */ + --ds-brand: #aabdff; + --ds-on-brand: #0d1530; + --ds-brand-emphasis: #d7e1ff; + --ds-brand-accent: #c4d2ff; + --ds-brand-container: #202945; + --ds-on-brand-container: #e3e8f7; + --ds-brand-solid: #3a4a78; + --ds-on-brand-solid: #ffffff; + + --ds-brand-fixed: #202945; + --ds-brand-fixed-dim : #586084; + --ds-on-brand-fixed: #ffffff; + + --ds-on-brand-channel: 13 21 48; + --ds-brand-mainChannel: 170 189 255; + --ds-brand-lightChannel: 215 225 255; + --ds-brand-darkChannel: 196 210 255; + + /* Danger */ + --ds-danger: #ff9088; + --ds-on-danger: #2f0907; + --ds-danger-emphasis: #ffc7c2; + --ds-danger-accent: #ffb0aa; + --ds-danger-container: #3a1613; + --ds-on-danger-container: #ffd9d6; + --ds-danger-solid: #d63c41; + --ds-on-danger-solid: #ffffff; + + --ds-on-danger-channel: 47 9 7; + --ds-danger-mainChannel: 255 144 136; + --ds-danger-lightChannel: 255 199 194; + --ds-danger-darkChannel: 255 176 170; + + /* Warning */ + --ds-warning: #ffb067; + --ds-on-warning: #311700; + --ds-warning-emphasis: #ffd9b0; + --ds-warning-accent: #ffc68a; + --ds-warning-container: #382006; + --ds-on-warning-container: #ffe4c8; + --ds-warning-solid: #f07a13; + --ds-on-warning-solid: #ffffff; + + --ds-on-warning-channel: 49 23 0; + --ds-warning-mainChannel: 255 176 103; + --ds-warning-lightChannel: 255 217 176; + --ds-warning-darkChannel: 255 198 138; + + /* Success */ + --ds-success: #6fd88a; + --ds-on-success: #08210f; + --ds-success-emphasis: #b3f0c0; + --ds-success-accent: #8ae5a2; + --ds-success-container: #10341a; + --ds-on-success-container: #d2f7da; + --ds-success-solid: #23913C; + --ds-on-success-solid: #ffffff; + + --ds-on-success-channel: 8 33 15; + --ds-success-mainChannel: 111 216 138; + --ds-success-lightChannel: 179 240 192; + --ds-success-darkChannel: 138 229 162; + + /* Info */ + --ds-info: #9fb7ff; + --ds-on-info: #101936; + --ds-info-emphasis: #d5e0ff; + --ds-info-accent: #bccdff; + --ds-info-container: #1b2b57; + --ds-on-info-container: #dce4ff; + --ds-info-solid: #4d72dd; + --ds-on-info-solid: #ffffff; + + --ds-on-info-channel: 16 25 54; + --ds-info-mainChannel: 159 183 255; + --ds-info-lightChannel: 213 224 255; + --ds-info-darkChannel: 188 205 255; + + /* Highlight */ + --ds-highlight: #ffd84d; + --ds-on-highlight: #2a2100; + --ds-highlight-emphasis: #fff1b8; + --ds-highlight-accent: #ffeaa0; + --ds-highlight-container: #4b3a05; + --ds-on-highlight-container: #fff4c7; + --ds-highlight-solid: #D4A900; + --ds-on-highlight-solid: #1A1C23; + + --ds-on-highlight-channel: 26 28 35; + --ds-highlight-mainChannel: 255 226 122; + --ds-highlight-lightChannel: 255 241 184; + --ds-highlight-darkChannel: 255 234 160; +} + + +/* Elavation colors + +0: base paper, dialogs on clean surface +1–3: cards, panels, raised sections +4–8: menus, popovers, floating UI +9–16: more obviously separated overlays +17–24: rare, maximum lift + +Figma references: +LIGHT +elevation-0 = #FFFFFF +elevation-1 = #FDFDFE +elevation-2 = #FAFBFC +elevation-3 = #F8F9FB +elevation-4 = #F7F9FB +elevation-5 = #F6F8FA +elevation-6 = #F5F7F9 +elevation-7 = #F4F6F8 +elevation-8 = #F3F5F7 +elevation-9 = #F3F5F7 +elevation-10 = #F2F4F7 +elevation-11 = #F2F4F7 +elevation-12 = #F1F3F6 +elevation-13 = #F1F3F6 +elevation-14 = #F1F3F6 +elevation-15 = #F0F2F5 +elevation-16 = #F0F2F5 +elevation-17 = #F0F2F5 +elevation-18 = #EFF1F4 +elevation-19 = #EFF1F4 +elevation-20 = #EEF1F5 +elevation-21 = #EEF1F5 +elevation-22 = #EEF1F5 +elevation-23 = #EEF1F5 +elevation-24 = #EEF1F5 + +DARK +elevation-0 = #161820 +elevation-1 = #181B23 +elevation-2 = #191C25 +elevation-3 = #1A1E27 +elevation-4 = #1B1F28 +elevation-5 = #1C202A +elevation-6 = #1E222C +elevation-7 = #1F232D +elevation-8 = #20242F +elevation-9 = #20242F +elevation-10 = #212631 +elevation-11 = #212631 +elevation-12 = #222632 +elevation-13 = #222632 +elevation-14 = #222632 +elevation-15 = #242935 +elevation-16 = #242935 +elevation-17 = #252A37 +elevation-18 = #262C39 +elevation-19 = #262C39 +elevation-20 = #28303C +elevation-21 = #28303C +elevation-22 = #2A3140 +elevation-23 = #2A3140 +elevation-24 = #2C3140 +*/ \ No newline at end of file diff --git a/src/themes/DiamondDSTheme.ts b/src/themes/DiamondDSTheme.ts new file mode 100644 index 00000000..b2bf9516 --- /dev/null +++ b/src/themes/DiamondDSTheme.ts @@ -0,0 +1,1122 @@ +import "../styles/diamondDS/diamond-ds-roles.css"; + +import type {} from "@mui/material/themeCssVarsAugmentation"; +import { createTheme } from "@mui/material/styles"; +import type { CSSObject, Theme } from "@mui/material/styles"; + +import type { AlertProps } from "@mui/material/Alert"; +import type { ButtonProps } from "@mui/material/Button"; +import type { CheckboxProps } from "@mui/material/Checkbox"; +import type { ChipProps } from "@mui/material/Chip"; +import type { CircularProgressProps } from "@mui/material/CircularProgress"; +import type { LinearProgressProps } from "@mui/material/LinearProgress"; +import type { OutlinedInputProps } from "@mui/material/OutlinedInput"; +import type { RadioProps } from "@mui/material/Radio"; +import type { TabProps } from "@mui/material/Tab"; + +import { mergeThemeOptions } from "./ThemeManager"; + +import logoImageLight from "../public/diamond/logo-light.svg"; +import logoImageDark from "../public/diamond/logo-dark.svg"; +import logoShort from "../public/diamond/logo-short.svg"; + +type OverrideArgs = { + ownerState: OwnerState; + theme: Theme; +}; + +type ThemeOnlyArgs = { + theme: Theme; +}; + +type IntentColour = + | "primary" + | "secondary" + | "error" + | "warning" + | "info" + | "success"; + +type ExtendedPaletteColor = { + light?: string; + main?: string; + dark?: string; + contrastText?: string; + mainChannel?: string; + lightChannel?: string; + darkChannel?: string; + contrastTextChannel?: string; + container?: string; + onContainer?: string; + solid?: string; + onSolid?: string; +}; + +type IntentPaletteRecord = Partial>; + +type ThemeWithIntentPalette = Theme & { + vars?: { + palette?: IntentPaletteRecord; + }; + palette: Theme["palette"] & IntentPaletteRecord; +}; + +declare module "@mui/material/styles" { + interface TypeBackground { + default: string; + paper: string; + } + + interface TypeText { + placeholder?: string; + placeholderFocus?: string; + onSolid?: string; + primaryChannel?: string; + secondaryChannel?: string; + } + + interface TypeTextOptions { + primary?: string; + secondary?: string; + disabled?: string; + placeholder?: string; + placeholderFocus?: string; + primaryChannel?: string; + secondaryChannel?: string; + } + + interface Palette { + brand?: PaletteColor; + borders: { + subtle: string; + base: string; + emphasis: string; + }; + surface: { + subtle: string; + strong: string; + }; + } + + interface PaletteOptions { + brand?: SimplePaletteColorOptions; + borders?: { + subtle?: string; + base?: string; + emphasis?: string; + }; + surface?: { + subtle?: string; + strong?: string; + }; + } + + interface PaletteColor { + mainChannel?: string; + lightChannel?: string; + darkChannel?: string; + contrastTextChannel?: string; + container?: string; + onContainer?: string; + solid?: string; + onSolid?: string; + } + + interface SimplePaletteColorOptions { + mainChannel?: string; + lightChannel?: string; + darkChannel?: string; + contrastTextChannel?: string; + container?: string; + onContainer?: string; + solid?: string; + onSolid?: string; + } +} + +export type DSMode = "light" | "dark"; + +// --- Helpers --- + +const getIntentPalette = ( + theme: Theme, + colour: IntentColour, +): ExtendedPaletteColor => { + const { vars, palette } = theme as ThemeWithIntentPalette; + + const fallbackPalette = palette[colour]; + const varsPalette = vars?.palette?.[colour]; + + if (process.env.NODE_ENV !== "production" && !fallbackPalette) { + console.warn( + `[DiamondDS] getIntentPalette: colour "${colour}" not found in palette`, + ); + } + + return { + ...fallbackPalette, + ...varsPalette, + }; +}; + +const getFocusToken = (colour?: IntentColour) => { + if (!colour) return "var(--ds-focus-ring)"; + + return `var(--ds-focus-ring-${colour === "error" ? "danger" : colour})`; +}; + +const getFocusOutline = (token?: string): CSSObject => ({ + "&.Mui-focusVisible": { + outline: "var(--ds-focus-ring-width) solid", + outlineColor: token ?? "var(--ds-focus-ring)", + outlineOffset: "var(--ds-focus-ring-offset)", + }, +}); + +const getOverlayInset = (token = "var(--ds-overlay-hover)") => + `inset 0 0 0 9999px ${token}`; + +// --- Theme factory --- + +export const createDiamondTheme = (mode: DSMode): Theme => { + const DiamondDSThemeOptions = mergeThemeOptions({ + typography: { + fontFamily: [ + "Inter Variable", + "Inter", + "system-ui", + "-apple-system", + '"Segoe UI"', + "Roboto", + "Helvetica", + "Arial", + "sans-serif", + ].join(","), + }, + + logos: { + normal: { + src: + mode === "dark" ? (logoImageDark ?? logoImageLight) : logoImageLight, + srcDark: logoImageDark ?? logoImageLight, + alt: "Diamond Light Source Logo", + width: "100", + }, + short: { + src: logoShort, + alt: "Diamond Light Source Logo", + width: "35", + }, + }, + + palette: { + mode, + + action: { + hover: "var(--ds-overlay-hover)", + selected: "var(--ds-overlay-selected)", + focus: "var(--ds-overlay-focus)", + disabled: "var(--ds-on-surface-disabled)", + disabledBackground: "var(--ds-surface-disabled)", + + hoverOpacity: 0.04, + selectedOpacity: 0.08, + disabledOpacity: 0.1, + focusOpacity: 0.1, + }, + + text: { + primary: "var(--ds-on-surface)", + secondary: "var(--ds-on-surface-variant)", + onSolid: "var(--ds-on-solid)", + disabled: "var(--ds-on-surface-disabled)", + placeholder: "var(--ds-placeholder)", + placeholderFocus: "var(--ds-placeholder-focus)", + + primaryChannel: "var(--ds-on-surface-channel)", + secondaryChannel: "var(--ds-on-surface-variant-channel)", + }, + + background: { + default: "rgb(var(--ds-background-channel))", + paper: "rgb(var(--ds-surface-channel))", + }, + + divider: "var(--ds-border-subtle)", + + borders: { + subtle: "var(--ds-border-subtle)", + base: "var(--ds-border)", + emphasis: "var(--ds-border-emphasis)", + }, + + surface: { + subtle: "var(--ds-surface-container)", + strong: "var(--ds-surface-container-high)", + }, + + primary: { + light: "var(--ds-primary-accent)", + main: "var(--ds-primary)", + dark: "var(--ds-primary-emphasis)", + contrastText: "var(--ds-on-primary)", + container: "var(--ds-primary-container)", + onContainer: "var(--ds-on-primary-container)", + solid: "var(--ds-primary-solid)", + onSolid: "var(--ds-on-primary-solid)", + + contrastTextChannel: "var(--ds-on-primary-channel)", + mainChannel: "var(--ds-primary-mainChannel)", + lightChannel: "var(--ds-primary-lightChannel)", + darkChannel: "var(--ds-primary-darkChannel)", + }, + + secondary: { + light: "var(--ds-secondary-accent)", + main: "var(--ds-secondary)", + dark: "var(--ds-secondary-emphasis)", + contrastText: "var(--ds-on-secondary)", + container: "var(--ds-secondary-container)", + onContainer: "var(--ds-on-secondary-container)", + solid: "var(--ds-secondary-solid)", + onSolid: "var(--ds-on-secondary-solid)", + + contrastTextChannel: "var(--ds-on-secondary-channel)", + mainChannel: "var(--ds-secondary-mainChannel)", + lightChannel: "var(--ds-secondary-lightChannel)", + darkChannel: "var(--ds-secondary-darkChannel)", + }, + + brand: { + light: "var(--ds-brand-accent)", + main: "var(--ds-brand)", + dark: "var(--ds-brand-emphasis)", + contrastText: "var(--ds-on-brand)", + container: "var(--ds-brand-container)", + onContainer: "var(--ds-on-brand-container)", + solid: "var(--ds-brand-solid)", + onSolid: "var(--ds-on-brand-solid)", + + contrastTextChannel: "var(--ds-on-brand-channel)", + mainChannel: "var(--ds-brand-mainChannel)", + lightChannel: "var(--ds-brand-lightChannel)", + darkChannel: "var(--ds-brand-darkChannel)", + }, + + error: { + light: "var(--ds-danger-accent)", + main: "var(--ds-danger)", + dark: "var(--ds-danger-emphasis)", + contrastText: "var(--ds-on-danger)", + container: "var(--ds-danger-container)", + onContainer: "var(--ds-on-danger-container)", + solid: "var(--ds-danger-solid)", + onSolid: "var(--ds-on-danger-solid)", + + contrastTextChannel: "var(--ds-on-danger-channel)", + mainChannel: "var(--ds-danger-mainChannel)", + lightChannel: "var(--ds-danger-lightChannel)", + darkChannel: "var(--ds-danger-darkChannel)", + }, + + warning: { + light: "var(--ds-warning-accent)", + main: "var(--ds-warning)", + dark: "var(--ds-warning-emphasis)", + contrastText: "var(--ds-on-warning)", + container: "var(--ds-warning-container)", + onContainer: "var(--ds-on-warning-container)", + solid: "var(--ds-warning-solid)", + onSolid: "var(--ds-on-warning-solid)", + + contrastTextChannel: "var(--ds-on-warning-channel)", + mainChannel: "var(--ds-warning-mainChannel)", + lightChannel: "var(--ds-warning-lightChannel)", + darkChannel: "var(--ds-warning-darkChannel)", + }, + + success: { + light: "var(--ds-success-accent)", + main: "var(--ds-success)", + dark: "var(--ds-success-emphasis)", + contrastText: "var(--ds-on-success)", + container: "var(--ds-success-container)", + onContainer: "var(--ds-on-success-container)", + solid: "var(--ds-success-solid)", + onSolid: "var(--ds-on-success-solid)", + + contrastTextChannel: "var(--ds-on-success-channel)", + mainChannel: "var(--ds-success-mainChannel)", + lightChannel: "var(--ds-success-lightChannel)", + darkChannel: "var(--ds-success-darkChannel)", + }, + + info: { + light: "var(--ds-info-accent)", + main: "var(--ds-info)", + dark: "var(--ds-info-emphasis)", + contrastText: "var(--ds-on-info)", + container: "var(--ds-info-container)", + onContainer: "var(--ds-on-info-container)", + solid: "var(--ds-info-solid)", + onSolid: "var(--ds-on-info-solid)", + + contrastTextChannel: "var(--ds-on-info-channel)", + mainChannel: "var(--ds-info-mainChannel)", + lightChannel: "var(--ds-info-lightChannel)", + darkChannel: "var(--ds-info-darkChannel)", + }, + + grey: { + 50: "#F8F8FA", + 100: "#EEF1F5", + 200: "#E6E9F0", + 300: "#DDE1E8", + 400: "#BCC2CD", + 500: "#A5ACB8", + 600: "#8A90A0", + 700: "#505563", + 800: "#2C3140", + 900: "#1A1C23", + }, + }, + + components: { + MuiPaper: { + styleOverrides: { + root: { + backgroundImage: "none", + }, + }, + }, + + MuiButtonBase: { + defaultProps: { + disableRipple: true, + disableTouchRipple: true, + focusRipple: false, + }, + }, + + MuiButton: { + defaultProps: { + disableFocusRipple: true, + }, + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const base: CSSObject = { + textTransform: "none", + boxShadow: "none", + }; + + const variant = ownerState.variant ?? "text"; + const rawColour = ownerState.color ?? "primary"; + + if (rawColour === "inherit") { + return { + ...base, + ...getFocusOutline(), + }; + } + + const colour = rawColour as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + const subtle = p.container; + const onSubtle = p.onContainer; + + if (variant === "contained") { + return { + ...base, + ...getFocusOutline(focusToken), + backgroundColor: p.solid ?? p.main, + color: p.onSolid ?? "var(--ds-on-solid)", + + "&:hover": { + backgroundColor: p.solid ?? p.main, + boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), + }, + + "&:active": { + backgroundColor: p.solid ?? p.main, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, + + "&.Mui-focusVisible": { + outline: "var(--ds-focus-ring-width) solid", + outlineColor: focusToken, + outlineOffset: "var(--ds-focus-ring-offset)", + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + + "&.Mui-disabled": { + opacity: 1, + backgroundColor: "var(--ds-surface-disabled)", + color: "var(--ds-on-surface-disabled)", + boxShadow: "none", + }, + }; + } + + if (variant === "outlined") { + return { + ...base, + ...getFocusOutline(focusToken), + + color: onSubtle, + backgroundColor: subtle, + + "&:hover": { + backgroundColor: subtle, + boxShadow: getOverlayInset(), + }, + + "&:active": { + backgroundColor: subtle, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, + + "&.Mui-disabled": { + opacity: 1, + backgroundColor: "transparent", + color: "var(--ds-on-surface-disabled)", + boxShadow: "none", + }, + }; + } + + if (variant === "text") { + return { + ...base, + ...getFocusOutline(focusToken), + color: p.main, + + "&:hover": { + backgroundColor: subtle, + boxShadow: getOverlayInset(), + }, + }; + } + + return { + ...base, + ...getFocusOutline(focusToken), + }; + }, + }, + }, + + MuiIconButton: { + defaultProps: { + disableRipple: true, + disableFocusRipple: true, + }, + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs<{ + color?: "inherit" | "default" | IntentColour; + }>): CSSObject => { + const rawColour = ownerState.color ?? "default"; + + if (rawColour === "inherit" || rawColour === "default") { + return { + "&:hover": { + boxShadow: getOverlayInset(), + }, + ...getFocusOutline(), + }; + } + + const colour = rawColour as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + + return { + color: p.main, + + "&:hover": { + backgroundColor: p.container, + boxShadow: getOverlayInset(), + }, + + ...getFocusOutline(focusToken), + }; + }, + }, + }, + + MuiToggleButton: { + styleOverrides: { + root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + textTransform: "none", + border: `1px solid ${theme.palette.borders.base}`, + + "&:hover": { + borderColor: theme.palette.borders.emphasis, + }, + }), + }, + }, + + MuiChip: { + styleOverrides: { + root: ({ ownerState, theme }: OverrideArgs): CSSObject => { + const base: CSSObject = { + "& .MuiChip-icon": { + color: "currentColor", + }, + }; + + const rawColour = ownerState.color ?? "default"; + const isDefault = rawColour === "default"; + const isOutlined = ownerState.variant === "outlined"; + const isInteractive = !!( + ownerState.clickable || ownerState.onDelete + ); + + if (isDefault) { + return { + ...base, + ...(isInteractive ? getFocusOutline() : {}), + + color: "var(--ds-on-surface)", + borderColor: "var(--ds-border)", + backgroundColor: "var(--ds-surface-container-high)", + + ...(isInteractive && { + "&:hover": { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset(), + }, + + "&:active": { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, + + "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": + { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + + "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": + { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + }), + }; + } + + const colour = rawColour as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + + if (isOutlined) { + return { + ...base, + ...(isInteractive ? getFocusOutline(focusToken) : {}), + + color: p.onContainer, + borderColor: p.light, + backgroundColor: p.container, + + ...(isInteractive && { + "&:hover": { + backgroundColor: p.container, + borderColor: p.light, + boxShadow: getOverlayInset(), + }, + + "&:active": { + backgroundColor: p.container, + borderColor: p.light, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, + + "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": + { + backgroundColor: p.container, + borderColor: p.light, + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + + "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": + { + backgroundColor: p.container, + borderColor: p.light, + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + }), + }; + } + + const solid = p.solid ?? p.main; + + return { + ...base, + ...(isInteractive ? getFocusOutline(focusToken) : {}), + + color: p.onSolid ?? "var(--ds-on-solid)", + backgroundColor: solid, + + ...(isInteractive && { + "&:hover": { + backgroundColor: solid, + boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), + }, + + "&:active": { + backgroundColor: solid, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, + + "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": + { + backgroundColor: solid, + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + + "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": + { + backgroundColor: solid, + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + }), + }; + }, + }, + }, + + MuiInputBase: { + styleOverrides: { + input: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + "&::placeholder": { + color: theme.palette.text.placeholder, + opacity: 1, + }, + + "&::-webkit-input-placeholder": { + color: theme.palette.text.placeholder, + opacity: 1, + }, + + "&::-moz-placeholder": { + color: theme.palette.text.placeholder, + opacity: 1, + }, + + "&:focus::placeholder": { + color: theme.palette.text.placeholderFocus, + }, + + "&:focus::-webkit-input-placeholder": { + color: theme.palette.text.placeholderFocus, + opacity: 1, + }, + + "&:focus::-moz-placeholder": { + color: theme.palette.text.placeholderFocus, + opacity: 1, + }, + }), + + root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + "&.Mui-error input::placeholder, &.Mui-error input::-webkit-input-placeholder, &.Mui-error input::-moz-placeholder": + { + color: theme.palette.error.light, + opacity: 1, + }, + + "&.Mui-disabled input::placeholder, &.Mui-disabled input::-webkit-input-placeholder, &.Mui-disabled input::-moz-placeholder": + { + color: theme.palette.text.disabled, + opacity: 1, + }, + }), + }, + }, + + MuiOutlinedInput: { + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const colour = (ownerState.color ?? "primary") as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + + return { + "& .MuiOutlinedInput-notchedOutline": { + borderColor: theme.palette.borders.base, + }, + + "&:hover:not(.Mui-disabled):not(.Mui-error):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": + { + borderColor: theme.palette.borders.emphasis, + }, + + "&.Mui-focused:not(.Mui-disabled):not(.Mui-error) .MuiOutlinedInput-notchedOutline": + { + borderColor: p.light, + borderWidth: 2, + }, + + "&.Mui-focused:hover:not(.Mui-disabled):not(.Mui-error) .MuiOutlinedInput-notchedOutline": + { + borderColor: p.light, + borderWidth: 2, + }, + + "&.Mui-error .MuiOutlinedInput-notchedOutline": { + borderColor: theme.palette.error.light, + }, + + "&.Mui-error:hover:not(.Mui-disabled):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": + { + borderColor: theme.palette.error.light, + }, + + "&.Mui-error.Mui-focused .MuiOutlinedInput-notchedOutline": { + borderColor: theme.palette.error.light, + borderWidth: 2, + }, + + "&.Mui-focusVisible": { + outline: "var(--ds-focus-ring-width) solid", + outlineColor: focusToken, + outlineOffset: "var(--ds-focus-ring-offset)", + }, + + "&.Mui-disabled .MuiOutlinedInput-notchedOutline": { + borderColor: "var(--ds-border-subtle)", + }, + }; + }, + }, + }, + + MuiInputLabel: { + styleOverrides: { + root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + "&:not(.MuiInputLabel-shrink)": { + color: theme.palette.text.secondary, + }, + + "&.Mui-disabled:not(.MuiInputLabel-shrink)": { + color: theme.palette.text.disabled, + }, + + "&.Mui-focused": { + color: theme.palette.primary.main, + }, + + "&.Mui-focused.MuiFormLabel-colorSecondary": { + color: theme.palette.secondary.main, + }, + + "&.Mui-focused.MuiFormLabel-colorSuccess": { + color: theme.palette.success.main, + }, + + "&.Mui-focused.MuiFormLabel-colorWarning": { + color: theme.palette.warning.main, + }, + + "&.Mui-focused.MuiFormLabel-colorError": { + color: theme.palette.error.main, + }, + + "&.Mui-focused.MuiFormLabel-colorInfo": { + color: theme.palette.info.main, + }, + + "&.Mui-focused.Mui-error": { + color: theme.palette.error.main, + }, + + "&.Mui-disabled": { + color: theme.palette.text.disabled, + }, + }), + }, + }, + + MuiTab: { + styleOverrides: { + root: ({ theme }: OverrideArgs): CSSObject => ({ + textTransform: "none", + color: theme.palette.text.secondary, + fontWeight: 500, + minHeight: 44, + + "&:hover": { + color: theme.palette.text.primary, + boxShadow: getOverlayInset(), + }, + + "&.Mui-selected": { + color: theme.palette.primary.main, + fontWeight: 600, + }, + + "&.Mui-disabled": { + color: theme.palette.text.disabled, + }, + + "&.Mui-focusVisible, &:focus-visible": { + outline: "var(--ds-focus-ring-width) solid var(--ds-focus-ring)", + outlineOffset: "-2px", + }, + }), + }, + }, + + MuiAlert: { + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const severity = (ownerState.severity ?? "success") as IntentColour; + const p = getIntentPalette(theme, severity); + + const common: CSSObject = { + borderRadius: 8, + alignItems: "flex-start", + + "& .MuiAlert-icon": { + color: "currentColor", + opacity: 1, + }, + + "& .MuiAlert-action": { + color: "inherit", + + "& .MuiIconButton-root:hover": { + boxShadow: getOverlayInset(), + }, + }, + }; + + if (ownerState.variant === "filled") { + return { + ...common, + backgroundColor: p.solid ?? p.main, + color: p.onSolid ?? "var(--ds-on-solid)", + }; + } + + if (ownerState.variant === "outlined") { + return { + ...common, + backgroundColor: p.container, + color: p.onContainer, + border: `1px solid ${p.light}`, + }; + } + + return { + ...common, + backgroundColor: p.container, + color: p.onContainer, + border: "1px solid var(--ds-border-subtle)", + }; + }, + }, + }, + + MuiLinearProgress: { + styleOverrides: { + root: { + height: 6, + borderRadius: 999, + overflow: "hidden", + backgroundColor: "var(--ds-surface-container-high)", + }, + + bar: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const colour = (ownerState.color ?? "primary") as IntentColour; + const p = getIntentPalette(theme, colour); + + return { + backgroundColor: p.main, + }; + }, + }, + }, + + MuiCircularProgress: { + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const colour = (ownerState.color ?? "primary") as IntentColour; + const p = getIntentPalette(theme, colour); + + return { + color: p.main, + }; + }, + }, + }, + + MuiSkeleton: { + styleOverrides: { + root: { + backgroundColor: "var(--ds-surface-container-high)", + }, + + wave: { + backgroundColor: "var(--ds-surface-container-high)", + position: "relative", + overflow: "hidden", + + "&::after": { + content: '""', + position: "absolute", + inset: 0, + transform: "translateX(-100%)", + backgroundImage: + "linear-gradient(90deg, transparent, var(--ds-overlay-hover), transparent)", + }, + }, + }, + }, + + MuiSnackbar: { + styleOverrides: { + root: { + "& .MuiSnackbarContent-root, & .MuiAlert-root": { + minWidth: 320, + maxWidth: 560, + }, + }, + }, + }, + + MuiSnackbarContent: { + styleOverrides: { + root: { + backgroundColor: "var(--ds-surface-container)", + color: "var(--ds-on-surface)", + border: "1px solid var(--ds-border-subtle)", + borderRadius: 8, + }, + + message: { + padding: "8px 0", + }, + + action: { + color: "inherit", + + "& .MuiIconButton-root:hover": { + boxShadow: getOverlayInset(), + }, + }, + }, + }, + + MuiCheckbox: { + defaultProps: { + disableRipple: true, + }, + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const rawColour = ownerState.color ?? "primary"; + const isDefault = rawColour === "default"; + const colour = rawColour as IntentColour; + + const p = !isDefault ? getIntentPalette(theme, colour) : null; + const focusToken = !isDefault ? getFocusToken(colour) : undefined; + + return { + color: "var(--ds-on-surface-variant)", + borderRadius: 8, + + "&:hover": { + backgroundColor: "var(--ds-overlay-hover)", + }, + + ...getFocusOutline(focusToken), + + "&.Mui-checked": { + color: isDefault ? "var(--ds-on-surface)" : p?.main, + }, + + "&.MuiCheckbox-indeterminate": { + color: isDefault ? "var(--ds-on-surface)" : p?.main, + }, + + "&.Mui-disabled": { + color: "var(--ds-action-disabled)", + }, + }; + }, + }, + }, + + MuiRadio: { + defaultProps: { + disableRipple: true, + }, + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const rawColour = ownerState.color ?? "primary"; + const isDefault = rawColour === "default"; + const colour = rawColour as IntentColour; + + const p = !isDefault ? getIntentPalette(theme, colour) : null; + const focusToken = !isDefault ? getFocusToken(colour) : undefined; + + return { + color: "var(--ds-on-surface-variant)", + borderRadius: "50%", + + "&:hover": { + backgroundColor: "var(--ds-overlay-hover)", + }, + + ...getFocusOutline(focusToken), + + "&.Mui-checked": { + color: isDefault ? "var(--ds-on-surface)" : p?.main, + }, + + "&.Mui-disabled": { + color: "var(--ds-action-disabled)", + }, + }; + }, + }, + }, + }, + }); + + return createTheme(DiamondDSThemeOptions); +}; + +// Convenience exports — derive from the factory so they stay in sync. +export const DiamondDSTheme = createDiamondTheme("light"); +export const DiamondDSThemeDark = createDiamondTheme("dark"); + +// Keep the old export name as an alias for backwards compatibility. +export const createMuiTheme = createDiamondTheme; diff --git a/src/themes/ThemeProvider.tsx b/src/themes/ThemeProvider.tsx index a4badc84..56d306b1 100644 --- a/src/themes/ThemeProvider.tsx +++ b/src/themes/ThemeProvider.tsx @@ -1,26 +1,37 @@ -import { ThemeProvider as MuiThemeProvider } from "@mui/material/styles"; +import React, { useLayoutEffect, useMemo } from "react"; import { CssBaseline } from "@mui/material"; -import { GenericTheme } from "./GenericTheme"; -import { ThemeProviderProps as MuiThemeProviderProps } from "@mui/material/styles"; +import { ThemeProvider as MuiThemeProvider } from "@mui/material/styles"; +import type { ThemeProviderProps as MuiThemeProviderProps } from "@mui/material/styles"; +import { createMuiTheme } from "./DiamondDSTheme"; +import type { DSMode } from "./DiamondDSTheme"; interface ThemeProviderProps extends Partial { baseline?: boolean; + mode?: DSMode; // 'light' | 'dark' (adding 'system' for future use) } -const ThemeProvider = function ({ +export function ThemeProvider({ children, - theme = GenericTheme, baseline = true, defaultMode = "system", + mode = "light", // default to light mode (for now) ...props }: ThemeProviderProps) { + useLayoutEffect(() => { + const root = document.documentElement; + + root.setAttribute("data-mode", mode); + root.classList.toggle("dark", mode === "dark"); + root.classList.toggle("light", mode === "light"); + root.style.colorScheme = mode; + }, [mode]); + + const theme = useMemo(() => createMuiTheme(mode), [mode]); + return ( {baseline && } {children} ); -}; - -export { ThemeProvider }; -export type { ThemeProviderProps }; +} diff --git a/tsconfig.json b/tsconfig.json index beb704da..bdf6a6a5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "esnext", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, @@ -22,14 +18,8 @@ "emitDeclarationOnly": true, "jsx": "react-jsx", "baseUrl": "src", - "types": [ - "vitest/globals", - "@testing-library/jest-dom" - ] + "types": ["vitest/globals", "@testing-library/jest-dom"] }, - "include": [ - "src", - "src/types" - ], + "include": ["src", "src/types"], "rootDir": "src" -} \ No newline at end of file +} From 261a108b5b37eb6468c962ffbd5620cb3c632905 Mon Sep 17 00:00:00 2001 From: Zohar Manor-Abel Date: Fri, 8 May 2026 14:05:02 +0100 Subject: [PATCH 2/9] Add design system intro and foundation documentation pages Mini intro and foundations pages for principles, colour, and typography --- src/storybook/design-system.mdx | 40 + src/storybook/foundation/01-principles.mdx | 149 +++ src/storybook/foundation/02-colours.mdx | 1184 ++++++++++++++++++++ src/storybook/foundation/03-typography.mdx | 96 ++ 4 files changed, 1469 insertions(+) create mode 100644 src/storybook/design-system.mdx create mode 100644 src/storybook/foundation/01-principles.mdx create mode 100644 src/storybook/foundation/02-colours.mdx create mode 100644 src/storybook/foundation/03-typography.mdx diff --git a/src/storybook/design-system.mdx b/src/storybook/design-system.mdx new file mode 100644 index 00000000..3378075f --- /dev/null +++ b/src/storybook/design-system.mdx @@ -0,0 +1,40 @@ +import { Meta } from "@storybook/blocks"; + + + + + +
+ +# Diamond Design System ❖ + +

+ The design system for Diamond Light Source, providing a shared foundation for + building clear, consistent, and reliable scientific interfaces. +

+ +

+ It evolves SciReactUI into a consistent, semantic, and scalable system for + data acquisition, analysis, and operational tools across Diamond. +

+ +

+ Built on structure and precision, the system supports clear, coherent, and + predictable interfaces across scientific workflows and applications. +

+ +## What it helps us do + +
    +
  • Create clearer, more predictable scientific interfaces.
  • +
  • Bring consistency across tools and beamlines.
  • +
  • Reduce cognitive load in complex workflows.
  • +
  • Speed up development with reusable components.
  • +
  • Ensure new tools start coherent and stay aligned.
  • +
+ +
diff --git a/src/storybook/foundation/01-principles.mdx b/src/storybook/foundation/01-principles.mdx new file mode 100644 index 00000000..4e81e88e --- /dev/null +++ b/src/storybook/foundation/01-principles.mdx @@ -0,0 +1,149 @@ +import { Meta } from "@storybook/blocks"; + + + + + +
+ +# Core principles + +

+ These principles guide how we design and build interfaces across the Diamond + Design System. +

+ +
+ +
+ +
+

Clarity

+

+ Interfaces should be easy to understand at a glance. Users should be able to + see system state and next actions without interpreting multiple signals. +

+
+ +
+

Consistency

+

+ Similar elements should look and behave the same across the system, reducing + the need to relearn interactions. +

+
+ +
+

Accessibility

+

+ Accessibility is a baseline, not an enhancement. Interfaces must remain + usable across a wide range of abilities and conditions. +

+
+ +
+

Predictable behaviour

+

+ Interactions should behave as users expect. Reliability is critical in + stateful and high-consequence workflows. +

+
+ +
+

Token-driven

+

+ All visual decisions are defined through design tokens, ensuring consistency + across themes and components. +

+
+ +
+

Semantic first

+

+ Use roles and meaning, not raw values. For example, use + --ds-bg-surface instead of hardcoded colours. +

+
+ +
+

Separation of concerns

+

+ Tokens, components, and implementation are distinct layers, allowing the + system to scale safely. +

+
+ +
+

+
+ +## Do and don’t + +### Do + +
    +
  • Use semantic design tokens.
  • +
  • Start with existing components.
  • +
  • Keep behaviour and interaction patterns consistent.
  • +
+ +### Don’t + +
    +
  • Hardcode colours or spacing values.
  • +
  • Create new components without a clear need.
  • +
  • Override system behaviour without strong justification.
  • +
+ +## Light and dark mode + +

+ Light and dark mode are supported by default and are handled at the system + level, not per component. +

+ +
    +
  • + Theme switching is controlled via data-mode on the{" "} + html element. +
  • +
  • Components should use semantic tokens so colours adapt automatically.
  • +
  • No component should implement separate light/dark logic.
  • +
+ +
{``}
+ +
{``}
+ +
diff --git a/src/storybook/foundation/02-colours.mdx b/src/storybook/foundation/02-colours.mdx new file mode 100644 index 00000000..d03be370 --- /dev/null +++ b/src/storybook/foundation/02-colours.mdx @@ -0,0 +1,1184 @@ +import { Meta } from "@storybook/blocks"; + + + + + +# Colour + +
+ +

+ Diamond Design System uses a role-based colour system designed for scientific + software. Colours are defined through stable UI roles and then mapped into the + MUI theme, so components remain consistent across light and dark mode. +

+ +
+ +
+ +
+ Architecture +
+ Role tokens → MUI theme mapping → components +
+

+ Theme switching happens via <html data-mode="light|dark"> + . Role tokens define all colours and change between themes. The MUI theme + maps those roles into component behaviour, so components update + automatically. +

+
+ +
+ +## How the layers work + +
+ +
+
+

Role tokens

+

+ These are the source of truth for colour in the Diamond Design System. They + define UI roles directly, such as background, surface, border, text, + overlay, focus, and intent. +

+
    +
  • Components should depend on roles, not raw colour values.
  • +
  • Theme switching swaps role values, not component code.
  • +
+
+ +
+

Theme mapping

+

+ The MUI theme maps those role tokens into palette slots, action states, and + component defaults. +

+

+ This lets MUI components use familiar props like{" "} + color="primary" + while still following Diamond Design System rules. +

+
+ +
+

Components

+

+ Components consume those mapped roles. This keeps buttons, fields, tabs, + chips, and custom UI consistent across themes. +

+
    +
  • Structure comes from neutral roles.
  • +
  • Meaning comes from intent roles.
  • +
+
+
+ +
+

Rule of thumb

+

+ Structure uses background and border roles. + Meaning uses intent roles. + Interaction uses overlays and focus tokens. +

+
+ +
+ +## Role tokens + +
+ +

+ Role tokens are the colour source of truth in the Diamond Design System. Each + token represents a specific role in the interface and maps directly to a + concrete value in light and dark mode. +

+ +
+ +
+ +
+ Token groups +
    +
  • + Background: app and page canvas +
  • +
  • + Surfaces: containers and grouped regions +
  • +
  • + Borders: structure and affordance +
  • +
  • + Foreground: text and icon contrast +
  • +
  • + Intent: action, status, and meaning +
  • +
  • + Overlays: hover, selected, focus, disabled +
  • +
+
+ +
+ +## Neutral roles + +
+ +

+ Most of the interface should be built from the neutral layer. This keeps dense + screens calm, predictable, and readable before any meaning is added through + intent colours. +

+ +
+ +
+ +
+
+
+
+

Background and surface roles

+
    +
  • background: --ds-background
  • +
  • surface: --ds-surface
  • +
  • surface container: --ds-surface-container
  • +
  • surface container high: --ds-surface-container-high
  • +
+
+ background + surface + container + container high +
+
+
+ +
+
+
+

Border roles

+
    +
  • + subtle: --ds-border-subtle +
  • +
  • + base: --ds-border +
  • +
  • + emphasis: --ds-border-emphasis +
  • +
+

+ Use subtle for quiet separation, base for standard structure, and emphasis + where affordance needs to be clearer. +

+
+
+ +
+
+
+

Foreground roles

+
    +
  • primary text: --ds-on-surface
  • +
  • secondary text: --ds-on-surface-variant
  • +
  • disabled text: --ds-on-surface-disabled
  • +
  • placeholder: --ds-placeholder
  • +
  • placeholder focus: --ds-placeholder-focus
  • +
+
+
+
+ +
+ +## Intent roles + +
+ +

+ Intent roles add meaning. They are mapped into the MUI palette and also + provide container, solid, on-container, and on-solid values for calmer and + stronger usage patterns. +

+ +
+ +
+ +
+ How intent works +
    +
  • + main is the default semantic colour for text, icons, + borders, and standard intent usage. +
  • +
  • + emphasis is the stronger interactive or more prominent + semantic step. +
  • +
  • + accent supports lighter emphasis and supporting semantic + detail. +
  • +
  • + container is a subtle intent surface. +
  • +
  • + on container is the readable foreground for that subtle + surface. +
  • +
  • + solid is the stronger filled semantic surface. +
  • +
  • + on solid is the readable foreground for that stronger + fill. +
  • +
+
+ +
+
+
+
+

Primary

+
    +
  • main: --ds-primary
  • +
  • emphasis: --ds-primary-emphasis
  • +
  • accent: --ds-primary-accent
  • +
  • container: --ds-primary-container
  • +
  • on container: --ds-on-primary-container
  • +
  • solid: --ds-primary-solid
  • +
  • on solid: --ds-on-primary-solid
  • +
+
+ main + emphasis + solid + container +
+
+
+ +
+
+
+

Secondary

+
    +
  • + main: --ds-secondary +
  • +
  • + emphasis: --ds-secondary-emphasis +
  • +
  • + accent: --ds-secondary-accent +
  • +
  • + container: --ds-secondary-container +
  • +
  • + on container: --ds-on-secondary-container +
  • +
  • + solid: --ds-secondary-solid +
  • +
  • + on solid: --ds-on-secondary-solid +
  • +
+
+ + main + + + emphasis + + + solid + + + container + +
+
+
+ +
+
+
+

Tertiary

+
    +
  • + main: --ds-tertiary +
  • +
  • + emphasis: --ds-tertiary-emphasis +
  • +
  • + accent: --ds-tertiary-accent +
  • +
  • + container: --ds-tertiary-container +
  • +
  • + on container: --ds-on-tertiary-container +
  • +
  • + solid: --ds-tertiary-solid +
  • +
  • + on solid: --ds-on-tertiary-solid +
  • +
+
+ + main + + + emphasis + + + solid + + + container + +
+
+
+ +
+
+
+

Brand

+
    +
  • main: --ds-brand
  • +
  • emphasis: --ds-brand-emphasis
  • +
  • accent: --ds-brand-accent
  • +
  • container: --ds-brand-container
  • +
  • on container: --ds-on-brand-container
  • +
  • solid: --ds-brand-solid
  • +
  • on solid: --ds-on-brand-solid
  • +
+
+ main + solid + container +
+
+
+
+ +
+ +## Status colours + +
+ +

+ Status colours communicate feedback and system meaning. Use them deliberately + and consistently so they remain useful in dense, high-attention workflows. +

+ +
+ +
+ +
+
+
+
+

Success

+
    +
  • main: --ds-success
  • +
  • emphasis: --ds-success-emphasis
  • +
  • accent: --ds-success-accent
  • +
  • container: --ds-success-container
  • +
  • on container: --ds-on-success-container
  • +
  • solid: --ds-success-solid
  • +
  • on solid: --ds-on-success-solid
  • +
+
+ main + solid + container +
+
+
+ +
+
+
+

Warning

+
    +
  • + main: --ds-warning +
  • +
  • + emphasis: --ds-warning-emphasis +
  • +
  • + accent: --ds-warning-accent +
  • +
  • + container: --ds-warning-container +
  • +
  • + on container: --ds-on-warning-container +
  • +
  • + solid: --ds-warning-solid +
  • +
  • + on solid: --ds-on-warning-solid +
  • +
+
+ + main + + + solid + + + container + +
+
+
+ +
+
+
+

Danger / error

+
    +
  • + main: --ds-danger +
  • +
  • + emphasis: --ds-danger-emphasis +
  • +
  • + accent: --ds-danger-accent +
  • +
  • + container: --ds-danger-container +
  • +
  • + on container: --ds-on-danger-container +
  • +
  • + solid: --ds-danger-solid +
  • +
  • + on solid: --ds-on-danger-solid +
  • +
+
+ + main + + + solid + + + container + +
+
+
+ +
+
+
+

Info

+
    +
  • main: --ds-info
  • +
  • emphasis: --ds-info-emphasis
  • +
  • accent: --ds-info-accent
  • +
  • container: --ds-info-container
  • +
  • on container: --ds-on-info-container
  • +
  • solid: --ds-info-solid
  • +
  • on solid: --ds-on-info-solid
  • +
+
+ main + solid + container +
+
+
+
+ +
+ +## How roles map to the MUI palette + +
+ +

+ The Diamond Design System defines colour through semantic role tokens. The MUI + palette is a mapping layer that exposes those roles through the fields MUI + expects, such as light, main, dark, and + contrastText. +

+ +

+ This allows standard MUI components to work with familiar props like + color="primary", while Diamond-specific roles such as + container, on-container, solid, and + on-solid support richer component behaviour and custom UI. +

+ +
+ +
+ +
+ Important +

+ MUI palette fields are not the source of truth. They are derived from + Diamond Design System role tokens so MUI components behave correctly. +

+
+ +
+ +## Surfaces and elevation + +
+ +

+ Diamond Design System uses elevation to create hierarchy, but most elevation + should come from surface colour, borders, and spacing rather than drop + shadows. This keeps dense scientific interfaces calm, readable, and + predictable. +

+ +
+ +
+ +
+ Surface hierarchy +
    +
  • + background → app and page background ( + --ds-background) +
  • +
  • + surface → primary container surface ( + --ds-surface) +
  • +
  • + surface container → grouped sections ( + --ds-surface-container) +
  • +
  • + surface container high → more prominent nested areas ( + --ds-surface-container-high) +
  • +
+

+ Use drop shadows sparingly, mainly for floating overlays such as menus, + popovers, dialogs, and tooltips. +

+
+ +
+

Practical: Paper with surfaces inside

+
{`
+  
+    Section title
+  
+  
+    Interactive area (inputs, controls)
+  
+`}
+
+ +
+ +## Overlays and interaction states + +
+ +

+ Interaction states are defined as explicit overlays so hover, selection, + focus, and disabled behaviour stay consistent across themes. MUI’s + palette.action is mapped directly to these tokens. +

+ +
+ +
+ +
+
+
+
+
+
+
    +
  • emphasis: --ds-overlay-emphasis
  • +
+
+
+ +
+
+
+
+
+
    +
  • + selected: --ds-overlay-selected +
  • +
+
+
+ +
+
+
+
+
+
    +
  • + focus: --ds-overlay-focus +
  • +
+
+
+ +
+
+
+
+
+
    +
  • + disabled: --ds-overlay-disabled +
  • +
+
+
+ +
+
+
+
+
+
    +
  • disabled background: --ds-overlay-disabled-bg
  • +
+
+
+
+ +
+ +## Focus + +
+ +

+ Focus is handled through explicit focus-ring tokens rather than ripple or + shadow. This keeps keyboard interaction visible and steady across components. +

+ +
+ +
+ +
+ Focus tokens +
    +
  • + default: --ds-focus-ring +
  • +
  • + primary: --ds-focus-ring-primary +
  • +
  • + secondary: --ds-focus-ring-secondary +
  • +
  • + danger: --ds-focus-ring-danger +
  • +
  • + warning: --ds-focus-ring-warning +
  • +
  • + success: --ds-focus-ring-success +
  • +
  • + info: --ds-focus-ring-info +
  • +
  • + brand: --ds-focus-ring-brand +
  • +
+
+ +
+ +## Using MUI palette vs Diamond roles + +
+ +

+ Use MUI palette props for intent on MUI components. Use Diamond Design System + role tokens for structure, surfaces, borders, overlays, and custom UI. +

+ +
+ +
+ +
+
+ Use MUI palette when +
    +
  • You’re using MUI components directly.
  • +
  • You want consistent intent behaviour through props.
  • +
  • You’re relying on theme defaults for hover, selected, and focus behaviour.
  • +
+
+

Example

+
{``}
+
+
+ +
+ Use Diamond roles when +
    +
  • You’re styling layout or containers.
  • +
  • You’re building a custom component or anatomy.
  • +
  • You need a specific surface or border role.
  • +
  • You’re styling non-MUI DOM elements.
  • +
+
+

Example

+
{`
+ Panel content +
`}
+
+
+
+ +
+ +## Do and don’t + +
+ +
+
+ Do +
    +
  • Use neutral roles for structure (--ds-background, --ds-surface, --ds-border-*).
  • +
  • Use intent roles for meaning (--ds-primary, --ds-success, --ds-danger, etc.).
  • +
  • Use surfaces to separate regions rather than heavy shadows.
  • +
  • Let the same token names work across light and dark themes.
  • +
  • Ensure disabled and error states override other styling.
  • +
+
+ +
+ Don’t +
    +
  • Don’t hardcode hex values in component code.
  • +
  • Don’t use strong intent colours as general layout backgrounds.
  • +
  • Don’t use colour alone to communicate state.
  • +
  • Don’t mix shadow-based elevation and surface layering unnecessarily.
  • +
  • Don’t invent one-off colour behaviour inside individual components.
  • +
+
+
+ +
+ +## Quick visual check + +
+ +

+ A simple sanity check for surfaces, text, and dividers in the current theme. +

+ +
+ +
+ +
+
+
+

+ Text primary--ds-on-surface +

+

+ Text secondary → --ds-on-surface-variant +

+

+ Text disabled → --ds-on-surface-disabled +

+
+
+

+ Background uses --ds-background, main containers use + --ds-surface, grouped areas use + --ds-surface-container /{" "} + --ds-surface-container-high, and dividers use{" "} + --ds-border-subtle. +

+
+
+ +
+ Diamond Design System principle +

+ Use colour to support careful work, not to decorate it. Build hierarchy with + neutral roles, apply meaning through intent roles, and keep interaction + states explicit and predictable. +

+
+ +
diff --git a/src/storybook/foundation/03-typography.mdx b/src/storybook/foundation/03-typography.mdx new file mode 100644 index 00000000..644f7cdb --- /dev/null +++ b/src/storybook/foundation/03-typography.mdx @@ -0,0 +1,96 @@ +import { Meta } from "@storybook/blocks"; + + + + + +
+ +# Typography + +

+ Typography is a functional tool, not decoration. In scientific software, type + choices affect speed, accuracy, and confidence. +

+ +## Why it matters in Diamond tools + +
    +
  • + Readability and legibility: clear at small sizes and on + imperfect displays. +
  • +
  • + Hierarchy: predictable structure for scanning data-heavy + screens. +
  • +
  • + Accessibility: legible sizing and contrast across contexts. +
  • +
  • + Reduced cognitive load: less visual noise, faster + decisions. +
  • +
  • + Works for dense data: tables, logs, dashboards, forms, and + documentation. +
  • +
+ +## Font roles + +
    +
  • + Inter: default UI font for functional work, including body + text, labels, forms, tables, and component text. +
  • +
  • + IBM Plex Mono: code, identifiers, logs, aligned technical + values, and monospace data. +
  • +
  • + Outfit: optional brand-forward headings and hero text, not + dense operational content. +
  • +
+ +## Practical guidance + +### Do + +
    +
  • Keep hierarchy consistent across products and screens.
  • +
  • Prefer short, clear labels in controls and tables.
  • +
  • Make numbers, units, and technical values easy to scan.
  • +
  • Use mono type where alignment or identifier readability matters.
  • +
+ +### Don’t + +
    +
  • Don’t use brand typography for dense operational content.
  • +
  • Don’t “style your way” out of hierarchy problems.
  • +
  • Don’t hide important information in faint secondary text.
  • +
  • Don’t introduce one-off font sizes without a reusable need.
  • +
+ +## Tokens + +

The current MUI theme uses Inter as the default UI font.

+ +

+ Typography tokens will define display, body, label, and mono usage, for + example `typography.display.*`, `typography.body.*`, `typography.label.*`, and + `typography.mono.*`. +

+ +

+ These tokens should be referenced consistently across design and code rather + than using one-off font sizes, weights, or families. +

+ +
From 4f6b799115d5caa400183eb7e01aace41aca7ff6 Mon Sep 17 00:00:00 2001 From: Zohar Manor-Abel Date: Mon, 11 May 2026 11:51:57 +0100 Subject: [PATCH 3/9] Updated opacity as was too low --- src/themes/DiamondDSTheme.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/themes/DiamondDSTheme.ts b/src/themes/DiamondDSTheme.ts index b2bf9516..50a4d4e8 100644 --- a/src/themes/DiamondDSTheme.ts +++ b/src/themes/DiamondDSTheme.ts @@ -221,8 +221,8 @@ export const createDiamondTheme = (mode: DSMode): Theme => { hoverOpacity: 0.04, selectedOpacity: 0.08, - disabledOpacity: 0.1, - focusOpacity: 0.1, + disabledOpacity: 0.38, + focusOpacity: 0.16, }, text: { From d69d096c0006bf98e2e8371ce94a8d0d5613017e Mon Sep 17 00:00:00 2001 From: Zohar Manor-Abel Date: Tue, 12 May 2026 10:34:11 +0100 Subject: [PATCH 4/9] Restored StoryOrder, added CSS grey to root and remove reference to class --- .storybook/preview.tsx | 14 +++++++ src/styles/diamondDS/diamond-ds-roles.css | 47 ++++++++++++++--------- src/themes/DiamondDSTheme.ts | 20 +++++----- 3 files changed, 53 insertions(+), 28 deletions(-) diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 821b5212..a46c2aa7 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -117,6 +117,20 @@ const preview: Preview = { }, backgrounds: { disable: true }, layout: "fullscreen", + options: { + storySort: { + order: [ + "Introduction", + "Foundation", + "Helpers", + "MUI", + "Components", + "Theme", + "Theme/Logos", + "Theme/Colours", + ], + }, + }, }, argTypes: { linkComponent: { diff --git a/src/styles/diamondDS/diamond-ds-roles.css b/src/styles/diamondDS/diamond-ds-roles.css index ed198f98..4c826945 100644 --- a/src/styles/diamondDS/diamond-ds-roles.css +++ b/src/styles/diamondDS/diamond-ds-roles.css @@ -1,8 +1,21 @@ -:root, .light, -html[data-mode="light"] { +:root { + --ds-grey-50: #f8f8fa; + --ds-grey-100: #eef1f5; + --ds-grey-200: #e6e9f0; + --ds-grey-300: #dde1e8; + --ds-grey-400: #bcc2cd; + --ds-grey-500: #a5acb8; + --ds-grey-600: #8a90a0; + --ds-grey-700: #505563; + --ds-grey-800: #2c3140; + --ds-grey-900: #1a1c23; +} + +:root, +:root[data-mode="light"] { /* Neutral */ - --ds-background: #F6F6F9; + --ds-background: #f6f6f9; --ds-background-channel: 246 246 249; --ds-surface: #ffffff; @@ -15,7 +28,7 @@ html[data-mode="light"] { --ds-on-surface: #1a1c23; --ds-on-surface-variant: #5e6473; --ds-on-surface-disabled: rgba(0, 0, 0, 0.36); - --ds-action-disabled: rgba(0, 0, 0, 0.30); + --ds-action-disabled: rgba(0, 0, 0, 0.3); --ds-on-solid: #ffffff; --ds-on-surface-channel: 26 28 35; @@ -32,7 +45,7 @@ html[data-mode="light"] { --ds-overlay-hover: rgba(0, 0, 0, 0.08); --ds-overlay-hover-solid: rgba(0, 0, 0, 0.16); --ds-overlay-selected: rgba(0, 0, 0, 0.25); - --ds-overlay-focus: rgba(0, 0, 0, 0.10); + --ds-overlay-focus: rgba(0, 0, 0, 0.1); /* Primary (Indigo-Blue) */ --ds-primary: #2a4db8; @@ -132,10 +145,10 @@ html[data-mode="light"] { --ds-success: #187a2f; --ds-on-success: #ffffff; --ds-success-emphasis: #146125; - --ds-success-accent: #2FB344; + --ds-success-accent: #2fb344; --ds-success-container: #e3f4e7; --ds-on-success-container: #124d22; - --ds-success-solid: #1B8834; + --ds-success-solid: #1b8834; --ds-on-success-solid: #ffffff; --ds-on-success-channel: 255 255 255; @@ -168,7 +181,7 @@ html[data-mode="light"] { --ds-highlight-solid: #b89300; --ds-on-highlight-solid: #ffffff; - --ds-on-highlight-channel: 26 28 35; + --ds-on-highlight-channel: 26 28 35; --ds-highlight-mainChannel: 212 169 0; --ds-highlight-lightChannel: 255 216 77; --ds-highlight-darkChannel: 184 147 0; @@ -188,8 +201,7 @@ html[data-mode="light"] { --ds-focus-ring-highlight: var(--ds-highlight-accent); } -.dark, -html[data-mode="dark"] { +:root[data-mode="dark"] { /* Neutral */ --ds-background: #0e1017; @@ -205,7 +217,7 @@ html[data-mode="dark"] { --ds-on-surface: #e8eaf0; --ds-on-surface-variant: #b6bcc9; --ds-on-surface-disabled: rgba(255, 255, 255, 0.36); - --ds-action-disabled: rgba(255, 255, 255, 0.30); + --ds-action-disabled: rgba(255, 255, 255, 0.3); --ds-on-solid: #ffffff; --ds-on-surface-channel: 232 234 240; @@ -280,7 +292,7 @@ html[data-mode="dark"] { --ds-on-brand-solid: #ffffff; --ds-brand-fixed: #202945; - --ds-brand-fixed-dim : #586084; + --ds-brand-fixed-dim: #586084; --ds-on-brand-fixed: #ffffff; --ds-on-brand-channel: 13 21 48; @@ -325,7 +337,7 @@ html[data-mode="dark"] { --ds-success-accent: #8ae5a2; --ds-success-container: #10341a; --ds-on-success-container: #d2f7da; - --ds-success-solid: #23913C; + --ds-success-solid: #23913c; --ds-on-success-solid: #ffffff; --ds-on-success-channel: 8 33 15; @@ -355,16 +367,15 @@ html[data-mode="dark"] { --ds-highlight-accent: #ffeaa0; --ds-highlight-container: #4b3a05; --ds-on-highlight-container: #fff4c7; - --ds-highlight-solid: #D4A900; - --ds-on-highlight-solid: #1A1C23; - + --ds-highlight-solid: #d4a900; + --ds-on-highlight-solid: #1a1c23; + --ds-on-highlight-channel: 26 28 35; --ds-highlight-mainChannel: 255 226 122; --ds-highlight-lightChannel: 255 241 184; --ds-highlight-darkChannel: 255 234 160; } - /* Elavation colors 0: base paper, dialogs on clean surface @@ -427,4 +438,4 @@ elevation-21 = #28303C elevation-22 = #2A3140 elevation-23 = #2A3140 elevation-24 = #2C3140 -*/ \ No newline at end of file +*/ diff --git a/src/themes/DiamondDSTheme.ts b/src/themes/DiamondDSTheme.ts index 50a4d4e8..9d6eb70b 100644 --- a/src/themes/DiamondDSTheme.ts +++ b/src/themes/DiamondDSTheme.ts @@ -368,16 +368,16 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }, grey: { - 50: "#F8F8FA", - 100: "#EEF1F5", - 200: "#E6E9F0", - 300: "#DDE1E8", - 400: "#BCC2CD", - 500: "#A5ACB8", - 600: "#8A90A0", - 700: "#505563", - 800: "#2C3140", - 900: "#1A1C23", + 50: "var(--ds-grey-50)", + 100: "var(--ds-grey-100)", + 200: "var(--ds-grey-200)", + 300: "var(--ds-grey-300)", + 400: "var(--ds-grey-400)", + 500: "var(--ds-grey-500)", + 600: "var(--ds-grey-600)", + 700: "var(--ds-grey-700)", + 800: "var(--ds-grey-800)", + 900: "var(--ds-grey-900)", }, }, From 5f9f66b74af8e9876f2f9c360eb5959f1532fe9f Mon Sep 17 00:00:00 2001 From: Zohar Manor-Abel Date: Tue, 12 May 2026 10:55:53 +0100 Subject: [PATCH 5/9] Update ver Revert "Update ver" This reverts commit 035cb77a1a0ea833dca0667b30d2bfdffa013c63. Reapply "Update ver" This reverts commit e28b0140374da9a65bbcac507788054d73db465d. --- package.json | 88 +- pnpm-lock.yaml | 3987 ++++++++++++++++++++++-------------------------- 2 files changed, 1850 insertions(+), 2225 deletions(-) diff --git a/package.json b/package.json index 52c035e5..279057f7 100644 --- a/package.json +++ b/package.json @@ -49,10 +49,10 @@ "storybook:publish": "gh-pages -b storybook/publish -d storybook-static" }, "dependencies": { - "keycloak-js": "^26.2.1", - "react-icons": "^5.3.0", - "utif": "^3.1.0", - "@mui/icons-material": "^7.0.0" + "@mui/icons-material": "^7.3.11", + "keycloak-js": "^26.2.4", + "react-icons": "^5.6.0", + "utif": "^3.1.0" }, "peerDependencies": { "@emotion/react": "^11.13.3", @@ -60,62 +60,62 @@ "@jsonforms/core": "^3.7.0", "@jsonforms/material-renderers": "^3.7.0", "@jsonforms/react": "^3.7.0", - "@mui/material": "^7.0.0", "@mui/icons-material": "^7.0.0", + "@mui/material": "^7.0.0", "react": "^18.3.1" }, "devDependencies": { - "@babel/core": "^7.26.10", - "@babel/preset-env": "^7.26.10", - "@babel/preset-react": "^7.25.9", - "@babel/preset-typescript": "^7.26.10", - "@chromatic-com/storybook": "^3.2.2", - "@eslint/eslintrc": "^3.2.0", - "@rollup/plugin-commonjs": "^28.0.1", + "@babel/core": "^7.29.0", + "@babel/preset-env": "^7.29.5", + "@babel/preset-react": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@chromatic-com/storybook": "^3.2.7", + "@eslint/eslintrc": "^3.3.5", + "@rollup/plugin-commonjs": "^28.0.9", "@rollup/plugin-image": "^3.0.3", "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.3.0", + "@rollup/plugin-node-resolve": "^15.3.1", "@rollup/plugin-terser": "^0.4.4", - "@rollup/plugin-typescript": "^12.1.1", - "@storybook/addon-actions": "^8.6.15", - "@storybook/addon-controls": "^8.6.15", - "@storybook/addon-essentials": "^8.6.15", - "@storybook/addon-interactions": "^8.6.15", - "@storybook/addon-links": "^8.6.15", - "@storybook/addon-toolbars": "^8.6.15", - "@storybook/addon-webpack5-compiler-swc": "^1.0.5", - "@storybook/blocks": "^8.6.15", - "@storybook/react": "^8.6.15", - "@storybook/react-webpack5": "^8.6.15", + "@rollup/plugin-typescript": "^12.3.0", + "@storybook/addon-actions": "^8.6.18", + "@storybook/addon-controls": "^8.6.18", + "@storybook/addon-essentials": "^8.6.18", + "@storybook/addon-interactions": "^8.6.18", + "@storybook/addon-links": "^8.6.18", + "@storybook/addon-toolbars": "^8.6.18", + "@storybook/addon-webpack5-compiler-swc": "^1.0.6", + "@storybook/blocks": "^8.6.18", + "@storybook/react": "^8.6.18", + "@storybook/react-webpack5": "^8.6.18", "@storybook/test": "^8.6.15", "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^16.1.0", + "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", - "@types/node": "^20.19.21", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", - "@types/utif": "^3.0.5", - "@typescript-eslint/eslint-plugin": "^8.18.1", - "@typescript-eslint/parser": "^8.18.1", - "eslint": "^9.20.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-hooks": "^5.1.0", + "@types/node": "^20.19.41", + "@types/react": "^18.3.28", + "@types/react-dom": "^18.3.7", + "@types/utif": "^3.0.6", + "@typescript-eslint/eslint-plugin": "^8.59.3", + "@typescript-eslint/parser": "^8.59.3", + "eslint": "^9.39.4", + "eslint-config-prettier": "^9.1.2", + "eslint-plugin-prettier": "^5.5.5", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", "file-loader": "^6.2.0", - "gh-pages": "^6.2.0", + "gh-pages": "^6.3.0", "react-dom": "^18.3.1", - "react-router-dom": "^7.12.0", - "rollup": "^4.27.3", - "rollup-plugin-dts": "^6.1.1", + "react-router-dom": "^7.15.0", + "rollup": "^4.60.3", + "rollup-plugin-dts": "^6.4.1", "rollup-plugin-peer-deps-external": "^2.2.4", "rollup-plugin-postcss": "^4.0.2", - "storybook": "^8.6.15", + "storybook": "^8.6.18", "storybook-dark-mode": "^4.0.2", "tslib": "^2.8.1", - "typedoc": "^0.28.5", - "typescript": "^5.6.3", - "typescript-eslint": "^8.15.0", + "typedoc": "^0.28.19", + "typescript": "^5.9.3", + "typescript-eslint": "^8.59.3", "vitest": "^3.2.4" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 75bba6b4..e4ee4b92 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,104 +20,104 @@ importers: dependencies: '@emotion/react': specifier: ^11.13.3 - version: 11.14.0(@types/react@18.3.18)(react@18.3.1) + version: 11.14.0(@types/react@18.3.28)(react@18.3.1) '@emotion/styled': specifier: ^11.13.0 - version: 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) + version: 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) '@jsonforms/core': specifier: ^3.7.0 version: 3.7.0 '@jsonforms/material-renderers': specifier: ^3.7.0 - version: 3.7.0(tycpmb7mlqgjusrbuymfwpcqdy) + version: 3.7.0(rnt37svge7wbuy2pqaj5fifdrm) '@jsonforms/react': specifier: ^3.7.0 version: 3.7.0(@jsonforms/core@3.7.0)(react@18.3.1) '@mui/icons-material': - specifier: ^7.0.0 - version: 7.3.10(@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) + specifier: ^7.3.11 + version: 7.3.11(@mui/material@7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) '@mui/material': specifier: ^7.0.0 - version: 7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) keycloak-js: - specifier: ^26.2.1 - version: 26.2.1 + specifier: ^26.2.4 + version: 26.2.4 react: specifier: ^18.3.1 version: 18.3.1 react-icons: - specifier: ^5.3.0 - version: 5.4.0(react@18.3.1) + specifier: ^5.6.0 + version: 5.6.0(react@18.3.1) utif: specifier: ^3.1.0 version: 3.1.0 devDependencies: '@babel/core': - specifier: ^7.26.10 + specifier: ^7.29.0 version: 7.29.0 '@babel/preset-env': - specifier: ^7.26.10 - version: 7.29.2(@babel/core@7.29.0) + specifier: ^7.29.5 + version: 7.29.5(@babel/core@7.29.0) '@babel/preset-react': - specifier: ^7.25.9 - version: 7.26.3(@babel/core@7.29.0) + specifier: ^7.28.5 + version: 7.28.5(@babel/core@7.29.0) '@babel/preset-typescript': - specifier: ^7.26.10 + specifier: ^7.28.5 version: 7.28.5(@babel/core@7.29.0) '@chromatic-com/storybook': - specifier: ^3.2.2 - version: 3.2.3(react@18.3.1)(storybook@8.6.18(prettier@3.4.2)) + specifier: ^3.2.7 + version: 3.2.7(react@18.3.1)(storybook@8.6.18(prettier@3.4.2)) '@eslint/eslintrc': - specifier: ^3.2.0 - version: 3.2.0 + specifier: ^3.3.5 + version: 3.3.5 '@rollup/plugin-commonjs': - specifier: ^28.0.1 - version: 28.0.2(rollup@4.30.0) + specifier: ^28.0.9 + version: 28.0.9(rollup@4.60.3) '@rollup/plugin-image': specifier: ^3.0.3 - version: 3.0.3(rollup@4.30.0) + version: 3.0.3(rollup@4.60.3) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.30.0) + version: 6.1.0(rollup@4.60.3) '@rollup/plugin-node-resolve': - specifier: ^15.3.0 - version: 15.3.1(rollup@4.30.0) + specifier: ^15.3.1 + version: 15.3.1(rollup@4.60.3) '@rollup/plugin-terser': specifier: ^0.4.4 - version: 0.4.4(rollup@4.30.0) + version: 0.4.4(rollup@4.60.3) '@rollup/plugin-typescript': - specifier: ^12.1.1 - version: 12.1.2(rollup@4.30.0)(tslib@2.8.1)(typescript@5.7.2) + specifier: ^12.3.0 + version: 12.3.0(rollup@4.60.3)(tslib@2.8.1)(typescript@5.9.3) '@storybook/addon-actions': - specifier: ^8.6.15 + specifier: ^8.6.18 version: 8.6.18(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-controls': - specifier: ^8.6.15 + specifier: ^8.6.18 version: 8.6.18(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-essentials': - specifier: ^8.6.15 - version: 8.6.18(@types/react@18.3.18)(storybook@8.6.18(prettier@3.4.2)) + specifier: ^8.6.18 + version: 8.6.18(@types/react@18.3.28)(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-interactions': - specifier: ^8.6.15 + specifier: ^8.6.18 version: 8.6.18(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-links': - specifier: ^8.6.15 + specifier: ^8.6.18 version: 8.6.18(react@18.3.1)(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-toolbars': - specifier: ^8.6.15 + specifier: ^8.6.18 version: 8.6.18(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-webpack5-compiler-swc': - specifier: ^1.0.5 - version: 1.0.6(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) + specifier: ^1.0.6 + version: 1.0.6(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) '@storybook/blocks': - specifier: ^8.6.15 + specifier: ^8.6.18 version: 8.6.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2)) '@storybook/react': - specifier: ^8.6.15 - version: 8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.7.2) + specifier: ^8.6.18 + version: 8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.9.3) '@storybook/react-webpack5': - specifier: ^8.6.15 - version: 8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(@swc/core@1.10.4)(esbuild@0.25.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.7.2) + specifier: ^8.6.18 + version: 8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.9.3) '@storybook/test': specifier: ^8.6.15 version: 8.6.15(storybook@8.6.18(prettier@3.4.2)) @@ -125,70 +125,70 @@ importers: specifier: ^6.9.1 version: 6.9.1 '@testing-library/react': - specifier: ^16.1.0 - version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^16.3.2 + version: 16.3.2(@testing-library/dom@10.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': specifier: ^14.6.1 version: 14.6.1(@testing-library/dom@10.4.0) '@types/node': - specifier: ^20.19.21 - version: 20.19.21 + specifier: ^20.19.41 + version: 20.19.41 '@types/react': - specifier: ^18.3.12 - version: 18.3.18 + specifier: ^18.3.28 + version: 18.3.28 '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.5(@types/react@18.3.18) + specifier: ^18.3.7 + version: 18.3.7(@types/react@18.3.28) '@types/utif': - specifier: ^3.0.5 - version: 3.0.5 + specifier: ^3.0.6 + version: 3.0.6 '@typescript-eslint/eslint-plugin': - specifier: ^8.18.1 - version: 8.19.0(@typescript-eslint/parser@8.19.0(eslint@9.39.4)(typescript@5.7.2))(eslint@9.39.4)(typescript@5.7.2) + specifier: ^8.59.3 + version: 8.59.3(@typescript-eslint/parser@8.59.3(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^8.18.1 - version: 8.19.0(eslint@9.39.4)(typescript@5.7.2) + specifier: ^8.59.3 + version: 8.59.3(eslint@9.39.4)(typescript@5.9.3) eslint: - specifier: ^9.20.0 + specifier: ^9.39.4 version: 9.39.4 eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@9.39.4) + specifier: ^9.1.2 + version: 9.1.2(eslint@9.39.4) eslint-plugin-prettier: - specifier: ^5.2.1 - version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.39.4))(eslint@9.39.4)(prettier@3.4.2) + specifier: ^5.5.5 + version: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.39.4))(eslint@9.39.4)(prettier@3.4.2) eslint-plugin-react: - specifier: ^7.37.2 - version: 7.37.3(eslint@9.39.4) + specifier: ^7.37.5 + version: 7.37.5(eslint@9.39.4) eslint-plugin-react-hooks: - specifier: ^5.1.0 - version: 5.1.0(eslint@9.39.4) + specifier: ^5.2.0 + version: 5.2.0(eslint@9.39.4) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) + version: 6.2.0(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) gh-pages: - specifier: ^6.2.0 + specifier: ^6.3.0 version: 6.3.0 react-dom: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) react-router-dom: - specifier: ^7.12.0 - version: 7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.15.0 + version: 7.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rollup: - specifier: ^4.27.3 - version: 4.30.0 + specifier: ^4.60.3 + version: 4.60.3 rollup-plugin-dts: - specifier: ^6.1.1 - version: 6.1.1(rollup@4.30.0)(typescript@5.7.2) + specifier: ^6.4.1 + version: 6.4.1(rollup@4.60.3)(typescript@5.9.3) rollup-plugin-peer-deps-external: specifier: ^2.2.4 - version: 2.2.4(rollup@4.30.0) + version: 2.2.4(rollup@4.60.3) rollup-plugin-postcss: specifier: ^4.0.2 - version: 4.0.2(postcss@8.5.6) + version: 4.0.2(postcss@8.5.14) storybook: - specifier: ^8.6.15 + specifier: ^8.6.18 version: 8.6.18(prettier@3.4.2) storybook-dark-mode: specifier: ^4.0.2 @@ -197,51 +197,39 @@ importers: specifier: ^2.8.1 version: 2.8.1 typedoc: - specifier: ^0.28.5 - version: 0.28.5(typescript@5.7.2) + specifier: ^0.28.19 + version: 0.28.19(typescript@5.9.3) typescript: - specifier: ^5.6.3 - version: 5.7.2 + specifier: ^5.9.3 + version: 5.9.3 typescript-eslint: - specifier: ^8.15.0 - version: 8.19.0(eslint@9.39.4)(typescript@5.7.2) + specifier: ^8.59.3 + version: 8.59.3(eslint@9.39.4)(typescript@5.9.3) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@20.19.21)(jsdom@20.0.3)(terser@5.37.0)(yaml@2.8.0) + version: 3.2.4(@types/node@20.19.41)(jsdom@20.0.3)(terser@5.47.1)(yaml@2.9.0) packages: - '@adobe/css-tools@4.4.1': - resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==} - - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.29.0': - resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} engines: {node: '>=6.9.0'} '@babel/core@7.29.0': resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.3': - resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.29.1': resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.25.9': - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} - engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} @@ -250,14 +238,8 @@ packages: resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.28.6': - resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.26.3': - resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} + '@babel/helper-create-class-features-plugin@7.29.3': + resolution: {integrity: sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -281,10 +263,6 @@ packages: resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.28.6': resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} @@ -299,10 +277,6 @@ packages: resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.25.9': - resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} - engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.28.6': resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} @@ -323,26 +297,14 @@ packages: resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -355,13 +317,8 @@ packages: resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.3': - resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} engines: {node: '>=6.0.0'} hasBin: true @@ -383,6 +340,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3': + resolution: {integrity: sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} engines: {node: '>=6.9.0'} @@ -413,12 +376,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.28.6': resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} engines: {node: '>=6.9.0'} @@ -587,8 +544,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.29.0': - resolution: {integrity: sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==} + '@babel/plugin-transform-modules-systemjs@7.29.4': + resolution: {integrity: sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -671,26 +628,26 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.25.9': - resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} + '@babel/plugin-transform-react-display-name@7.28.0': + resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-development@7.25.9': - resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} + '@babel/plugin-transform-react-jsx-development@7.27.1': + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.25.9': - resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} + '@babel/plugin-transform-react-jsx@7.28.6': + resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-pure-annotations@7.25.9': - resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} + '@babel/plugin-transform-react-pure-annotations@7.27.1': + resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -773,8 +730,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.29.2': - resolution: {integrity: sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==} + '@babel/preset-env@7.29.5': + resolution: {integrity: sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -784,8 +741,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-react@7.26.3': - resolution: {integrity: sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==} + '@babel/preset-react@7.28.5': + resolution: {integrity: sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -800,32 +757,20 @@ packages: resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.9': - resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} - engines: {node: '>=6.9.0'} - '@babel/template@7.28.6': resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.4': - resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.0': resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.3': - resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@chromatic-com/storybook@3.2.3': - resolution: {integrity: sha512-3+hfANx79kIjP1qrOSLxpoAXOiYUA0S7A0WI0A24kASrv7USFNNW8etR5TjUilMb0LmqKUn3wDwUK2h6aceQ9g==} + '@chromatic-com/storybook@3.2.7': + resolution: {integrity: sha512-fCGhk4cd3VA8RNg55MZL5CScdHqljsQcL9g6Ss7YuobHpSo9yytEWNdgMd5QxAHSPBlLGFHjnSmliM3G/BeBqw==} engines: {node: '>=16.0.0', yarn: '>=1.22.18'} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 @@ -850,8 +795,8 @@ packages: '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - '@emotion/is-prop-valid@1.3.1': - resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==} + '@emotion/is-prop-valid@1.4.0': + resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} '@emotion/memoize@0.9.0': resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} @@ -871,8 +816,8 @@ packages: '@emotion/sheet@1.4.0': resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - '@emotion/styled@11.14.0': - resolution: {integrity: sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==} + '@emotion/styled@11.14.1': + resolution: {integrity: sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' @@ -901,8 +846,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.11': - resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -913,8 +858,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.11': - resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -925,8 +870,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.11': - resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -937,8 +882,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.11': - resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -949,8 +894,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.11': - resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -961,8 +906,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.11': - resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -973,8 +918,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.11': - resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -985,8 +930,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.11': - resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -997,8 +942,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.11': - resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -1009,8 +954,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.11': - resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -1021,8 +966,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.11': - resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1033,8 +978,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.11': - resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -1045,8 +990,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.11': - resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -1057,8 +1002,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.11': - resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -1069,8 +1014,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.11': - resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -1081,8 +1026,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.11': - resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -1093,8 +1038,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.11': - resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -1105,8 +1050,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.11': - resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -1117,8 +1062,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.11': - resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -1129,8 +1074,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.11': - resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -1141,14 +1086,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.11': - resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.11': - resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -1159,8 +1104,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.11': - resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -1171,8 +1116,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.11': - resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -1183,8 +1128,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.11': - resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -1195,26 +1140,20 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.11': - resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.1': - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/config-array@0.21.2': @@ -1229,10 +1168,6 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.2.0': - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.5': resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1249,25 +1184,25 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@gerrit0/mini-shiki@3.7.0': - resolution: {integrity: sha512-7iY9wg4FWXmeoFJpUL2u+tsmh0d0jcEJHAIzVxl3TG4KL493JNnisdLAILZ77zcD+z3J0keEXZ+lFzUgzQzPDg==} + '@gerrit0/mini-shiki@3.23.0': + resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} + + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} @@ -1275,10 +1210,6 @@ packages: '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - '@jridgewell/remapping@2.3.5': resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} @@ -1286,18 +1217,11 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -1323,33 +1247,33 @@ packages: '@jsonforms/core': 3.7.0 react: ^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@mdx-js/react@3.1.0': - resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} peerDependencies: '@types/react': '>=16' react: '>=16' - '@mui/core-downloads-tracker@7.3.10': - resolution: {integrity: sha512-vrOpWRmPJSuwLo23J62wggEm/jvGdzqctej+UOCtgDUz6nZJQuj3ByPccVyaa7eQmwAzUwKN56FQPMKkqbj1GA==} + '@mui/core-downloads-tracker@7.3.11': + resolution: {integrity: sha512-a7I/b/nBTdXYz2cOSlEmkQ9WWE1x8FHpqMhFPp+Y1VPFxcOw91G5ELOHARQAGSPy5V+UCgJua6K/1x70bAtQPw==} - '@mui/icons-material@7.3.10': - resolution: {integrity: sha512-Au0ma4NSKGKNiimukj8UT/W1x2Qx6Qwn2RvFGykiSqVLYBNlIOPbjnIMvrwLGLu89EEpTVdu/ys/OduZR+tWqw==} + '@mui/icons-material@7.3.11': + resolution: {integrity: sha512-+hz5ilwHZ3djd5es3sCErLioqe/NhZcYTsV/TNXZAMdJdb23F4xzJjqnnZdnurc3S1+ietcssRNqieOhPQLZ7Q==} engines: {node: '>=14.0.0'} peerDependencies: - '@mui/material': ^7.3.10 + '@mui/material': ^7.3.11 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - '@mui/material@7.3.10': - resolution: {integrity: sha512-cHvGOk2ZEfbQt3LnGe0ZKd/ETs9gsUpkW66DCO+GSjMZhpdKU4XsuIr7zJ/B/2XaN8ihxuzHfYAR4zPtCN4RYg==} + '@mui/material@7.3.11': + resolution: {integrity: sha512-yq8bPc3LxOwKRWpcjRgDkYFmpM6aKlARfESTmOQcvLYFeJwtHte2tw6hJDrb8sk8wcvpDprHEHVaoUU0MslIkw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material-pigment-css': ^7.3.10 + '@mui/material-pigment-css': ^7.3.11 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1363,8 +1287,8 @@ packages: '@types/react': optional: true - '@mui/private-theming@7.3.10': - resolution: {integrity: sha512-j3EZN+zOctxUISvJSmsEPo5o2F8zse4l5vRkBY+ps6UtnL6J7o14kUaI4w7gwo73id9e3cDNMVQK/9BVaMHVBw==} + '@mui/private-theming@7.3.11': + resolution: {integrity: sha512-9B+YKms0fRHbNrqp9tOT/DNbNnU5gyvJ1o3qAGXfq8GmZcbJnE3At9x07Zr/o0pkhzg4aDdwXVqe4+AcgtOCPA==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1373,8 +1297,8 @@ packages: '@types/react': optional: true - '@mui/private-theming@9.0.0': - resolution: {integrity: sha512-JtuZoaiCqwD6vjgYu6Xp3T7DZkrxJlgtDz5yESzhI34fEX5hHMh2VJUbuL9UOg8xrfIFMrq6dcYoH/7Zi4G0RA==} + '@mui/private-theming@9.0.1': + resolution: {integrity: sha512-pSIGq4Yw749KHEwlkYZWVERgHgwJELP6ODtBNUfV8V4oIb5H+h7IQDFXuk/b2oQccODK1enJAtiEzlgLZmq+8g==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1409,8 +1333,8 @@ packages: '@emotion/styled': optional: true - '@mui/system@7.3.10': - resolution: {integrity: sha512-/sfPpdpJaQn7BSF+avjIdHSYmxHp0UOBYNxSG9QGKfMOD6sLANCpRPCnanq1Pe0lFf0NHkO2iUk0TNzdWC1USQ==} + '@mui/system@7.3.11': + resolution: {integrity: sha512-7izwGWdNawAKpBKcRlx7f2gFnAAjmASBWvMcyX4YYEeLOFsbfGRbUYGInvnAcUeql3rPxI7F9Ft4oY2OLRz44g==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1457,8 +1381,8 @@ packages: '@types/react': optional: true - '@mui/utils@7.3.10': - resolution: {integrity: sha512-7y2eIfy0h7JPz+Yy4pS+wgV68d46PuuxDqKBN4Q8VlPQSsCAGwroMCV6xWyc7g9dvEp8ZNFsknc59GHWO+r6Ow==} + '@mui/utils@7.3.11': + resolution: {integrity: sha512-XTjGnifwteg71/ij+0e7Y7d+hwyntMYP5wPoA/g2drdGH+Flkvjwy0OfrVpKBbaOvofq4zU/LIyUZyKgmWu18g==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1467,8 +1391,8 @@ packages: '@types/react': optional: true - '@mui/utils@9.0.0': - resolution: {integrity: sha512-bQcqyg/gjULUqTuyUjSAFr6LQGLvtkNtDbJerAtoUn9kGZ0hg5QJiN1PLHMLbeFpe3te1831uq7GFl2ITokGdg==} + '@mui/utils@9.0.1': + resolution: {integrity: sha512-f3UO3jNN1pYg5zxqXC81Bvv8hx5ACcYc0387382ZI7M5ono1heIwHYLrKsz85myguWdeVKPRZGmDdynWUBjK2g==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1532,15 +1456,15 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@rollup/plugin-commonjs@28.0.2': - resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} + '@rollup/plugin-commonjs@28.0.9': + resolution: {integrity: sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -1584,8 +1508,8 @@ packages: rollup: optional: true - '@rollup/plugin-typescript@12.1.2': - resolution: {integrity: sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==} + '@rollup/plugin-typescript@12.3.0': + resolution: {integrity: sha512-7DP0/p7y3t67+NabT9f8oTBFE6gGkto4SA6Np2oudYmZE/m1dt8RB0SjL1msMxFpLo631qjRCcBlAbq1ml/Big==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.14.0||^3.0.0||^4.0.0 @@ -1597,8 +1521,8 @@ packages: tslib: optional: true - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -1606,222 +1530,142 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.30.0': - resolution: {integrity: sha512-qFcFto9figFLz2g25DxJ1WWL9+c91fTxnGuwhToCl8BaqDsDYMl/kOnBXAyAqkkzAWimYMSWNPWEjt+ADAHuoQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm-eabi@4.52.4': - resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==} + '@rollup/rollup-android-arm-eabi@4.60.3': + resolution: {integrity: sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.30.0': - resolution: {integrity: sha512-vqrQdusvVl7dthqNjWCL043qelBK+gv9v3ZiqdxgaJvmZyIAAXMjeGVSqZynKq69T7062T5VrVTuikKSAAVP6A==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-android-arm64@4.52.4': - resolution: {integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==} + '@rollup/rollup-android-arm64@4.60.3': + resolution: {integrity: sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.30.0': - resolution: {integrity: sha512-617pd92LhdA9+wpixnzsyhVft3szYiN16aNUMzVkf2N+yAk8UXY226Bfp36LvxYTUt7MO/ycqGFjQgJ0wlMaWQ==} + '@rollup/rollup-darwin-arm64@4.60.3': + resolution: {integrity: sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.52.4': - resolution: {integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.30.0': - resolution: {integrity: sha512-Y3b4oDoaEhCypg8ajPqigKDcpi5ZZovemQl9Edpem0uNv6UUjXv7iySBpGIUTSs2ovWOzYpfw9EbFJXF/fJHWw==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.52.4': - resolution: {integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==} + '@rollup/rollup-darwin-x64@4.60.3': + resolution: {integrity: sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.30.0': - resolution: {integrity: sha512-3REQJ4f90sFIBfa0BUokiCdrV/E4uIjhkWe1bMgCkhFXbf4D8YN6C4zwJL881GM818qVYE9BO3dGwjKhpo2ABA==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-arm64@4.52.4': - resolution: {integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==} + '@rollup/rollup-freebsd-arm64@4.60.3': + resolution: {integrity: sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.30.0': - resolution: {integrity: sha512-ZtY3Y8icbe3Cc+uQicsXG5L+CRGUfLZjW6j2gn5ikpltt3Whqjfo5mkyZ86UiuHF9Q3ZsaQeW7YswlHnN+lAcg==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.52.4': - resolution: {integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==} + '@rollup/rollup-freebsd-x64@4.60.3': + resolution: {integrity: sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.30.0': - resolution: {integrity: sha512-bsPGGzfiHXMhQGuFGpmo2PyTwcrh2otL6ycSZAFTESviUoBOuxF7iBbAL5IJXc/69peXl5rAtbewBFeASZ9O0g==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-gnueabihf@4.52.4': - resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.30.0': - resolution: {integrity: sha512-kvyIECEhs2DrrdfQf++maCWJIQ974EI4txlz1nNSBaCdtf7i5Xf1AQCEJWOC5rEBisdaMFFnOWNLYt7KpFqy5A==} + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': + resolution: {integrity: sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.52.4': - resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==} + '@rollup/rollup-linux-arm-musleabihf@4.60.3': + resolution: {integrity: sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.30.0': - resolution: {integrity: sha512-CFE7zDNrokaotXu+shwIrmWrFxllg79vciH4E/zeK7NitVuWEaXRzS0mFfFvyhZfn8WfVOG/1E9u8/DFEgK7WQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.52.4': - resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.30.0': - resolution: {integrity: sha512-MctNTBlvMcIBP0t8lV/NXiUwFg9oK5F79CxLU+a3xgrdJjfBLVIEHSAjQ9+ipofN2GKaMLnFFXLltg1HEEPaGQ==} + '@rollup/rollup-linux-arm64-gnu@4.60.3': + resolution: {integrity: sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.52.4': - resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==} + '@rollup/rollup-linux-arm64-musl@4.60.3': + resolution: {integrity: sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.52.4': - resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==} + '@rollup/rollup-linux-loong64-gnu@4.60.3': + resolution: {integrity: sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.30.0': - resolution: {integrity: sha512-fBpoYwLEPivL3q368+gwn4qnYnr7GVwM6NnMo8rJ4wb0p/Y5lg88vQRRP077gf+tc25akuqd+1Sxbn9meODhwA==} + '@rollup/rollup-linux-loong64-musl@4.60.3': + resolution: {integrity: sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.30.0': - resolution: {integrity: sha512-1hiHPV6dUaqIMXrIjN+vgJqtfkLpqHS1Xsg0oUfUVD98xGp1wX89PIXgDF2DWra1nxAd8dfE0Dk59MyeKaBVAw==} + '@rollup/rollup-linux-ppc64-gnu@4.60.3': + resolution: {integrity: sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.52.4': - resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==} + '@rollup/rollup-linux-ppc64-musl@4.60.3': + resolution: {integrity: sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.30.0': - resolution: {integrity: sha512-U0xcC80SMpEbvvLw92emHrNjlS3OXjAM0aVzlWfar6PR0ODWCTQtKeeB+tlAPGfZQXicv1SpWwRz9Hyzq3Jx3g==} + '@rollup/rollup-linux-riscv64-gnu@4.60.3': + resolution: {integrity: sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.52.4': - resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==} + '@rollup/rollup-linux-riscv64-musl@4.60.3': + resolution: {integrity: sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.52.4': - resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.30.0': - resolution: {integrity: sha512-VU/P/IODrNPasgZDLIFJmMiLGez+BN11DQWfTVlViJVabyF3JaeaJkP6teI8760f18BMGCQOW9gOmuzFaI1pUw==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.52.4': - resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==} + '@rollup/rollup-linux-s390x-gnu@4.60.3': + resolution: {integrity: sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.30.0': - resolution: {integrity: sha512-laQVRvdbKmjXuFA3ZiZj7+U24FcmoPlXEi2OyLfbpY2MW1oxLt9Au8q9eHd0x6Pw/Kw4oe9gwVXWwIf2PVqblg==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.52.4': - resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==} + '@rollup/rollup-linux-x64-gnu@4.60.3': + resolution: {integrity: sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.30.0': - resolution: {integrity: sha512-3wzKzduS7jzxqcOvy/ocU/gMR3/QrHEFLge5CD7Si9fyHuoXcidyYZ6jyx8OPYmCcGm3uKTUl+9jUSAY74Ln5A==} + '@rollup/rollup-linux-x64-musl@4.60.3': + resolution: {integrity: sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.52.4': - resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==} + '@rollup/rollup-openbsd-x64@4.60.3': + resolution: {integrity: sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==} cpu: [x64] - os: [linux] + os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.52.4': - resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==} + '@rollup/rollup-openharmony-arm64@4.60.3': + resolution: {integrity: sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.30.0': - resolution: {integrity: sha512-jROwnI1+wPyuv696rAFHp5+6RFhXGGwgmgSfzE8e4xfit6oLRg7GyMArVUoM3ChS045OwWr9aTnU+2c1UdBMyw==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-arm64-msvc@4.52.4': - resolution: {integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==} + '@rollup/rollup-win32-arm64-msvc@4.60.3': + resolution: {integrity: sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.30.0': - resolution: {integrity: sha512-duzweyup5WELhcXx5H1jokpr13i3BV9b48FMiikYAwk/MT1LrMYYk2TzenBd0jj4ivQIt58JWSxc19y4SvLP4g==} + '@rollup/rollup-win32-ia32-msvc@4.60.3': + resolution: {integrity: sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.4': - resolution: {integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-gnu@4.52.4': - resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.30.0': - resolution: {integrity: sha512-DYvxS0M07PvgvavMIybCOBYheyrqlui6ZQBHJs6GqduVzHSZ06TPPvlfvnYstjODHQ8UUXFwt5YE+h0jFI8kwg==} + '@rollup/rollup-win32-x64-gnu@4.60.3': + resolution: {integrity: sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.4': - resolution: {integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==} + '@rollup/rollup-win32-x64-msvc@4.60.3': + resolution: {integrity: sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==} cpu: [x64] os: [win32] - '@shikijs/engine-oniguruma@3.7.0': - resolution: {integrity: sha512-5BxcD6LjVWsGu4xyaBC5bu8LdNgPCVBnAkWTtOCs/CZxcB22L8rcoWfv7Hh/3WooVjBZmFtyxhgvkQFedPGnFw==} + '@shikijs/engine-oniguruma@3.23.0': + resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} - '@shikijs/langs@3.7.0': - resolution: {integrity: sha512-1zYtdfXLr9xDKLTGy5kb7O0zDQsxXiIsw1iIBcNOO8Yi5/Y1qDbJ+0VsFoqTlzdmneO8Ij35g7QKF8kcLyznCQ==} + '@shikijs/langs@3.23.0': + resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} - '@shikijs/themes@3.7.0': - resolution: {integrity: sha512-VJx8497iZPy5zLiiCTSIaOChIcKQwR0FebwE9S3rcN0+J/GTWwQ1v/bqhTbpbY3zybPKeO8wdammqkpXc4NVjQ==} + '@shikijs/themes@3.23.0': + resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} - '@shikijs/types@3.7.0': - resolution: {integrity: sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==} + '@shikijs/types@3.23.0': + resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -1915,8 +1759,8 @@ packages: typescript: optional: true - '@storybook/components@8.4.7': - resolution: {integrity: sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==} + '@storybook/components@8.6.14': + resolution: {integrity: sha512-HNR2mC5I4Z5ek8kTrVZlIY/B8gJGs5b3XdZPBPBopTIN6U/YHXiDyOjY3JlaS4fSG1fVhp/Qp1TpMn1w/9m1pw==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 @@ -1925,8 +1769,8 @@ packages: peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/core-events@8.4.7': - resolution: {integrity: sha512-D5WhJBVfywIVBurNZ7mwSjXT18a8Ct5AfZFEukIBPLaezY21TgN/7sE2OU5dkMQsm11oAZzsdLPOzms2e9HsRg==} + '@storybook/core-events@8.6.14': + resolution: {integrity: sha512-RrJ95u3HuIE4Nk8VmZP0tc/u0vYoE2v9fYlMw6K2GUSExzKDITs3voy6WMIY7Q3qbQun8XUXVlmqkuFzTEy/pA==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 @@ -1951,8 +1795,8 @@ packages: '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/icons@1.3.0': - resolution: {integrity: sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==} + '@storybook/icons@1.6.0': + resolution: {integrity: sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw==} engines: {node: '>=14.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -1968,8 +1812,8 @@ packages: peerDependencies: storybook: ^8.6.18 - '@storybook/manager-api@8.4.7': - resolution: {integrity: sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==} + '@storybook/manager-api@8.6.14': + resolution: {integrity: sha512-ez0Zihuy17udLbfHZQXkGqwtep0mSGgHcNzGN7iZrMP1m+VmNo+7aGCJJdvXi7+iU3yq8weXSQFWg5DqWgLS7g==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 @@ -2045,8 +1889,8 @@ packages: peerDependencies: storybook: ^8.6.18 - '@storybook/theming@8.4.7': - resolution: {integrity: sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==} + '@storybook/theming@8.6.14': + resolution: {integrity: sha512-r4y+LsiB37V5hzpQo+BM10PaCsp7YlZ0YcZzQP1OCkPlYXmUAFy2VvDKaFRpD8IeNPKug2u4iFm/laDEbs03dg==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 @@ -2055,71 +1899,83 @@ packages: peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@swc/core-darwin-arm64@1.10.4': - resolution: {integrity: sha512-sV/eurLhkjn/197y48bxKP19oqcLydSel42Qsy2zepBltqUx+/zZ8+/IS0Bi7kaWVFxerbW1IPB09uq8Zuvm3g==} + '@swc/core-darwin-arm64@1.15.33': + resolution: {integrity: sha512-N+L0uXhuO7FIfzqwgxmzv0zIpV0qEp8wPX3QQs2p4atjMoywup2JTeDlXPw+z9pWJGCae3JjM+tZ6myclI+2gA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.4': - resolution: {integrity: sha512-gjYNU6vrAUO4+FuovEo9ofnVosTFXkF0VDuo1MKPItz6e2pxc2ale4FGzLw0Nf7JB1sX4a8h06CN16/pLJ8Q2w==} + '@swc/core-darwin-x64@1.15.33': + resolution: {integrity: sha512-/Il4QHSOhV4FekbsDtkrNmKbsX26oSysvgrRswa/RYOHXAkwXDbB4jaeKq6PsJLSPkzJ2KzQ061gtBnk0vNHfA==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.4': - resolution: {integrity: sha512-zd7fXH5w8s+Sfvn2oO464KDWl+ZX1MJiVmE4Pdk46N3PEaNwE0koTfgx2vQRqRG4vBBobzVvzICC3618WcefOA==} + '@swc/core-linux-arm-gnueabihf@1.15.33': + resolution: {integrity: sha512-C64hBnBxq4viOPQ8hlx+2lJ23bzZBGnjw7ryALmS+0Q3zHmwO8lw1/DArLENw4Q18/0w5wdEO1k3m1wWNtKGqQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.4': - resolution: {integrity: sha512-+UGfoHDxsMZgFD3tABKLeEZHqLNOkxStu+qCG7atGBhS4Slri6h6zijVvf4yI5X3kbXdvc44XV/hrP/Klnui2A==} + '@swc/core-linux-arm64-gnu@1.15.33': + resolution: {integrity: sha512-TRJfnJbX3jqpxRDRoieMzRiCBS5jOmXNb3iQXmcgjFEHKLnAgK1RZRU8Cq1MsPqO4jAJp/ld1G4O3fXuxv85uw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.4': - resolution: {integrity: sha512-cDDj2/uYsOH0pgAnDkovLZvKJpFmBMyXkxEG6Q4yw99HbzO6QzZ5HDGWGWVq/6dLgYKlnnmpjZCPPQIu01mXEg==} + '@swc/core-linux-arm64-musl@1.15.33': + resolution: {integrity: sha512-il7tYM+CpUNzieQbwAjFT1P8zqAhmGWNAGhQZBnxurXZ0aNn+5nqYFTEUKNZl7QibtT0uQXzTZrNGHCIj6Y1Og==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.4': - resolution: {integrity: sha512-qJXh9D6Kf5xSdGWPINpLGixAbB5JX8JcbEJpRamhlDBoOcQC79dYfOMEIxWPhTS1DGLyFakAx2FX/b2VmQmj0g==} + '@swc/core-linux-ppc64-gnu@1.15.33': + resolution: {integrity: sha512-ZtNBwN0Z7CFj9Il0FcPaKdjgP7URyKu/3RfH46vq+0paOBqLj4NYldD6Qo//Duif/7IOtAraUfDOmp0PLAufog==} + engines: {node: '>=10'} + cpu: [ppc64] + os: [linux] + + '@swc/core-linux-s390x-gnu@1.15.33': + resolution: {integrity: sha512-De1IyajoOmhOYYjw/lx66bKlyDpHZTueqwpDrWgf5O7T6d1ODeJJO9/OqMBmrBQc5C+dNnlmIufHsp4QVCWufA==} + engines: {node: '>=10'} + cpu: [s390x] + os: [linux] + + '@swc/core-linux-x64-gnu@1.15.33': + resolution: {integrity: sha512-mGTH0YxmUN+x6vRN/I6NOk5X0ogNktkwPnJ94IMvR7QjhRDwL0O8RXEDhyUM0YtwWrryBOqaJQBX4zruxEPRGw==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.4': - resolution: {integrity: sha512-A76lIAeyQnHCVt0RL/pG+0er8Qk9+acGJqSZOZm67Ve3B0oqMd871kPtaHBM0BW3OZAhoILgfHW3Op9Q3mx3Cw==} + '@swc/core-linux-x64-musl@1.15.33': + resolution: {integrity: sha512-hj628ZkSEJf6zMf5VMbYrG2O6QqyTIp2qwY6VlCjvIa9lAEZ5c2lfPblCLVGYubTeLJDxadLB/CxqQYOQABeEQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.4': - resolution: {integrity: sha512-e6j5kBu4fIY7fFxFxnZI0MlEovRvp50Lg59Fw+DVbtqHk3C85dckcy5xKP+UoXeuEmFceauQDczUcGs19SRGSQ==} + '@swc/core-win32-arm64-msvc@1.15.33': + resolution: {integrity: sha512-GV2oohtN2/5+KSccl86VULu3aT+LrISC8uzgSq0FRnikpD+Zwc+sBlXmoKQ+Db6jI57ITUOIB8jRkdGMABC29g==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.4': - resolution: {integrity: sha512-RSYHfdKgNXV/amY5Tqk1EWVsyQnhlsM//jeqMLw5Fy9rfxP592W9UTumNikNRPdjI8wKKzNMXDb1U29tQjN0dg==} + '@swc/core-win32-ia32-msvc@1.15.33': + resolution: {integrity: sha512-gtyvzSNR8DHKfFEA2uqb8Ld1myqi6uEg2jyeUq3ikn5ytYs7H8RpZYC8mdy4NXr8hfcdJfCLXPlYaqqfBXpoEQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.4': - resolution: {integrity: sha512-1ujYpaqfqNPYdwKBlvJnOqcl+Syn3UrQ4XE0Txz6zMYgyh6cdU6a3pxqLqIUSJ12MtXRA9ZUhEz1ekU3LfLWXw==} + '@swc/core-win32-x64-msvc@1.15.33': + resolution: {integrity: sha512-d6fRqQSkJI+kmMEBWaDQ7TMl8+YjLYbwRUPZQ9DY0ORBJeTzOrG0twvfvlZ2xgw6jA0ScQKgfBm4vHLSLl5Hqg==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.4': - resolution: {integrity: sha512-ut3zfiTLORMxhr6y/GBxkHmzcGuVpwJYX4qyXWuBKkpw/0g0S5iO1/wW7RnLnZbAi8wS/n0atRZoaZlXWBkeJg==} + '@swc/core@1.15.33': + resolution: {integrity: sha512-jOlwnFV2xhuuZeAUILGFULeR6vDPfijEJ57evfocwznQldLU3w2cZ9bSDryY9ip+AsM3r1NJKzf47V2NXebkeQ==} engines: {node: '>=10'} peerDependencies: - '@swc/helpers': '*' + '@swc/helpers': '>=0.5.17' peerDependenciesMeta: '@swc/helpers': optional: true @@ -2127,8 +1983,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/types@0.1.17': - resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} + '@swc/types@0.1.26': + resolution: {integrity: sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==} '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} @@ -2142,8 +1998,8 @@ packages: resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - '@testing-library/react@16.1.0': - resolution: {integrity: sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==} + '@testing-library/react@16.3.2': + resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 @@ -2169,31 +2025,27 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + '@tootallnate/once@2.0.1': + resolution: {integrity: sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==} engines: {node: '>= 10'} - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -2207,12 +2059,12 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -2225,20 +2077,17 @@ packages: '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - '@types/node@20.19.21': - resolution: {integrity: sha512-CsGG2P3I5y48RPMfprQGfy4JPRZ6csfC3ltBZSRItG3ngggmNY/qs2uZKp4p9VbrpqNNSMzUZNFZKzgOGnd/VA==} + '@types/node@20.19.41': + resolution: {integrity: sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - '@types/prop-types@15.7.14': - resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} - '@types/prop-types@15.7.15': resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - '@types/react-dom@18.3.5': - resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} peerDependencies: '@types/react': ^18.0.0 @@ -2247,8 +2096,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@18.3.18': - resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} + '@types/react@18.3.28': + resolution: {integrity: sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -2256,63 +2105,75 @@ packages: '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/utif@3.0.5': - resolution: {integrity: sha512-ULwKfCC9b5JxJyjkkG0WCeOWz7pfBLuvf1ax1fbxt0e+DnZtLUjGnnwMeAU4ukKYmIa3HyITNHOyeKQyf0aAUg==} + '@types/utif@3.0.6': + resolution: {integrity: sha512-4XHDJkLHoUeLA2P/VOd6dpDJpSTpV84tN9EyHojZrW22jtUR0VrdLwVRUAw+oI3g72vSzOo+YQOzfwcW6WYHLw==} '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - '@typescript-eslint/eslint-plugin@8.19.0': - resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} + '@typescript-eslint/eslint-plugin@8.59.3': + resolution: {integrity: sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.59.3 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.59.3': + resolution: {integrity: sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.19.0': - resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} + '@typescript-eslint/project-service@8.59.3': + resolution: {integrity: sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.59.3': + resolution: {integrity: sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.19.0': - resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} + '@typescript-eslint/tsconfig-utils@8.59.3': + resolution: {integrity: sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.19.0': - resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} + '@typescript-eslint/type-utils@8.59.3': + resolution: {integrity: sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.19.0': - resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} + '@typescript-eslint/types@8.59.3': + resolution: {integrity: sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.19.0': - resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} + '@typescript-eslint/typescript-estree@8.59.3': + resolution: {integrity: sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.19.0': - resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} + '@typescript-eslint/utils@8.59.3': + resolution: {integrity: sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.19.0': - resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} + '@typescript-eslint/visitor-keys@8.59.3': + resolution: {integrity: sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitest/expect@2.0.5': @@ -2335,8 +2196,8 @@ packages: '@vitest/pretty-format@2.0.5': resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - '@vitest/pretty-format@2.1.8': - resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} + '@vitest/pretty-format@2.1.9': + resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} @@ -2356,8 +2217,8 @@ packages: '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - '@vitest/utils@2.1.8': - resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} + '@vitest/utils@2.1.9': + resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} @@ -2431,17 +2292,12 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + acorn-walk@8.3.5: + resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} engines: {node: '>=0.4.0'} - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true @@ -2467,14 +2323,11 @@ packages: peerDependencies: ajv: ^8.8.2 - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} @@ -2485,8 +2338,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@4.3.0: @@ -2515,8 +2368,8 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} array-union@2.1.0: @@ -2551,6 +2404,10 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -2583,8 +2440,12 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - baseline-browser-mapping@2.10.24: - resolution: {integrity: sha512-I2NkZOOrj2XuguvWCK6OVh9GavsNjZjK908Rq3mIBK25+GD8vPX5w2WdxVqnQ7xx3SrZJiCiZFu+/Oz50oSYSA==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + baseline-browser-mapping@2.10.29: + resolution: {integrity: sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -2605,8 +2466,9 @@ packages: brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -2615,11 +2477,6 @@ packages: browser-assert@1.2.1: resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - browserslist@4.24.3: - resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - browserslist@4.28.2: resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -2632,16 +2489,16 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - call-bind-apply-helpers@1.0.1: - resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} engines: {node: '>= 0.4'} - call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} callsites@3.1.0: @@ -2654,11 +2511,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001690: - resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} - - caniuse-lite@1.0.30001791: - resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==} + caniuse-lite@1.0.30001792: + resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==} case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} @@ -2676,16 +2530,16 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + check-error@2.1.3: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chromatic@11.22.0: - resolution: {integrity: sha512-u1kAPR9lj9aFzsCp0iWPXBbsKgcxFU7iJO6mFbgNHGVg+YPBqiJMuvgB8EQHdNbHjk5amFnGnIz/Ww8fK3t9Hw==} + chromatic@11.29.0: + resolution: {integrity: sha512-yisBlntp9hHVj19lIQdpTlcYIXuU9H/DbFuu6tyWHmj6hWT2EtukCCcxYXL78XdQt1vm2GfIrtgtKpj/Rzmo4A==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -2700,8 +2554,8 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} @@ -2728,8 +2582,8 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - commander@13.0.0: - resolution: {integrity: sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==} + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} commander@2.20.3: @@ -2761,8 +2615,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} core-js-compat@3.49.0: @@ -2801,8 +2655,8 @@ packages: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} css.escape@1.5.1: @@ -2845,9 +2699,6 @@ packages: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -2870,15 +2721,6 @@ packages: dayjs@1.10.7: resolution: {integrity: sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==} - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -2974,11 +2816,8 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - electron-to-chromium@1.5.344: - resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==} - - electron-to-chromium@1.5.76: - resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} + electron-to-chromium@1.5.353: + resolution: {integrity: sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==} email-addresses@5.0.0: resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} @@ -2990,8 +2829,8 @@ packages: endent@2.1.0: resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} - enhanced-resolve@5.18.0: - resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + enhanced-resolve@5.21.3: + resolution: {integrity: sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==} engines: {node: '>=10.13.0'} entities@2.2.0: @@ -3005,11 +2844,11 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + es-abstract@1.24.2: + resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -3020,8 +2859,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-iterator-helpers@1.2.1: - resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + es-iterator-helpers@1.3.2: + resolution: {integrity: sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==} engines: {node: '>= 0.4'} es-module-lexer@1.7.0: @@ -3030,16 +2869,17 @@ packages: es-module-lexer@2.1.0: resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} es-set-tostringtag@2.1.0: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} es-to-primitive@1.3.0: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} @@ -3055,8 +2895,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.11: - resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} hasBin: true @@ -3077,19 +2917,19 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-config-prettier@9.1.0: - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + eslint-config-prettier@9.1.2: + resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} hasBin: true peerDependencies: eslint: '>=7.0.0' - eslint-plugin-prettier@5.2.1: - resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + eslint-plugin-prettier@5.5.5: + resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' eslint: '>=8.0.0' - eslint-config-prettier: '*' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' prettier: '>=3.0.0' peerDependenciesMeta: '@types/eslint': @@ -3097,14 +2937,14 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-react-hooks@5.1.0: - resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react@7.37.3: - resolution: {integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==} + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -3121,14 +2961,14 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@4.2.1: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@9.39.4: resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3139,10 +2979,6 @@ packages: jiti: optional: true - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@10.4.0: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3152,8 +2988,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -3188,8 +3024,8 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - expect-type@1.2.2: - resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} fast-deep-equal@3.1.3: @@ -3211,19 +3047,11 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.5: - resolution: {integrity: sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==} + fast-uri@3.1.2: + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} - fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} - - fdir@6.4.2: - resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -3283,11 +3111,12 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} fork-ts-checker-webpack-plugin@8.0.0: resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} @@ -3296,20 +3125,20 @@ packages: typescript: '>3.6.0' webpack: 5.104.1 - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + fs-extra@11.3.5: + resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} engines: {node: '>=14.14'} - fs-monkey@1.0.6: - resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + fs-monkey@1.1.0: + resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3329,6 +3158,10 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + generic-names@4.0.0: resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} @@ -3336,8 +3169,8 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - get-intrinsic@1.2.7: - resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} get-proto@1.0.1: @@ -3368,10 +3201,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -3391,9 +3220,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} @@ -3417,8 +3243,8 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} engines: {node: '>= 0.4'} he@1.2.0: @@ -3432,16 +3258,16 @@ packages: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} - html-entities@2.5.2: - resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} html-minifier-terser@6.1.0: resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} engines: {node: '>=12'} hasBin: true - html-webpack-plugin@5.6.3: - resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} + html-webpack-plugin@5.6.7: + resolution: {integrity: sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw==} engines: {node: '>=10.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -3480,12 +3306,16 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + import-cwd@3.0.0: resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} engines: {node: '>=8'} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} import-from@3.0.0: @@ -3522,8 +3352,8 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-async-function@2.1.0: - resolution: {integrity: sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==} + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} is-bigint@1.1.0: @@ -3534,16 +3364,16 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-boolean-object@1.2.1: - resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} engines: {node: '>= 0.4'} is-data-view@1.0.2: @@ -3567,8 +3397,8 @@ packages: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -3582,6 +3412,10 @@ packages: is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -3624,8 +3458,8 @@ packages: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - is-weakref@1.1.0: - resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} engines: {node: '>= 0.4'} is-weakset@2.0.4: @@ -3660,8 +3494,8 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsdoc-type-pratt-parser@4.1.0: - resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + jsdoc-type-pratt-parser@4.8.0: + resolution: {integrity: sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==} engines: {node: '>=12.0.0'} jsdom@20.0.3: @@ -3673,11 +3507,6 @@ packages: canvas: optional: true - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -3703,15 +3532,15 @@ packages: engines: {node: '>=6'} hasBin: true - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} - keycloak-js@26.2.1: - resolution: {integrity: sha512-bZt6fQj/TLBAmivXSxSlqAJxBx/knNZDQGJIW4ensGYGN4N6tUKV8Zj3Y7/LOV8eIpvWsvqV70fbACihK8Ze0Q==} + keycloak-js@26.2.4: + resolution: {integrity: sha512-PnXpR3ubETGOt0B/Qt2lxmPbkZr5bc3vlQsOqDoTPPQsZRp7JjhTKxlJ187uWh8qJhvBab6Gsjb06a8ayOPfuw==} keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -3772,9 +3601,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.1.2: - resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} - loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} @@ -3791,8 +3617,8 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -3801,8 +3627,8 @@ packages: map-or-similar@1.5.0: resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + markdown-it@14.1.1: + resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==} hasBin: true math-intrinsics@1.1.0: @@ -3849,24 +3675,21 @@ packages: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -3882,11 +3705,12 @@ packages: node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-exports-info@1.6.0: + resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} + engines: {node: '>= 0.4'} - node-releases@2.0.38: - resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} + node-releases@2.0.44: + resolution: {integrity: sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -3899,15 +3723,15 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nwsapi@2.2.22: - resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} + nwsapi@2.2.23: + resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.3: - resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} object-keys@1.1.1: @@ -3918,8 +3742,8 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} engines: {node: '>= 0.4'} object.fromentries@2.0.8: @@ -4025,23 +3849,19 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} pify@5.0.0: @@ -4056,8 +3876,8 @@ packages: resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} engines: {node: '>=10'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} postcss-calc@8.2.4: @@ -4254,8 +4074,8 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-selector-parser@7.0.0: - resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} postcss-svgo@5.1.0: @@ -4273,16 +4093,16 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} prettier@3.4.2: @@ -4339,19 +4159,19 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - react-confetti@6.2.2: - resolution: {integrity: sha512-K+kTyOPgX+ZujMZ+Rmb7pZdHBvg+DzinG/w4Eh52WOB8/pfO38efnnrtEZNJmjTvLxc16RBYO+tPM68Fg8viBA==} + react-confetti@6.4.0: + resolution: {integrity: sha512-5MdGUcqxrTU26I2EU7ltkWPwxvucQTuqMm8dUz72z2YMqTD6s9vMcDUysk7n9jnC+lXuCPeJJ7Knf98VEYE9Rg==} engines: {node: '>=16'} peerDependencies: react: ^16.3.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 - react-docgen-typescript@2.2.2: - resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + react-docgen-typescript@2.4.0: + resolution: {integrity: sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==} peerDependencies: typescript: '>= 4.3.x' - react-docgen@7.1.0: - resolution: {integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==} + react-docgen@7.1.1: + resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} engines: {node: '>=16.14.0'} react-dom@18.3.1: @@ -4359,8 +4179,8 @@ packages: peerDependencies: react: ^18.3.1 - react-icons@5.4.0: - resolution: {integrity: sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==} + react-icons@5.6.0: + resolution: {integrity: sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==} peerDependencies: react: '*' @@ -4370,18 +4190,18 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-is@19.2.4: - resolution: {integrity: sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==} + react-is@19.2.6: + resolution: {integrity: sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==} - react-router-dom@7.12.0: - resolution: {integrity: sha512-pfO9fiBcpEfX4Tx+iTYKDtPbrSLLCbwJ5EqP+SPYQu1VYCXdy79GSj0wttR0U4cikVdlImZuEZ/9ZNCgoaxwBA==} + react-router-dom@7.15.0: + resolution: {integrity: sha512-VcrVg64Fo8nwBvDscajG8gRTLIuTC6N50nb22l2HOOV4PTOHgoGp8mUjy9wLiHYoYTSYI36tUnXZgasSRFZorQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' - react-router@7.12.0: - resolution: {integrity: sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw==} + react-router@7.15.0: + resolution: {integrity: sha512-HW9vYwuM8f4yx66Izy8xfrzCM+SBJluoZcCbww9A1TySax11S5Vgw6fi3ZjMONw9J4gQwngL7PzkyIpJJpJ7RQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -4404,8 +4224,8 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - recast@0.23.9: - resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} redent@3.0.0: @@ -4416,10 +4236,6 @@ packages: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} - regenerate-unicode-properties@10.2.2: resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} engines: {node: '>=4'} @@ -4431,10 +4247,6 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} - engines: {node: '>=4'} - regexpu-core@6.4.0: resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} @@ -4442,10 +4254,6 @@ packages: regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} - hasBin: true - regjsparser@0.13.1: resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} hasBin: true @@ -4472,22 +4280,18 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - resolve@1.22.12: resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} hasBin: true - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + resolve@2.0.0-next.6: + resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} + engines: {node: '>= 0.4'} hasBin: true - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rimraf@3.0.2: @@ -4495,12 +4299,12 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup-plugin-dts@6.1.1: - resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} - engines: {node: '>=16'} + rollup-plugin-dts@6.4.1: + resolution: {integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==} + engines: {node: '>=20'} peerDependencies: rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 + typescript: ^4.5 || ^5.0 || ^6.0 rollup-plugin-peer-deps-external@2.2.4: resolution: {integrity: sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==} @@ -4516,21 +4320,16 @@ packages: rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@4.30.0: - resolution: {integrity: sha512-sDnr1pcjTgUT69qBksNF1N1anwfbyYG6TBQ22b03bII8EdiUQ7J0TlozVaTMjT/eEJAO49e1ndV7t+UZfL1+vA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.52.4: - resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==} + rollup@4.60.3: + resolution: {integrity: sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + safe-array-concat@1.1.4: + resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} engines: {node: '>=0.4'} safe-buffer@5.2.1: @@ -4550,6 +4349,10 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -4561,10 +4364,6 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} - engines: {node: '>= 10.13.0'} - schema-utils@4.3.3: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} @@ -4573,16 +4372,16 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + semver@7.8.0: + resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} engines: {node: '>=10'} hasBin: true serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} @@ -4604,8 +4403,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} engines: {node: '>= 0.4'} side-channel-map@1.0.1: @@ -4627,8 +4426,9 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - smob@1.5.0: - resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} + smob@1.6.1: + resolution: {integrity: sha512-KAkBqZl3c2GvNgNhcoyJae1aKldDW0LO279wF9bk1PnluRTETKBq0WyzRXxEhoQLk56yHaOY4JCBEKDuJIET5g==} + engines: {node: '>=20.0.0'} source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} @@ -4655,6 +4455,10 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + storybook-dark-mode@4.0.2: resolution: {integrity: sha512-zjcwwQ01R5t1VsakA6alc2JDIRVtavryW8J3E3eKLDIlAMcvsgtpxlelWkZs2cuNspk6Z10XzhQVrUWtYc3F0w==} @@ -4693,8 +4497,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} strip-bom@3.0.0: @@ -4705,8 +4509,8 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + strip-indent@4.1.1: + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} engines: {node: '>=12'} strip-json-comments@3.1.1: @@ -4750,13 +4554,13 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + svgo@2.8.2: + resolution: {integrity: sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==} engines: {node: '>=10.13.0'} hasBin: true - swc-loader@0.2.6: - resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} + swc-loader@0.2.7: + resolution: {integrity: sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w==} peerDependencies: '@swc/core': ^1.2.147 webpack: 5.104.1 @@ -4764,52 +4568,59 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synckit@0.9.2: - resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - tapable@2.3.3: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} - terser-webpack-plugin@5.3.11: - resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} + terser-webpack-plugin@5.6.0: + resolution: {integrity: sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==} engines: {node: '>= 10.13.0'} peerDependencies: + '@minify-html/node': '*' '@swc/core': '*' + '@swc/css': '*' + '@swc/html': '*' + clean-css: '*' + cssnano: '*' + csso: '*' esbuild: '*' + html-minifier-terser: '*' + lightningcss: '*' + postcss: '*' uglify-js: '*' webpack: 5.104.1 peerDependenciesMeta: + '@minify-html/node': + optional: true '@swc/core': optional: true - esbuild: + '@swc/css': optional: true - uglify-js: + '@swc/html': optional: true - - terser-webpack-plugin@5.5.0: - resolution: {integrity: sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: 5.104.1 - peerDependenciesMeta: - '@swc/core': + clean-css: + optional: true + cssnano: + optional: true + csso: optional: true esbuild: optional: true + html-minifier-terser: + optional: true + lightningcss: + optional: true + postcss: + optional: true uglify-js: optional: true - terser@5.37.0: - resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} + terser@5.47.1: + resolution: {integrity: sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==} engines: {node: '>=10'} hasBin: true @@ -4822,8 +4633,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} tinypool@1.1.1: @@ -4862,11 +4673,11 @@ packages: resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} engines: {node: '>=0.10.0'} - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} @@ -4902,22 +4713,22 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typedoc@0.28.5: - resolution: {integrity: sha512-5PzUddaA9FbaarUzIsEc4wNXCiO4Ot3bJNeMF2qKpYlTmM9TTaSHQ7162w756ERCkXER/+o2purRG6YOAv6EMA==} + typedoc@0.28.19: + resolution: {integrity: sha512-wKh+lhdmMFivMlc6vRRcMGXeGEHGU2g8a2CkPTJjJlwRf1iXbimWIPcFolCqe4E0d/FRtGszpIrsp3WLpDB8Pw==} engines: {node: '>= 18', pnpm: '>= 10'} hasBin: true peerDependencies: - typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x - typescript-eslint@8.19.0: - resolution: {integrity: sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ==} + typescript-eslint@8.59.3: + resolution: {integrity: sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -4939,16 +4750,12 @@ packages: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} - engines: {node: '>=4'} - unicode-match-property-value-ecmascript@2.2.1: resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} engines: {node: '>=4'} - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} universalify@0.2.0: @@ -4959,16 +4766,10 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unplugin@1.16.0: - resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} engines: {node: '>=14.0.0'} - update-browserslist-db@1.1.1: - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true @@ -4999,6 +4800,7 @@ packages: uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true vite-node@3.2.4: @@ -5006,8 +4808,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@7.1.10: - resolution: {integrity: sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==} + vite@7.3.3: + resolution: {integrity: sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -5098,8 +4900,8 @@ packages: webpack-hot-middleware@2.26.1: resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} - webpack-sources@3.4.0: - resolution: {integrity: sha512-gHwIe1cgBvvfLeu1Yz/dcFpmHfKDVxxyqI+kzqmuxZED81z2ChxpyqPaWcNqigPywhaEke7AjSGga+kxY55gjQ==} + webpack-sources@3.4.1: + resolution: {integrity: sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==} engines: {node: '>=10.13.0'} webpack-virtual-modules@0.6.2: @@ -5140,8 +4942,8 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-typed-array@1.1.18: - resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} which@2.0.2: @@ -5161,8 +4963,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -5183,12 +4985,12 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} engines: {node: '>= 6'} - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} hasBin: true @@ -5198,13 +5000,7 @@ packages: snapshots: - '@adobe/css-tools@4.4.1': {} - - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 + '@adobe/css-tools@4.4.4': {} '@babel/code-frame@7.29.0': dependencies: @@ -5212,7 +5008,7 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.29.0': {} + '@babel/compat-data@7.29.3': {} '@babel/core@7.29.0': dependencies: @@ -5221,7 +5017,7 @@ snapshots: '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 @@ -5234,39 +5030,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.3': - dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.25.9': - dependencies: - '@babel/types': 7.26.3 - '@babel/helper-annotate-as-pure@7.27.3': dependencies: '@babel/types': 7.29.0 '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.29.0 + '@babel/compat-data': 7.29.3 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.24.3 + browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': + '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 @@ -5279,13 +5063,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.25.9 - regexpu-core: 6.2.0 - semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -5313,13 +5090,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-imports@7.28.6': dependencies: '@babel/traverse': 7.29.0 @@ -5340,8 +5110,6 @@ snapshots: dependencies: '@babel/types': 7.29.0 - '@babel/helper-plugin-utils@7.25.9': {} - '@babel/helper-plugin-utils@7.28.6': {} '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': @@ -5369,16 +5137,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.25.9': {} - '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-identifier@7.28.5': {} - '@babel/helper-validator-option@7.25.9': {} - '@babel/helper-validator-option@7.27.1': {} '@babel/helper-wrap-function@7.28.6': @@ -5394,11 +5156,7 @@ snapshots: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.26.3': - dependencies: - '@babel/types': 7.26.3 - - '@babel/parser@7.29.2': + '@babel/parser@7.29.3': dependencies: '@babel/types': 7.29.0 @@ -5420,6 +5178,14 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -5451,11 +5217,6 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -5469,7 +5230,7 @@ snapshots: '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.29.0) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': @@ -5508,7 +5269,7 @@ snapshots: '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color @@ -5516,7 +5277,7 @@ snapshots: '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color @@ -5640,7 +5401,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)': + '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) @@ -5719,7 +5480,7 @@ snapshots: '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color @@ -5728,7 +5489,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color @@ -5738,34 +5499,34 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.29.0)': + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.29.0)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.29.0)': + '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.29.0) - '@babel/types': 7.26.3 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.29.0)': + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': dependencies: @@ -5815,7 +5576,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) @@ -5845,9 +5606,9 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/preset-env@7.29.2(@babel/core@7.29.0)': + '@babel/preset-env@7.29.5(@babel/core@7.29.0)': dependencies: - '@babel/compat-data': 7.29.0 + '@babel/compat-data': 7.29.3 '@babel/core': 7.29.0 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 @@ -5855,6 +5616,7 @@ snapshots: '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.3(@babel/core@7.29.0) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) @@ -5886,7 +5648,7 @@ snapshots: '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-modules-systemjs': 7.29.4(@babel/core@7.29.0) '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) @@ -5925,18 +5687,18 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/types': 7.26.3 + '@babel/types': 7.29.0 esutils: 2.0.3 - '@babel/preset-react@7.26.3(@babel/core@7.29.0)': + '@babel/preset-react@7.28.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.29.0) - '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0) transitivePeerDependencies: - supports-color @@ -5953,60 +5715,37 @@ snapshots: '@babel/runtime@7.27.6': {} - '@babel/template@7.25.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 - '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/types': 7.29.0 - '@babel/traverse@7.26.4': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 - '@babel/parser': 7.26.3 - '@babel/template': 7.25.9 - '@babel/types': 7.26.3 - debug: 4.4.3 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.29.0': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.26.3': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@chromatic-com/storybook@3.2.3(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))': + '@chromatic-com/storybook@3.2.7(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))': dependencies: - chromatic: 11.22.0 + chromatic: 11.29.0 filesize: 10.1.6 - jsonfile: 6.1.0 - react-confetti: 6.2.2(react@18.3.1) + jsonfile: 6.2.1 + react-confetti: 6.4.0(react@18.3.1) storybook: 8.6.18(prettier@3.4.2) - strip-ansi: 7.1.0 + strip-ansi: 7.2.0 transitivePeerDependencies: - '@chromatic-com/cypress' - '@chromatic-com/playwright' @@ -6022,7 +5761,7 @@ snapshots: '@emotion/babel-plugin@11.13.5': dependencies: - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.28.6 '@babel/runtime': 7.27.6 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 @@ -6046,13 +5785,13 @@ snapshots: '@emotion/hash@0.9.2': {} - '@emotion/is-prop-valid@1.3.1': + '@emotion/is-prop-valid@1.4.0': dependencies: '@emotion/memoize': 0.9.0 '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1)': + '@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 '@emotion/babel-plugin': 11.13.5 @@ -6064,7 +5803,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 transitivePeerDependencies: - supports-color @@ -6074,22 +5813,22 @@ snapshots: '@emotion/memoize': 0.9.0 '@emotion/unitless': 0.10.0 '@emotion/utils': 1.4.2 - csstype: 3.1.3 + csstype: 3.2.3 '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 '@emotion/babel-plugin': 11.13.5 - '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) + '@emotion/is-prop-valid': 1.4.0 + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) '@emotion/utils': 1.4.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 transitivePeerDependencies: - supports-color @@ -6106,167 +5845,162 @@ snapshots: '@esbuild/aix-ppc64@0.25.0': optional: true - '@esbuild/aix-ppc64@0.25.11': + '@esbuild/aix-ppc64@0.27.7': optional: true '@esbuild/android-arm64@0.25.0': optional: true - '@esbuild/android-arm64@0.25.11': + '@esbuild/android-arm64@0.27.7': optional: true '@esbuild/android-arm@0.25.0': optional: true - '@esbuild/android-arm@0.25.11': + '@esbuild/android-arm@0.27.7': optional: true '@esbuild/android-x64@0.25.0': optional: true - '@esbuild/android-x64@0.25.11': + '@esbuild/android-x64@0.27.7': optional: true '@esbuild/darwin-arm64@0.25.0': optional: true - '@esbuild/darwin-arm64@0.25.11': + '@esbuild/darwin-arm64@0.27.7': optional: true '@esbuild/darwin-x64@0.25.0': optional: true - '@esbuild/darwin-x64@0.25.11': + '@esbuild/darwin-x64@0.27.7': optional: true '@esbuild/freebsd-arm64@0.25.0': optional: true - '@esbuild/freebsd-arm64@0.25.11': + '@esbuild/freebsd-arm64@0.27.7': optional: true '@esbuild/freebsd-x64@0.25.0': optional: true - '@esbuild/freebsd-x64@0.25.11': + '@esbuild/freebsd-x64@0.27.7': optional: true '@esbuild/linux-arm64@0.25.0': optional: true - '@esbuild/linux-arm64@0.25.11': + '@esbuild/linux-arm64@0.27.7': optional: true '@esbuild/linux-arm@0.25.0': optional: true - '@esbuild/linux-arm@0.25.11': + '@esbuild/linux-arm@0.27.7': optional: true '@esbuild/linux-ia32@0.25.0': optional: true - '@esbuild/linux-ia32@0.25.11': + '@esbuild/linux-ia32@0.27.7': optional: true '@esbuild/linux-loong64@0.25.0': optional: true - '@esbuild/linux-loong64@0.25.11': + '@esbuild/linux-loong64@0.27.7': optional: true '@esbuild/linux-mips64el@0.25.0': optional: true - '@esbuild/linux-mips64el@0.25.11': + '@esbuild/linux-mips64el@0.27.7': optional: true '@esbuild/linux-ppc64@0.25.0': optional: true - '@esbuild/linux-ppc64@0.25.11': + '@esbuild/linux-ppc64@0.27.7': optional: true '@esbuild/linux-riscv64@0.25.0': optional: true - '@esbuild/linux-riscv64@0.25.11': + '@esbuild/linux-riscv64@0.27.7': optional: true '@esbuild/linux-s390x@0.25.0': optional: true - '@esbuild/linux-s390x@0.25.11': + '@esbuild/linux-s390x@0.27.7': optional: true '@esbuild/linux-x64@0.25.0': optional: true - '@esbuild/linux-x64@0.25.11': + '@esbuild/linux-x64@0.27.7': optional: true '@esbuild/netbsd-arm64@0.25.0': optional: true - '@esbuild/netbsd-arm64@0.25.11': + '@esbuild/netbsd-arm64@0.27.7': optional: true '@esbuild/netbsd-x64@0.25.0': optional: true - '@esbuild/netbsd-x64@0.25.11': + '@esbuild/netbsd-x64@0.27.7': optional: true '@esbuild/openbsd-arm64@0.25.0': optional: true - '@esbuild/openbsd-arm64@0.25.11': + '@esbuild/openbsd-arm64@0.27.7': optional: true '@esbuild/openbsd-x64@0.25.0': optional: true - '@esbuild/openbsd-x64@0.25.11': + '@esbuild/openbsd-x64@0.27.7': optional: true - '@esbuild/openharmony-arm64@0.25.11': + '@esbuild/openharmony-arm64@0.27.7': optional: true '@esbuild/sunos-x64@0.25.0': optional: true - '@esbuild/sunos-x64@0.25.11': + '@esbuild/sunos-x64@0.27.7': optional: true '@esbuild/win32-arm64@0.25.0': optional: true - '@esbuild/win32-arm64@0.25.11': + '@esbuild/win32-arm64@0.27.7': optional: true '@esbuild/win32-ia32@0.25.0': optional: true - '@esbuild/win32-ia32@0.25.11': + '@esbuild/win32-ia32@0.27.7': optional: true '@esbuild/win32-x64@0.25.0': optional: true - '@esbuild/win32-x64@0.25.11': + '@esbuild/win32-x64@0.27.7': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.39.4)': - dependencies: - eslint: 9.39.4 - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': dependencies: eslint: 9.39.4 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} '@eslint/config-array@0.21.2': dependencies: @@ -6284,20 +6018,6 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.2.0': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - '@eslint/eslintrc@3.3.5': dependencies: ajv: 6.15.0 @@ -6305,7 +6025,7 @@ snapshots: espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.1 minimatch: 3.1.5 strip-json-comments: 3.1.1 @@ -6321,81 +6041,71 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@gerrit0/mini-shiki@3.7.0': + '@gerrit0/mini-shiki@3.23.0': dependencies: - '@shikijs/engine-oniguruma': 3.7.0 - '@shikijs/langs': 3.7.0 - '@shikijs/themes': 3.7.0 - '@shikijs/types': 3.7.0 + '@shikijs/engine-oniguruma': 3.23.0 + '@shikijs/langs': 3.23.0 + '@shikijs/themes': 3.23.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@humanfs/core@0.19.1': {} + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.8': dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 - '@humanwhocodes/module-importer@1.0.1': {} + '@humanfs/types@0.15.0': {} - '@humanwhocodes/retry@0.3.1': {} + '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.4.3': {} '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/remapping@2.3.5': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': + '@jridgewell/source-map@0.3.11': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jsonforms/core@3.7.0': dependencies: '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) lodash: 4.18.1 - '@jsonforms/material-renderers@3.7.0(tycpmb7mlqgjusrbuymfwpcqdy)': + '@jsonforms/material-renderers@3.7.0(rnt37svge7wbuy2pqaj5fifdrm)': dependencies: '@date-io/dayjs': 3.2.0(dayjs@1.10.7) - '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) '@jsonforms/core': 3.7.0 '@jsonforms/react': 3.7.0(@jsonforms/core@3.7.0)(react@18.3.1) - '@mui/icons-material': 7.3.10(@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) - '@mui/material': 7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/x-date-pickers': 7.29.4(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@9.0.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(dayjs@1.10.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/icons-material': 7.3.11(@mui/material@7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/material': 7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/x-date-pickers': 7.29.4(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@mui/material@7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@9.0.0(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(dayjs@1.10.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) dayjs: 1.10.7 lodash: 4.18.1 react: 18.3.1 @@ -6406,62 +6116,62 @@ snapshots: lodash: 4.18.1 react: 18.3.1 - '@mdx-js/react@3.1.0(@types/react@18.3.18)(react@18.3.1)': + '@mdx-js/react@3.1.1(@types/react@18.3.28)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.18 + '@types/react': 18.3.28 react: 18.3.1 - '@mui/core-downloads-tracker@7.3.10': {} + '@mui/core-downloads-tracker@7.3.11': {} - '@mui/icons-material@7.3.10(@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': + '@mui/icons-material@7.3.11(@mui/material@7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 - '@mui/material': 7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 - '@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/material@7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 - '@mui/core-downloads-tracker': 7.3.10 - '@mui/system': 7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) - '@mui/types': 7.4.12(@types/react@18.3.18) - '@mui/utils': 7.3.10(@types/react@18.3.18)(react@18.3.1) + '@mui/core-downloads-tracker': 7.3.11 + '@mui/system': 7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/types': 7.4.12(@types/react@18.3.28) + '@mui/utils': 7.3.11(@types/react@18.3.28)(react@18.3.1) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@18.3.18) + '@types/react-transition-group': 4.4.12(@types/react@18.3.28) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-is: 19.2.4 + react-is: 19.2.6 react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) - '@types/react': 18.3.18 + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@types/react': 18.3.28 - '@mui/private-theming@7.3.10(@types/react@18.3.18)(react@18.3.1)': + '@mui/private-theming@7.3.11(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 - '@mui/utils': 7.3.10(@types/react@18.3.18)(react@18.3.1) + '@mui/utils': 7.3.11(@types/react@18.3.28)(react@18.3.1) prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 - '@mui/private-theming@9.0.0(@types/react@18.3.18)(react@18.3.1)': + '@mui/private-theming@9.0.1(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 - '@mui/utils': 9.0.0(@types/react@18.3.18)(react@18.3.1) + '@mui/utils': 9.0.1(@types/react@18.3.28)(react@18.3.1) prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 - '@mui/styled-engine@7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1)': + '@mui/styled-engine@7.3.10(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 '@emotion/cache': 11.14.0 @@ -6471,10 +6181,10 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) - '@mui/styled-engine@9.0.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1)': + '@mui/styled-engine@9.0.0(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 '@emotion/cache': 11.14.0 @@ -6484,101 +6194,101 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) - '@mui/system@7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': + '@mui/system@7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 - '@mui/private-theming': 7.3.10(@types/react@18.3.18)(react@18.3.1) - '@mui/styled-engine': 7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1) - '@mui/types': 7.4.12(@types/react@18.3.18) - '@mui/utils': 7.3.10(@types/react@18.3.18)(react@18.3.1) + '@mui/private-theming': 7.3.11(@types/react@18.3.28)(react@18.3.1) + '@mui/styled-engine': 7.3.10(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(react@18.3.1) + '@mui/types': 7.4.12(@types/react@18.3.28) + '@mui/utils': 7.3.11(@types/react@18.3.28)(react@18.3.1) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) - '@types/react': 18.3.18 + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@types/react': 18.3.28 - '@mui/system@9.0.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': + '@mui/system@9.0.0(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 - '@mui/private-theming': 9.0.0(@types/react@18.3.18)(react@18.3.1) - '@mui/styled-engine': 9.0.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1) - '@mui/types': 9.0.0(@types/react@18.3.18) - '@mui/utils': 9.0.0(@types/react@18.3.18)(react@18.3.1) + '@mui/private-theming': 9.0.1(@types/react@18.3.28)(react@18.3.1) + '@mui/styled-engine': 9.0.0(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(react@18.3.1) + '@mui/types': 9.0.0(@types/react@18.3.28) + '@mui/utils': 9.0.1(@types/react@18.3.28)(react@18.3.1) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) - '@types/react': 18.3.18 + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@types/react': 18.3.28 - '@mui/types@7.4.12(@types/react@18.3.18)': + '@mui/types@7.4.12(@types/react@18.3.28)': dependencies: '@babel/runtime': 7.27.6 optionalDependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 - '@mui/types@9.0.0(@types/react@18.3.18)': + '@mui/types@9.0.0(@types/react@18.3.28)': dependencies: '@babel/runtime': 7.27.6 optionalDependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 - '@mui/utils@7.3.10(@types/react@18.3.18)(react@18.3.1)': + '@mui/utils@7.3.11(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 - '@mui/types': 7.4.12(@types/react@18.3.18) + '@mui/types': 7.4.12(@types/react@18.3.28) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 - react-is: 19.2.4 + react-is: 19.2.6 optionalDependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 - '@mui/utils@9.0.0(@types/react@18.3.18)(react@18.3.1)': + '@mui/utils@9.0.1(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 - '@mui/types': 9.0.0(@types/react@18.3.18) + '@mui/types': 9.0.0(@types/react@18.3.28) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 - react-is: 19.2.4 + react-is: 19.2.6 optionalDependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 - '@mui/x-date-pickers@7.29.4(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@9.0.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(dayjs@1.10.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-date-pickers@7.29.4(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@mui/material@7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@9.0.0(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(dayjs@1.10.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 - '@mui/material': 7.3.10(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 9.0.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) - '@mui/utils': 7.3.10(@types/react@18.3.18)(react@18.3.1) - '@mui/x-internals': 7.29.0(@types/react@18.3.18)(react@18.3.1) - '@types/react-transition-group': 4.4.12(@types/react@18.3.18) + '@mui/material': 7.3.11(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 9.0.0(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/utils': 7.3.11(@types/react@18.3.28)(react@18.3.1) + '@mui/x-internals': 7.29.0(@types/react@18.3.28)(react@18.3.1) + '@types/react-transition-group': 4.4.12(@types/react@18.3.28) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) dayjs: 1.10.7 transitivePeerDependencies: - '@types/react' - '@mui/x-internals@7.29.0(@types/react@18.3.18)(react@18.3.1)': + '@mui/x-internals@7.29.0(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 - '@mui/utils': 7.3.10(@types/react@18.3.18)(react@18.3.1) + '@mui/utils': 7.3.11(@types/react@18.3.28)(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - '@types/react' @@ -6593,209 +6303,161 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 + fastq: 1.20.1 - '@pkgr/core@0.1.1': {} + '@pkgr/core@0.2.9': {} '@popperjs/core@2.11.8': {} - '@rollup/plugin-commonjs@28.0.2(rollup@4.30.0)': + '@rollup/plugin-commonjs@28.0.9(rollup@4.60.3)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.2(picomatch@4.0.2) + fdir: 6.5.0(picomatch@4.0.4) is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.2 + magic-string: 0.30.21 + picomatch: 4.0.4 optionalDependencies: - rollup: 4.30.0 + rollup: 4.60.3 - '@rollup/plugin-image@3.0.3(rollup@4.30.0)': + '@rollup/plugin-image@3.0.3(rollup@4.60.3)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) mini-svg-data-uri: 1.4.4 optionalDependencies: - rollup: 4.30.0 + rollup: 4.60.3 - '@rollup/plugin-json@6.1.0(rollup@4.30.0)': + '@rollup/plugin-json@6.1.0(rollup@4.60.3)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) optionalDependencies: - rollup: 4.30.0 + rollup: 4.60.3 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.30.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.60.3)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.12 optionalDependencies: - rollup: 4.30.0 + rollup: 4.60.3 - '@rollup/plugin-terser@0.4.4(rollup@4.30.0)': + '@rollup/plugin-terser@0.4.4(rollup@4.60.3)': dependencies: serialize-javascript: 6.0.2 - smob: 1.5.0 - terser: 5.37.0 + smob: 1.6.1 + terser: 5.47.1 optionalDependencies: - rollup: 4.30.0 + rollup: 4.60.3 - '@rollup/plugin-typescript@12.1.2(rollup@4.30.0)(tslib@2.8.1)(typescript@5.7.2)': + '@rollup/plugin-typescript@12.3.0(rollup@4.60.3)(tslib@2.8.1)(typescript@5.9.3)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.0) - resolve: 1.22.10 - typescript: 5.7.2 + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) + resolve: 1.22.12 + typescript: 5.9.3 optionalDependencies: - rollup: 4.30.0 + rollup: 4.60.3 tslib: 2.8.1 - '@rollup/pluginutils@5.1.4(rollup@4.30.0)': + '@rollup/pluginutils@5.3.0(rollup@4.60.3)': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.9 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.4 optionalDependencies: - rollup: 4.30.0 - - '@rollup/rollup-android-arm-eabi@4.30.0': - optional: true - - '@rollup/rollup-android-arm-eabi@4.52.4': - optional: true - - '@rollup/rollup-android-arm64@4.30.0': - optional: true - - '@rollup/rollup-android-arm64@4.52.4': - optional: true - - '@rollup/rollup-darwin-arm64@4.30.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.52.4': - optional: true - - '@rollup/rollup-darwin-x64@4.30.0': - optional: true - - '@rollup/rollup-darwin-x64@4.52.4': - optional: true - - '@rollup/rollup-freebsd-arm64@4.30.0': - optional: true - - '@rollup/rollup-freebsd-arm64@4.52.4': - optional: true - - '@rollup/rollup-freebsd-x64@4.30.0': - optional: true - - '@rollup/rollup-freebsd-x64@4.52.4': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.30.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.52.4': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.30.0': - optional: true + rollup: 4.60.3 - '@rollup/rollup-linux-arm-musleabihf@4.52.4': + '@rollup/rollup-android-arm-eabi@4.60.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.30.0': + '@rollup/rollup-android-arm64@4.60.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.4': + '@rollup/rollup-darwin-arm64@4.60.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.30.0': + '@rollup/rollup-darwin-x64@4.60.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.4': + '@rollup/rollup-freebsd-arm64@4.60.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.4': + '@rollup/rollup-freebsd-x64@4.60.3': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.30.0': + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.30.0': + '@rollup/rollup-linux-arm-musleabihf@4.60.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.4': + '@rollup/rollup-linux-arm64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.30.0': + '@rollup/rollup-linux-arm64-musl@4.60.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.4': + '@rollup/rollup-linux-loong64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.4': + '@rollup/rollup-linux-loong64-musl@4.60.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.30.0': + '@rollup/rollup-linux-ppc64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.4': + '@rollup/rollup-linux-ppc64-musl@4.60.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.30.0': + '@rollup/rollup-linux-riscv64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.4': + '@rollup/rollup-linux-riscv64-musl@4.60.3': optional: true - '@rollup/rollup-linux-x64-musl@4.30.0': + '@rollup/rollup-linux-s390x-gnu@4.60.3': optional: true - '@rollup/rollup-linux-x64-musl@4.52.4': + '@rollup/rollup-linux-x64-gnu@4.60.3': optional: true - '@rollup/rollup-openharmony-arm64@4.52.4': + '@rollup/rollup-linux-x64-musl@4.60.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.30.0': + '@rollup/rollup-openbsd-x64@4.60.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.4': + '@rollup/rollup-openharmony-arm64@4.60.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.30.0': + '@rollup/rollup-win32-arm64-msvc@4.60.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.4': + '@rollup/rollup-win32-ia32-msvc@4.60.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.4': + '@rollup/rollup-win32-x64-gnu@4.60.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.30.0': + '@rollup/rollup-win32-x64-msvc@4.60.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.4': - optional: true - - '@shikijs/engine-oniguruma@3.7.0': + '@shikijs/engine-oniguruma@3.23.0': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.7.0': + '@shikijs/langs@3.23.0': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.23.0 - '@shikijs/themes@3.7.0': + '@shikijs/themes@3.23.0': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.23.0 - '@shikijs/types@3.7.0': + '@shikijs/types@3.23.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -6825,9 +6487,9 @@ snapshots: storybook: 8.6.18(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-docs@8.6.18(@types/react@18.3.18)(storybook@8.6.18(prettier@3.4.2))': + '@storybook/addon-docs@8.6.18(@types/react@18.3.28)(storybook@8.6.18(prettier@3.4.2))': dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.3.18)(react@18.3.1) + '@mdx-js/react': 3.1.1(@types/react@18.3.28)(react@18.3.1) '@storybook/blocks': 8.6.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2)) '@storybook/csf-plugin': 8.6.18(storybook@8.6.18(prettier@3.4.2)) '@storybook/react-dom-shim': 8.6.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2)) @@ -6838,12 +6500,12 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.6.18(@types/react@18.3.18)(storybook@8.6.18(prettier@3.4.2))': + '@storybook/addon-essentials@8.6.18(@types/react@18.3.28)(storybook@8.6.18(prettier@3.4.2))': dependencies: '@storybook/addon-actions': 8.6.18(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-backgrounds': 8.6.18(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-controls': 8.6.18(storybook@8.6.18(prettier@3.4.2)) - '@storybook/addon-docs': 8.6.18(@types/react@18.3.18)(storybook@8.6.18(prettier@3.4.2)) + '@storybook/addon-docs': 8.6.18(@types/react@18.3.28)(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-highlight': 8.6.18(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-measure': 8.6.18(storybook@8.6.18(prettier@3.4.2)) '@storybook/addon-outline': 8.6.18(storybook@8.6.18(prettier@3.4.2)) @@ -6897,60 +6559,69 @@ snapshots: memoizerific: 1.11.3 storybook: 8.6.18(prettier@3.4.2) - '@storybook/addon-webpack5-compiler-swc@1.0.6(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0))': + '@storybook/addon-webpack5-compiler-swc@1.0.6(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14))': dependencies: - '@swc/core': 1.10.4 - swc-loader: 0.2.6(@swc/core@1.10.4)(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) + '@swc/core': 1.15.33 + swc-loader: 0.2.7(@swc/core@1.15.33)(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) transitivePeerDependencies: - '@swc/helpers' - webpack '@storybook/blocks@8.6.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))': dependencies: - '@storybook/icons': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/icons': 1.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) storybook: 8.6.18(prettier@3.4.2) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-webpack5@8.6.18(@swc/core@1.10.4)(esbuild@0.25.0)(storybook@8.6.18(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/builder-webpack5@8.6.18(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)(storybook@8.6.18(prettier@3.4.2))(typescript@5.9.3)': dependencies: '@storybook/core-webpack': 8.6.18(storybook@8.6.18(prettier@3.4.2)) - '@types/semver': 7.5.8 + '@types/semver': 7.7.1 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 - cjs-module-lexer: 1.4.1 + cjs-module-lexer: 1.4.3 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) + css-loader: 6.11.0(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.7.2)(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) - html-webpack-plugin: 5.6.3(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) - magic-string: 0.30.17 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) + html-webpack-plugin: 5.6.7(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) + magic-string: 0.30.21 path-browserify: 1.0.1 process: 0.11.10 - semver: 7.6.3 + semver: 7.8.0 storybook: 8.6.18(prettier@3.4.2) - style-loader: 3.3.4(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) - terser-webpack-plugin: 5.3.11(@swc/core@1.10.4)(esbuild@0.25.0)(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) + style-loader: 3.3.4(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) + terser-webpack-plugin: 5.6.0(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) - webpack-dev-middleware: 6.1.3(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) + webpack-dev-middleware: 6.1.3(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: + - '@minify-html/node' - '@rspack/core' - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso - esbuild + - html-minifier-terser + - lightningcss + - postcss - uglify-js - webpack-cli - '@storybook/components@8.4.7(storybook@8.6.18(prettier@3.4.2))': + '@storybook/components@8.6.14(storybook@8.6.18(prettier@3.4.2))': dependencies: storybook: 8.6.18(prettier@3.4.2) @@ -6958,7 +6629,7 @@ snapshots: dependencies: storybook: 8.6.18(prettier@3.4.2) - '@storybook/core-events@8.4.7(storybook@8.6.18(prettier@3.4.2))': + '@storybook/core-events@8.6.14(storybook@8.6.18(prettier@3.4.2))': dependencies: storybook: 8.6.18(prettier@3.4.2) @@ -6974,12 +6645,12 @@ snapshots: browser-assert: 1.2.1 esbuild: 0.25.0 esbuild-register: 3.6.0(esbuild@0.25.0) - jsdoc-type-pratt-parser: 4.1.0 + jsdoc-type-pratt-parser: 4.8.0 process: 0.11.10 - recast: 0.23.9 - semver: 7.6.3 + recast: 0.23.11 + semver: 7.8.0 util: 0.12.5 - ws: 8.18.3 + ws: 8.20.0 optionalDependencies: prettier: 3.4.2 transitivePeerDependencies: @@ -6991,11 +6662,11 @@ snapshots: '@storybook/csf-plugin@8.6.18(storybook@8.6.18(prettier@3.4.2))': dependencies: storybook: 8.6.18(prettier@3.4.2) - unplugin: 1.16.0 + unplugin: 1.16.1 '@storybook/global@5.0.0': {} - '@storybook/icons@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/icons@1.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -7003,16 +6674,16 @@ snapshots: '@storybook/instrumenter@8.6.15(storybook@8.6.18(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.8 + '@vitest/utils': 2.1.9 storybook: 8.6.18(prettier@3.4.2) '@storybook/instrumenter@8.6.18(storybook@8.6.18(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.8 + '@vitest/utils': 2.1.9 storybook: 8.6.18(prettier@3.4.2) - '@storybook/manager-api@8.4.7(storybook@8.6.18(prettier@3.4.2))': + '@storybook/manager-api@8.6.14(storybook@8.6.18(prettier@3.4.2))': dependencies: storybook: 8.6.18(prettier@3.4.2) @@ -7020,28 +6691,37 @@ snapshots: dependencies: storybook: 8.6.18(prettier@3.4.2) - '@storybook/preset-react-webpack@8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(@swc/core@1.10.4)(esbuild@0.25.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/preset-react-webpack@8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.9.3)': dependencies: '@storybook/core-webpack': 8.6.18(storybook@8.6.18(prettier@3.4.2)) - '@storybook/react': 8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.7.2) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) - '@types/semver': 7.5.8 + '@storybook/react': 8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.9.3) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) + '@types/semver': 7.7.1 find-up: 5.0.0 - magic-string: 0.30.17 + magic-string: 0.30.21 react: 18.3.1 - react-docgen: 7.1.0 + react-docgen: 7.1.1 react-dom: 18.3.1(react@18.3.1) - resolve: 1.22.10 - semver: 7.6.3 + resolve: 1.22.12 + semver: 7.8.0 storybook: 8.6.18(prettier@3.4.2) tsconfig-paths: 4.2.0 - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) optionalDependencies: - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: + - '@minify-html/node' - '@storybook/test' - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso - esbuild + - html-minifier-terser + - lightningcss + - postcss - supports-color - uglify-js - webpack-cli @@ -7050,17 +6730,17 @@ snapshots: dependencies: storybook: 8.6.18(prettier@3.4.2) - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0))': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14))': dependencies: debug: 4.4.3 endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.2.0 micromatch: 4.0.8 - react-docgen-typescript: 2.2.2(typescript@5.7.2) + react-docgen-typescript: 2.4.0(typescript@5.9.3) tslib: 2.8.1 - typescript: 5.7.2 - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) + typescript: 5.9.3 + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) transitivePeerDependencies: - supports-color @@ -7070,26 +6750,35 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 8.6.18(prettier@3.4.2) - '@storybook/react-webpack5@8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(@swc/core@1.10.4)(esbuild@0.25.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/react-webpack5@8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.9.3)': dependencies: - '@storybook/builder-webpack5': 8.6.18(@swc/core@1.10.4)(esbuild@0.25.0)(storybook@8.6.18(prettier@3.4.2))(typescript@5.7.2) - '@storybook/preset-react-webpack': 8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(@swc/core@1.10.4)(esbuild@0.25.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.7.2) - '@storybook/react': 8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.7.2) + '@storybook/builder-webpack5': 8.6.18(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)(storybook@8.6.18(prettier@3.4.2))(typescript@5.9.3) + '@storybook/preset-react-webpack': 8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.9.3) + '@storybook/react': 8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.9.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) storybook: 8.6.18(prettier@3.4.2) optionalDependencies: - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: + - '@minify-html/node' - '@rspack/core' - '@storybook/test' - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso - esbuild + - html-minifier-terser + - lightningcss + - postcss - supports-color - uglify-js - webpack-cli - '@storybook/react@8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/react@8.6.18(@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2))(typescript@5.9.3)': dependencies: '@storybook/components': 8.6.18(storybook@8.6.18(prettier@3.4.2)) '@storybook/global': 5.0.0 @@ -7102,7 +6791,7 @@ snapshots: storybook: 8.6.18(prettier@3.4.2) optionalDependencies: '@storybook/test': 8.6.15(storybook@8.6.18(prettier@3.4.2)) - typescript: 5.7.2 + typescript: 5.9.3 '@storybook/test@8.6.15(storybook@8.6.18(prettier@3.4.2))': dependencies: @@ -7126,7 +6815,7 @@ snapshots: '@vitest/spy': 2.0.5 storybook: 8.6.18(prettier@3.4.2) - '@storybook/theming@8.4.7(storybook@8.6.18(prettier@3.4.2))': + '@storybook/theming@8.6.14(storybook@8.6.18(prettier@3.4.2))': dependencies: storybook: 8.6.18(prettier@3.4.2) @@ -7134,61 +6823,69 @@ snapshots: dependencies: storybook: 8.6.18(prettier@3.4.2) - '@swc/core-darwin-arm64@1.10.4': + '@swc/core-darwin-arm64@1.15.33': + optional: true + + '@swc/core-darwin-x64@1.15.33': optional: true - '@swc/core-darwin-x64@1.10.4': + '@swc/core-linux-arm-gnueabihf@1.15.33': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.4': + '@swc/core-linux-arm64-gnu@1.15.33': optional: true - '@swc/core-linux-arm64-gnu@1.10.4': + '@swc/core-linux-arm64-musl@1.15.33': optional: true - '@swc/core-linux-arm64-musl@1.10.4': + '@swc/core-linux-ppc64-gnu@1.15.33': optional: true - '@swc/core-linux-x64-gnu@1.10.4': + '@swc/core-linux-s390x-gnu@1.15.33': optional: true - '@swc/core-linux-x64-musl@1.10.4': + '@swc/core-linux-x64-gnu@1.15.33': optional: true - '@swc/core-win32-arm64-msvc@1.10.4': + '@swc/core-linux-x64-musl@1.15.33': optional: true - '@swc/core-win32-ia32-msvc@1.10.4': + '@swc/core-win32-arm64-msvc@1.15.33': optional: true - '@swc/core-win32-x64-msvc@1.10.4': + '@swc/core-win32-ia32-msvc@1.15.33': optional: true - '@swc/core@1.10.4': + '@swc/core-win32-x64-msvc@1.15.33': + optional: true + + '@swc/core@1.15.33': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.17 + '@swc/types': 0.1.26 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.4 - '@swc/core-darwin-x64': 1.10.4 - '@swc/core-linux-arm-gnueabihf': 1.10.4 - '@swc/core-linux-arm64-gnu': 1.10.4 - '@swc/core-linux-arm64-musl': 1.10.4 - '@swc/core-linux-x64-gnu': 1.10.4 - '@swc/core-linux-x64-musl': 1.10.4 - '@swc/core-win32-arm64-msvc': 1.10.4 - '@swc/core-win32-ia32-msvc': 1.10.4 - '@swc/core-win32-x64-msvc': 1.10.4 + '@swc/core-darwin-arm64': 1.15.33 + '@swc/core-darwin-x64': 1.15.33 + '@swc/core-linux-arm-gnueabihf': 1.15.33 + '@swc/core-linux-arm64-gnu': 1.15.33 + '@swc/core-linux-arm64-musl': 1.15.33 + '@swc/core-linux-ppc64-gnu': 1.15.33 + '@swc/core-linux-s390x-gnu': 1.15.33 + '@swc/core-linux-x64-gnu': 1.15.33 + '@swc/core-linux-x64-musl': 1.15.33 + '@swc/core-win32-arm64-msvc': 1.15.33 + '@swc/core-win32-ia32-msvc': 1.15.33 + '@swc/core-win32-x64-msvc': 1.15.33 '@swc/counter@0.1.3': {} - '@swc/types@0.1.17': + '@swc/types@0.1.26': dependencies: '@swc/counter': 0.1.3 '@testing-library/dom@10.4.0': dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.29.0 '@babel/runtime': 7.27.6 '@types/aria-query': 5.0.4 aria-query: 5.3.0 @@ -7199,7 +6896,7 @@ snapshots: '@testing-library/jest-dom@6.5.0': dependencies: - '@adobe/css-tools': 4.4.1 + '@adobe/css-tools': 4.4.4 aria-query: 5.3.2 chalk: 3.0.0 css.escape: 1.5.1 @@ -7209,22 +6906,22 @@ snapshots: '@testing-library/jest-dom@6.9.1': dependencies: - '@adobe/css-tools': 4.4.1 + '@adobe/css-tools': 4.4.4 aria-query: 5.3.2 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@16.3.2(@testing-library/dom@10.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 '@testing-library/dom': 10.4.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.18 - '@types/react-dom': 18.3.5(@types/react@18.3.18) + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': dependencies: @@ -7234,37 +6931,36 @@ snapshots: dependencies: '@testing-library/dom': 10.4.0 - '@tootallnate/once@2.0.0': + '@tootallnate/once@2.0.1': optional: true - '@trysound/sax@0.2.0': {} - '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 - '@types/babel__generator': 7.6.8 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.28.0 - '@types/babel__generator@7.6.8': + '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.29.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.29.0 - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/deep-eql@4.0.2': {} @@ -7273,17 +6969,17 @@ snapshots: '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/eslint@9.6.1': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 - '@types/estree@1.0.6': {} - '@types/estree@1.0.8': {} + '@types/estree@1.0.9': {} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -7294,119 +6990,131 @@ snapshots: '@types/mdx@2.0.13': {} - '@types/node@20.19.21': + '@types/node@20.19.41': dependencies: undici-types: 6.21.0 '@types/parse-json@4.0.2': {} - '@types/prop-types@15.7.14': {} - '@types/prop-types@15.7.15': {} - '@types/react-dom@18.3.5(@types/react@18.3.18)': + '@types/react-dom@18.3.7(@types/react@18.3.28)': dependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 - '@types/react-transition-group@4.4.12(@types/react@18.3.18)': + '@types/react-transition-group@4.4.12(@types/react@18.3.28)': dependencies: - '@types/react': 18.3.18 + '@types/react': 18.3.28 - '@types/react@18.3.18': + '@types/react@18.3.28': dependencies: - '@types/prop-types': 15.7.14 - csstype: 3.1.3 + '@types/prop-types': 15.7.15 + csstype: 3.2.3 '@types/resolve@1.20.2': {} '@types/resolve@1.20.6': {} - '@types/semver@7.5.8': {} + '@types/semver@7.7.1': {} '@types/unist@3.0.3': {} - '@types/utif@3.0.5': + '@types/utif@3.0.6': dependencies: - '@types/node': 20.19.21 + '@types/node': 20.19.41 '@types/uuid@9.0.8': {} - '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@9.39.4)(typescript@5.7.2))(eslint@9.39.4)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.59.3(@typescript-eslint/parser@8.59.3(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.0(eslint@9.39.4)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/type-utils': 8.19.0(eslint@9.39.4)(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@9.39.4)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.59.3(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.59.3 + '@typescript-eslint/type-utils': 8.59.3(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.3(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.59.3 eslint: 9.39.4 - graphemer: 1.4.0 - ignore: 5.3.2 + ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.0(eslint@9.39.4)(typescript@5.7.2)': + '@typescript-eslint/parser@8.59.3(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 - debug: 4.4.0 + '@typescript-eslint/scope-manager': 8.59.3 + '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.59.3 + debug: 4.4.3 eslint: 9.39.4 - typescript: 5.7.2 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.59.3(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@5.9.3) + '@typescript-eslint/types': 8.59.3 + debug: 4.4.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.19.0': + '@typescript-eslint/scope-manager@8.59.3': dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/visitor-keys': 8.59.3 - '@typescript-eslint/type-utils@8.19.0(eslint@9.39.4)(typescript@5.7.2)': + '@typescript-eslint/tsconfig-utils@8.59.3(typescript@5.9.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@9.39.4)(typescript@5.7.2) - debug: 4.4.0 + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.59.3(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.3(eslint@9.39.4)(typescript@5.9.3) + debug: 4.4.3 eslint: 9.39.4 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.19.0': {} + '@typescript-eslint/types@8.59.3': {} - '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.59.3(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 + '@typescript-eslint/project-service': 8.59.3(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@5.9.3) + '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/visitor-keys': 8.59.3 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.0 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.19.0(eslint@9.39.4)(typescript@5.7.2)': + '@typescript-eslint/utils@8.59.3(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.39.4) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@typescript-eslint/scope-manager': 8.59.3 + '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3) eslint: 9.39.4 - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.19.0': + '@typescript-eslint/visitor-keys@8.59.3': dependencies: - '@typescript-eslint/types': 8.19.0 - eslint-visitor-keys: 4.2.0 + '@typescript-eslint/types': 8.59.3 + eslint-visitor-keys: 5.0.1 '@vitest/expect@2.0.5': dependencies: @@ -7417,25 +7125,25 @@ snapshots: '@vitest/expect@3.2.4': dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.10(@types/node@20.19.21)(terser@5.37.0)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.3.3(@types/node@20.19.41)(terser@5.47.1)(yaml@2.9.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: - vite: 7.1.10(@types/node@20.19.21)(terser@5.37.0)(yaml@2.8.0) + vite: 7.3.3(@types/node@20.19.41)(terser@5.47.1)(yaml@2.9.0) '@vitest/pretty-format@2.0.5': dependencies: tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.1.8': + '@vitest/pretty-format@2.1.9': dependencies: tinyrainbow: 1.2.0 @@ -7452,7 +7160,7 @@ snapshots: '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 2.0.3 '@vitest/spy@2.0.5': @@ -7470,9 +7178,9 @@ snapshots: loupe: 3.2.1 tinyrainbow: 1.2.0 - '@vitest/utils@2.1.8': + '@vitest/utils@2.1.9': dependencies: - '@vitest/pretty-format': 2.1.8 + '@vitest/pretty-format': 2.1.9 loupe: 3.2.1 tinyrainbow: 1.2.0 @@ -7567,30 +7275,24 @@ snapshots: acorn-globals@7.0.1: dependencies: - acorn: 8.15.0 - acorn-walk: 8.3.4 + acorn: 8.16.0 + acorn-walk: 8.3.5 optional: true - acorn-import-phases@1.0.4(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-import-phases@1.0.4(acorn@8.16.0): dependencies: - acorn: 8.14.0 + acorn: 8.16.0 - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn-walk@8.3.4: + acorn-walk@8.3.5: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 optional: true - acorn@8.14.0: {} - - acorn@8.15.0: {} + acorn@8.16.0: {} agent-base@6.0.2: dependencies: @@ -7599,25 +7301,18 @@ snapshots: - supports-color optional: true - ajv-formats@2.1.1(ajv@8.17.1): + ajv-formats@2.1.1(ajv@8.20.0): optionalDependencies: - ajv: 8.17.1 - - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 + ajv: 8.20.0 - ajv-keywords@5.1.0(ajv@8.17.1): + ajv-keywords@3.5.2(ajv@6.15.0): dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 + ajv: 6.15.0 - ajv@6.12.6: + ajv-keywords@5.1.0(ajv@8.20.0): dependencies: + ajv: 8.20.0 fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 ajv@6.15.0: dependencies: @@ -7626,10 +7321,10 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.17.1: + ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.5 + fast-uri: 3.1.2 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -7637,7 +7332,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: @@ -7648,7 +7343,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 argparse@2.0.1: {} @@ -7660,59 +7355,61 @@ snapshots: array-buffer-byte-length@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-includes@3.1.8: + array-includes@3.1.9: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.7 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 is-string: 1.1.1 + math-intrinsics: 1.1.0 array-union@2.1.0: {} array.prototype.findlast@1.2.5: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.2 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 array.prototype.flat@1.3.3: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.9 - es-shim-unscopables: 1.0.2 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.9 - es-shim-unscopables: 1.0.2 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 array.prototype.tosorted@1.1.4: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.2 es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 + es-shim-unscopables: 1.1.0 arraybuffer.prototype.slice@1.0.4: dependencies: array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.2 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 assertion-error@2.0.1: {} @@ -7721,6 +7418,8 @@ snapshots: dependencies: tslib: 2.8.1 + async-function@1.0.0: {} + async@3.2.6: {} asynckit@0.4.0: @@ -7728,17 +7427,17 @@ snapshots: available-typed-arrays@1.0.7: dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.27.6 cosmiconfig: 7.1.0 - resolve: 1.22.10 + resolve: 1.22.12 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: - '@babel/compat-data': 7.29.0 + '@babel/compat-data': 7.29.3 '@babel/core': 7.29.0 '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) semver: 6.3.1 @@ -7762,7 +7461,9 @@ snapshots: balanced-match@1.0.2: {} - baseline-browser-mapping@2.10.24: {} + balanced-match@4.0.4: {} + + baseline-browser-mapping@2.10.29: {} better-opn@3.0.2: dependencies: @@ -7779,9 +7480,9 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.2: + brace-expansion@5.0.6: dependencies: - balanced-match: 1.0.2 + balanced-match: 4.0.4 braces@3.0.3: dependencies: @@ -7789,41 +7490,34 @@ snapshots: browser-assert@1.2.1: {} - browserslist@4.24.3: - dependencies: - caniuse-lite: 1.0.30001690 - electron-to-chromium: 1.5.76 - node-releases: 2.0.19 - update-browserslist-db: 1.1.1(browserslist@4.24.3) - browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.24 - caniuse-lite: 1.0.30001791 - electron-to-chromium: 1.5.344 - node-releases: 2.0.38 + baseline-browser-mapping: 2.10.29 + caniuse-lite: 1.0.30001792 + electron-to-chromium: 1.5.353 + node-releases: 2.0.44 update-browserslist-db: 1.2.3(browserslist@4.28.2) buffer-from@1.1.2: {} cac@6.7.14: {} - call-bind-apply-helpers@1.0.1: + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.8: + call-bind@1.0.9: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 set-function-length: 1.2.2 - call-bound@1.0.3: + call-bound@1.0.4: dependencies: - call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.7 + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 callsites@3.1.0: {} @@ -7834,24 +7528,22 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.24.3 - caniuse-lite: 1.0.30001690 + browserslist: 4.28.2 + caniuse-lite: 1.0.30001792 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001690: {} - - caniuse-lite@1.0.30001791: {} + caniuse-lite@1.0.30001792: {} case-sensitive-paths-webpack-plugin@2.4.0: {} chai@5.3.3: dependencies: assertion-error: 2.0.1 - check-error: 2.1.1 + check-error: 2.1.3 deep-eql: 5.0.2 - loupe: 3.1.2 - pathval: 2.0.0 + loupe: 3.2.1 + pathval: 2.0.1 chalk@3.0.0: dependencies: @@ -7863,7 +7555,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - check-error@2.1.1: {} + check-error@2.1.3: {} chokidar@3.6.0: dependencies: @@ -7877,11 +7569,11 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chromatic@11.22.0: {} + chromatic@11.29.0: {} chrome-trace-event@1.0.4: {} - cjs-module-lexer@1.4.1: {} + cjs-module-lexer@1.4.3: {} clean-css@5.3.3: dependencies: @@ -7904,7 +7596,7 @@ snapshots: delayed-stream: 1.0.0 optional: true - commander@13.0.0: {} + commander@13.1.0: {} commander@2.20.3: {} @@ -7926,7 +7618,7 @@ snapshots: convert-source-map@2.0.0: {} - cookie@1.0.2: {} + cookie@1.1.1: {} core-js-compat@3.49.0: dependencies: @@ -7935,10 +7627,10 @@ snapshots: cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 + yaml: 1.10.3 cross-spawn@7.0.6: dependencies: @@ -7946,27 +7638,27 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-declaration-sorter@6.4.1(postcss@8.5.6): + css-declaration-sorter@6.4.1(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 - css-loader@6.11.0(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)): + css-loader@6.11.0(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)): dependencies: - icss-utils: 5.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) - postcss-modules-scope: 3.2.1(postcss@8.5.6) - postcss-modules-values: 4.0.0(postcss@8.5.6) + icss-utils: 5.1.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.14) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.14) + postcss-modules-scope: 3.2.1(postcss@8.5.14) + postcss-modules-values: 4.0.0(postcss@8.5.14) postcss-value-parser: 4.2.0 - semver: 7.6.3 + semver: 7.8.0 optionalDependencies: - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) css-select@4.3.0: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 4.3.1 domutils: 2.8.0 nth-check: 2.1.1 @@ -7976,55 +7668,55 @@ snapshots: mdn-data: 2.0.14 source-map: 0.6.1 - css-what@6.1.0: {} + css-what@6.2.2: {} css.escape@1.5.1: {} cssesc@3.0.0: {} - cssnano-preset-default@5.2.14(postcss@8.5.6): - dependencies: - css-declaration-sorter: 6.4.1(postcss@8.5.6) - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-calc: 8.2.4(postcss@8.5.6) - postcss-colormin: 5.3.1(postcss@8.5.6) - postcss-convert-values: 5.1.3(postcss@8.5.6) - postcss-discard-comments: 5.1.2(postcss@8.5.6) - postcss-discard-duplicates: 5.1.0(postcss@8.5.6) - postcss-discard-empty: 5.1.1(postcss@8.5.6) - postcss-discard-overridden: 5.1.0(postcss@8.5.6) - postcss-merge-longhand: 5.1.7(postcss@8.5.6) - postcss-merge-rules: 5.1.4(postcss@8.5.6) - postcss-minify-font-values: 5.1.0(postcss@8.5.6) - postcss-minify-gradients: 5.1.1(postcss@8.5.6) - postcss-minify-params: 5.1.4(postcss@8.5.6) - postcss-minify-selectors: 5.2.1(postcss@8.5.6) - postcss-normalize-charset: 5.1.0(postcss@8.5.6) - postcss-normalize-display-values: 5.1.0(postcss@8.5.6) - postcss-normalize-positions: 5.1.1(postcss@8.5.6) - postcss-normalize-repeat-style: 5.1.1(postcss@8.5.6) - postcss-normalize-string: 5.1.0(postcss@8.5.6) - postcss-normalize-timing-functions: 5.1.0(postcss@8.5.6) - postcss-normalize-unicode: 5.1.1(postcss@8.5.6) - postcss-normalize-url: 5.1.0(postcss@8.5.6) - postcss-normalize-whitespace: 5.1.1(postcss@8.5.6) - postcss-ordered-values: 5.1.3(postcss@8.5.6) - postcss-reduce-initial: 5.1.2(postcss@8.5.6) - postcss-reduce-transforms: 5.1.0(postcss@8.5.6) - postcss-svgo: 5.1.0(postcss@8.5.6) - postcss-unique-selectors: 5.1.1(postcss@8.5.6) - - cssnano-utils@3.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - cssnano@5.1.15(postcss@8.5.6): - dependencies: - cssnano-preset-default: 5.2.14(postcss@8.5.6) + cssnano-preset-default@5.2.14(postcss@8.5.14): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.5.14) + cssnano-utils: 3.1.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-calc: 8.2.4(postcss@8.5.14) + postcss-colormin: 5.3.1(postcss@8.5.14) + postcss-convert-values: 5.1.3(postcss@8.5.14) + postcss-discard-comments: 5.1.2(postcss@8.5.14) + postcss-discard-duplicates: 5.1.0(postcss@8.5.14) + postcss-discard-empty: 5.1.1(postcss@8.5.14) + postcss-discard-overridden: 5.1.0(postcss@8.5.14) + postcss-merge-longhand: 5.1.7(postcss@8.5.14) + postcss-merge-rules: 5.1.4(postcss@8.5.14) + postcss-minify-font-values: 5.1.0(postcss@8.5.14) + postcss-minify-gradients: 5.1.1(postcss@8.5.14) + postcss-minify-params: 5.1.4(postcss@8.5.14) + postcss-minify-selectors: 5.2.1(postcss@8.5.14) + postcss-normalize-charset: 5.1.0(postcss@8.5.14) + postcss-normalize-display-values: 5.1.0(postcss@8.5.14) + postcss-normalize-positions: 5.1.1(postcss@8.5.14) + postcss-normalize-repeat-style: 5.1.1(postcss@8.5.14) + postcss-normalize-string: 5.1.0(postcss@8.5.14) + postcss-normalize-timing-functions: 5.1.0(postcss@8.5.14) + postcss-normalize-unicode: 5.1.1(postcss@8.5.14) + postcss-normalize-url: 5.1.0(postcss@8.5.14) + postcss-normalize-whitespace: 5.1.1(postcss@8.5.14) + postcss-ordered-values: 5.1.3(postcss@8.5.14) + postcss-reduce-initial: 5.1.2(postcss@8.5.14) + postcss-reduce-transforms: 5.1.0(postcss@8.5.14) + postcss-svgo: 5.1.0(postcss@8.5.14) + postcss-unique-selectors: 5.1.1(postcss@8.5.14) + + cssnano-utils@3.1.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + + cssnano@5.1.15(postcss@8.5.14): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.5.14) lilconfig: 2.1.0 - postcss: 8.5.6 - yaml: 1.10.2 + postcss: 8.5.14 + yaml: 1.10.3 csso@4.2.0: dependencies: @@ -8041,8 +7733,6 @@ snapshots: cssom: 0.3.8 optional: true - csstype@3.1.3: {} - csstype@3.2.3: {} data-urls@3.0.2: @@ -8054,28 +7744,24 @@ snapshots: data-view-buffer@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 data-view-byte-length@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 data-view-byte-offset@1.0.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 dayjs@1.10.7: {} - debug@4.4.0: - dependencies: - ms: 2.1.3 - debug@4.4.3: dependencies: ms: 2.1.3 @@ -8165,13 +7851,11 @@ snapshots: dunder-proto@1.0.1: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 - electron-to-chromium@1.5.344: {} - - electron-to-chromium@1.5.76: {} + electron-to-chromium@1.5.353: {} email-addresses@5.0.0: {} @@ -8183,7 +7867,7 @@ snapshots: fast-json-parse: 1.0.3 objectorarray: 1.0.5 - enhanced-resolve@5.18.0: + enhanced-resolve@5.21.3: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -8195,27 +7879,27 @@ snapshots: entities@6.0.1: optional: true - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.9: + es-abstract@1.24.2: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 data-view-buffer: 1.0.2 data-view-byte-length: 1.0.2 data-view-byte-offset: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 function.prototype.name: 1.1.8 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 get-proto: 1.0.1 get-symbol-description: 1.1.0 globalthis: 1.0.4 @@ -8223,26 +7907,29 @@ snapshots: has-property-descriptors: 1.0.2 has-proto: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.3 internal-slot: 1.1.0 is-array-buffer: 3.0.5 is-callable: 1.2.7 is-data-view: 1.0.2 + is-negative-zero: 2.0.3 is-regex: 1.2.1 + is-set: 2.0.3 is-shared-array-buffer: 1.0.4 is-string: 1.1.1 is-typed-array: 1.1.15 - is-weakref: 1.1.0 + is-weakref: 1.1.1 math-intrinsics: 1.1.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 object-keys: 1.1.1 object.assign: 4.1.7 own-keys: 1.0.1 regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 + safe-array-concat: 1.1.4 safe-push-apply: 1.0.0 safe-regex-test: 1.1.0 set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 string.prototype.trim: 1.2.10 string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 @@ -8251,22 +7938,22 @@ snapshots: typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.18 + which-typed-array: 1.1.20 es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-iterator-helpers@1.2.1: + es-iterator-helpers@1.3.2: dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.2 es-errors: 1.3.0 es-set-tostringtag: 2.1.0 function-bind: 1.1.2 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 globalthis: 1.0.4 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -8274,26 +7961,26 @@ snapshots: has-symbols: 1.1.0 internal-slot: 1.1.0 iterator.prototype: 1.1.5 - safe-array-concat: 1.1.3 + math-intrinsics: 1.1.0 es-module-lexer@1.7.0: {} es-module-lexer@2.1.0: {} - es-object-atoms@1.0.0: + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 es-set-tostringtag@2.1.0: dependencies: es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.3 - es-shim-unscopables@1.0.2: + es-shim-unscopables@1.1.0: dependencies: - hasown: 2.0.2 + hasown: 2.0.3 es-to-primitive@1.3.0: dependencies: @@ -8336,34 +8023,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.0 '@esbuild/win32-x64': 0.25.0 - esbuild@0.25.11: + esbuild@0.27.7: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.11 - '@esbuild/android-arm': 0.25.11 - '@esbuild/android-arm64': 0.25.11 - '@esbuild/android-x64': 0.25.11 - '@esbuild/darwin-arm64': 0.25.11 - '@esbuild/darwin-x64': 0.25.11 - '@esbuild/freebsd-arm64': 0.25.11 - '@esbuild/freebsd-x64': 0.25.11 - '@esbuild/linux-arm': 0.25.11 - '@esbuild/linux-arm64': 0.25.11 - '@esbuild/linux-ia32': 0.25.11 - '@esbuild/linux-loong64': 0.25.11 - '@esbuild/linux-mips64el': 0.25.11 - '@esbuild/linux-ppc64': 0.25.11 - '@esbuild/linux-riscv64': 0.25.11 - '@esbuild/linux-s390x': 0.25.11 - '@esbuild/linux-x64': 0.25.11 - '@esbuild/netbsd-arm64': 0.25.11 - '@esbuild/netbsd-x64': 0.25.11 - '@esbuild/openbsd-arm64': 0.25.11 - '@esbuild/openbsd-x64': 0.25.11 - '@esbuild/openharmony-arm64': 0.25.11 - '@esbuild/sunos-x64': 0.25.11 - '@esbuild/win32-arm64': 0.25.11 - '@esbuild/win32-ia32': 0.25.11 - '@esbuild/win32-x64': 0.25.11 + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 escalade@3.2.0: {} @@ -8380,42 +8067,42 @@ snapshots: source-map: 0.6.1 optional: true - eslint-config-prettier@9.1.0(eslint@9.39.4): + eslint-config-prettier@9.1.2(eslint@9.39.4): dependencies: eslint: 9.39.4 - eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.39.4))(eslint@9.39.4)(prettier@3.4.2): + eslint-plugin-prettier@5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.39.4))(eslint@9.39.4)(prettier@3.4.2): dependencies: eslint: 9.39.4 prettier: 3.4.2 - prettier-linter-helpers: 1.0.0 - synckit: 0.9.2 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.12 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 9.1.0(eslint@9.39.4) + eslint-config-prettier: 9.1.2(eslint@9.39.4) - eslint-plugin-react-hooks@5.1.0(eslint@9.39.4): + eslint-plugin-react-hooks@5.2.0(eslint@9.39.4): dependencies: eslint: 9.39.4 - eslint-plugin-react@7.37.3(eslint@9.39.4): + eslint-plugin-react@7.37.5(eslint@9.39.4): dependencies: - array-includes: 3.1.8 + array-includes: 3.1.9 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 + es-iterator-helpers: 1.3.2 eslint: 9.39.4 estraverse: 5.3.0 - hasown: 2.0.2 + hasown: 2.0.3 jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.8 + minimatch: 3.1.5 + object.entries: 1.1.9 object.fromentries: 2.0.8 object.values: 1.2.1 prop-types: 15.8.1 - resolve: 2.0.0-next.5 + resolve: 2.0.0-next.6 semver: 6.3.1 string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 @@ -8432,24 +8119,24 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.0: {} - eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.1: {} + eslint@9.39.4: dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.2 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.39.4 '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.6 + '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 @@ -8458,7 +8145,7 @@ snapshots: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -8475,21 +8162,15 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.3.0: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 - espree@10.4.0: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -8507,7 +8188,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.9 esutils@2.0.3: {} @@ -8515,7 +8196,7 @@ snapshots: events@3.3.0: {} - expect-type@1.2.2: {} + expect-type@1.3.0: {} fast-deep-equal@3.1.3: {} @@ -8535,29 +8216,25 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.0.5: {} + fast-uri@3.1.2: {} - fastq@1.18.0: + fastq@1.20.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 - fdir@6.4.2(picomatch@4.0.2): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.2 - - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)): + file-loader@6.2.0(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) filename-reserved-regex@2.0.0: {} @@ -8593,60 +8270,60 @@ snapshots: flat-cache@3.2.0: dependencies: - flatted: 3.3.2 + flatted: 3.4.2 keyv: 4.5.4 rimraf: 3.0.2 flat-cache@4.0.1: dependencies: - flatted: 3.3.2 + flatted: 3.4.2 keyv: 4.5.4 - flatted@3.3.2: {} + flatted@3.4.2: {} - for-each@0.3.3: + for-each@0.3.5: dependencies: is-callable: 1.2.7 - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.7.2)(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)): dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.29.0 chalk: 4.1.2 chokidar: 3.6.0 cosmiconfig: 7.1.0 deepmerge: 4.3.1 fs-extra: 10.1.0 memfs: 3.5.3 - minimatch: 3.1.2 + minimatch: 3.1.5 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.6.3 - tapable: 2.2.1 - typescript: 5.7.2 - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) + semver: 7.8.0 + tapable: 2.3.3 + typescript: 5.9.3 + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) - form-data@4.0.4: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 - hasown: 2.0.2 + hasown: 2.0.3 mime-types: 2.1.35 optional: true fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.1 universalify: 2.0.1 - fs-extra@11.2.0: + fs-extra@11.3.5: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.1 universalify: 2.0.1 - fs-monkey@1.0.6: {} + fs-monkey@1.1.0: {} fs.realpath@1.0.0: {} @@ -8657,53 +8334,55 @@ snapshots: function.prototype.name@1.1.8: dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 - hasown: 2.0.2 + hasown: 2.0.3 is-callable: 1.2.7 functions-have-names@1.2.3: {} + generator-function@2.0.1: {} + generic-names@4.0.0: dependencies: loader-utils: 3.3.1 gensync@1.0.0-beta.2: {} - get-intrinsic@1.2.7: + get-intrinsic@1.3.0: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.3 math-intrinsics: 1.1.0 get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-symbol-description@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 gh-pages@6.3.0: dependencies: async: 3.2.6 - commander: 13.0.0 + commander: 13.1.0 email-addresses: 5.0.0 filenamify: 4.3.0 find-cache-dir: 3.3.2 - fs-extra: 11.2.0 + fs-extra: 11.3.5 globby: 11.1.0 glob-parent@5.1.2: @@ -8721,12 +8400,10 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 - globals@11.12.0: {} - globals@14.0.0: {} globalthis@1.0.4: @@ -8747,8 +8424,6 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - has-bigints@1.1.0: {} has-flag@4.0.0: {} @@ -8767,7 +8442,7 @@ snapshots: dependencies: has-symbols: 1.1.0 - hasown@2.0.2: + hasown@2.0.3: dependencies: function-bind: 1.1.2 @@ -8782,7 +8457,7 @@ snapshots: whatwg-encoding: 2.0.0 optional: true - html-entities@2.5.2: {} + html-entities@2.6.0: {} html-minifier-terser@6.1.0: dependencies: @@ -8792,17 +8467,17 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.37.0 + terser: 5.47.1 - html-webpack-plugin@5.6.3(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)): + html-webpack-plugin@5.6.7(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.18.1 pretty-error: 4.0.0 - tapable: 2.2.1 + tapable: 2.3.3 optionalDependencies: - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) htmlparser2@6.1.0: dependencies: @@ -8813,7 +8488,7 @@ snapshots: http-proxy-agent@5.0.0: dependencies: - '@tootallnate/once': 2.0.0 + '@tootallnate/once': 2.0.1 agent-base: 6.0.2 debug: 4.4.3 transitivePeerDependencies: @@ -8835,17 +8510,19 @@ snapshots: icss-replace-symbols@1.1.0: {} - icss-utils@5.1.0(postcss@8.5.6): + icss-utils@5.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 ignore@5.3.2: {} + ignore@7.0.5: {} + import-cwd@3.0.0: dependencies: import-from: 3.0.0 - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 @@ -8868,25 +8545,26 @@ snapshots: internal-slot@1.1.0: dependencies: es-errors: 1.3.0 - hasown: 2.0.2 + hasown: 2.0.3 side-channel: 1.1.0 is-arguments@1.2.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-array-buffer@3.0.5: dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-arrayish@0.2.1: {} - is-async-function@2.1.0: + is-async-function@2.1.1: dependencies: - call-bound: 1.0.3 + async-function: 1.0.0 + call-bound: 1.0.4 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -8899,26 +8577,26 @@ snapshots: dependencies: binary-extensions: 2.3.0 - is-boolean-object@1.2.1: + is-boolean-object@1.2.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-callable@1.2.7: {} - is-core-module@2.16.1: + is-core-module@2.16.2: dependencies: - hasown: 2.0.2 + hasown: 2.0.3 is-data-view@1.0.2: dependencies: - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-typed-array: 1.1.15 is-date-object@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-docker@2.2.1: {} @@ -8927,11 +8605,12 @@ snapshots: is-finalizationregistry@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 - is-generator-function@1.1.0: + is-generator-function@1.1.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 + generator-function: 2.0.1 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -8944,9 +8623,11 @@ snapshots: is-module@1.0.0: {} + is-negative-zero@2.0.3: {} + is-number-object@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-number@7.0.0: {} @@ -8956,46 +8637,46 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.9 is-regex@1.2.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.3 is-set@2.0.3: {} is-shared-array-buffer@1.0.4: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-string@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-symbol@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-symbols: 1.1.0 safe-regex-test: 1.1.0 is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.18 + which-typed-array: 1.1.20 is-weakmap@2.0.2: {} - is-weakref@1.1.0: + is-weakref@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-weakset@2.0.4: dependencies: - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-wsl@2.2.0: dependencies: @@ -9008,15 +8689,15 @@ snapshots: iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.7 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 get-proto: 1.0.1 has-symbols: 1.1.0 set-function-name: 2.0.2 jest-worker@27.5.1: dependencies: - '@types/node': 20.19.21 + '@types/node': 20.19.41 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -9028,12 +8709,12 @@ snapshots: dependencies: argparse: 2.0.1 - jsdoc-type-pratt-parser@4.1.0: {} + jsdoc-type-pratt-parser@4.8.0: {} jsdom@20.0.3: dependencies: abab: 2.0.6 - acorn: 8.15.0 + acorn: 8.16.0 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -9041,12 +8722,12 @@ snapshots: decimal.js: 10.6.0 domexception: 4.0.0 escodegen: 2.1.0 - form-data: 4.0.4 + form-data: 4.0.5 html-encoding-sniffer: 3.0.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.22 + nwsapi: 2.2.23 parse5: 7.3.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -9056,7 +8737,7 @@ snapshots: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.18.3 + ws: 8.20.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -9064,8 +8745,6 @@ snapshots: - utf-8-validate optional: true - jsesc@3.0.2: {} - jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -9080,7 +8759,7 @@ snapshots: json5@2.2.3: {} - jsonfile@6.1.0: + jsonfile@6.2.1: dependencies: universalify: 2.0.1 optionalDependencies: @@ -9088,12 +8767,12 @@ snapshots: jsx-ast-utils@3.3.5: dependencies: - array-includes: 3.1.8 + array-includes: 3.1.9 array.prototype.flat: 1.3.3 object.assign: 4.1.7 object.values: 1.2.1 - keycloak-js@26.2.1: {} + keycloak-js@26.2.4: {} keyv@4.5.4: dependencies: @@ -9146,8 +8825,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.1.2: {} - loupe@3.2.1: {} lower-case@2.0.2: @@ -9162,9 +8839,9 @@ snapshots: lz-string@1.5.0: {} - magic-string@0.30.17: + magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 make-dir@3.1.0: dependencies: @@ -9172,7 +8849,7 @@ snapshots: map-or-similar@1.5.0: {} - markdown-it@14.1.0: + markdown-it@14.1.1: dependencies: argparse: 2.0.1 entities: 4.5.0 @@ -9189,7 +8866,7 @@ snapshots: memfs@3.5.3: dependencies: - fs-monkey: 1.0.6 + fs-monkey: 1.1.0 memoizerific@1.11.3: dependencies: @@ -9202,7 +8879,7 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 mime-db@1.52.0: {} @@ -9214,23 +8891,19 @@ snapshots: mini-svg-data-uri@1.4.4: {} - minimatch@3.1.2: + minimatch@10.2.5: dependencies: - brace-expansion: 1.1.12 + brace-expansion: 5.0.6 minimatch@3.1.5: dependencies: brace-expansion: 1.1.12 - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.2 - minimist@1.2.8: {} ms@2.1.3: {} - nanoid@3.3.11: {} + nanoid@3.3.12: {} natural-compare@1.4.0: {} @@ -9243,9 +8916,14 @@ snapshots: node-abort-controller@3.1.1: {} - node-releases@2.0.19: {} + node-exports-info@1.6.0: + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 - node-releases@2.0.38: {} + node-releases@2.0.44: {} normalize-path@3.0.0: {} @@ -9255,43 +8933,44 @@ snapshots: dependencies: boolbase: 1.0.0 - nwsapi@2.2.22: + nwsapi@2.2.23: optional: true object-assign@4.1.1: {} - object-inspect@1.13.3: {} + object-inspect@1.13.4: {} object-keys@1.1.1: {} object.assign@4.1.7: dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 has-symbols: 1.1.0 object-keys: 1.1.1 - object.entries@1.1.8: + object.entries@1.1.9: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 object.fromentries@2.0.8: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 object.values@1.2.1: dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 objectorarray@1.0.5: {} @@ -9316,7 +8995,7 @@ snapshots: own-keys@1.0.1: dependencies: - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 object-keys: 1.1.1 safe-push-apply: 1.0.0 @@ -9362,8 +9041,8 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 + '@babel/code-frame': 7.29.0 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -9391,15 +9070,13 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.0: {} + pathval@2.0.1: {} picocolors@1.1.1: {} - picomatch@2.3.1: {} - - picomatch@4.0.2: {} + picomatch@2.3.2: {} - picomatch@4.0.3: {} + picomatch@4.0.4: {} pify@5.0.0: {} @@ -9411,183 +9088,183 @@ snapshots: dependencies: '@babel/runtime': 7.27.6 - possible-typed-array-names@1.0.0: {} + possible-typed-array-names@1.1.0: {} - postcss-calc@8.2.4(postcss@8.5.6): + postcss-calc@8.2.4(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-colormin@5.3.1(postcss@8.5.6): + postcss-colormin@5.3.1(postcss@8.5.14): dependencies: - browserslist: 4.24.3 + browserslist: 4.28.2 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-convert-values@5.1.3(postcss@8.5.6): + postcss-convert-values@5.1.3(postcss@8.5.14): dependencies: - browserslist: 4.24.3 - postcss: 8.5.6 + browserslist: 4.28.2 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-discard-comments@5.1.2(postcss@8.5.6): + postcss-discard-comments@5.1.2(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 - postcss-discard-duplicates@5.1.0(postcss@8.5.6): + postcss-discard-duplicates@5.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 - postcss-discard-empty@5.1.1(postcss@8.5.6): + postcss-discard-empty@5.1.1(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 - postcss-discard-overridden@5.1.0(postcss@8.5.6): + postcss-discard-overridden@5.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 - postcss-load-config@3.1.4(postcss@8.5.6): + postcss-load-config@3.1.4(postcss@8.5.14): dependencies: lilconfig: 2.1.0 - yaml: 1.10.2 + yaml: 1.10.3 optionalDependencies: - postcss: 8.5.6 + postcss: 8.5.14 - postcss-merge-longhand@5.1.7(postcss@8.5.6): + postcss-merge-longhand@5.1.7(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.5.6) + stylehacks: 5.1.1(postcss@8.5.14) - postcss-merge-rules@5.1.4(postcss@8.5.6): + postcss-merge-rules@5.1.4(postcss@8.5.14): dependencies: - browserslist: 4.24.3 + browserslist: 4.28.2 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 + cssnano-utils: 3.1.0(postcss@8.5.14) + postcss: 8.5.14 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@5.1.0(postcss@8.5.6): + postcss-minify-font-values@5.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-minify-gradients@5.1.1(postcss@8.5.6): + postcss-minify-gradients@5.1.1(postcss@8.5.14): dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 + cssnano-utils: 3.1.0(postcss@8.5.14) + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-minify-params@5.1.4(postcss@8.5.6): + postcss-minify-params@5.1.4(postcss@8.5.14): dependencies: - browserslist: 4.24.3 - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 + browserslist: 4.28.2 + cssnano-utils: 3.1.0(postcss@8.5.14) + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-minify-selectors@5.2.1(postcss@8.5.6): + postcss-minify-selectors@5.2.1(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-selector-parser: 6.1.2 - postcss-modules-extract-imports@3.1.0(postcss@8.5.6): + postcss-modules-extract-imports@3.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 - postcss-modules-local-by-default@4.2.0(postcss@8.5.6): + postcss-modules-local-by-default@4.2.0(postcss@8.5.14): dependencies: - icss-utils: 5.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-selector-parser: 7.0.0 + icss-utils: 5.1.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.6): + postcss-modules-scope@3.2.1(postcss@8.5.14): dependencies: - postcss: 8.5.6 - postcss-selector-parser: 7.0.0 + postcss: 8.5.14 + postcss-selector-parser: 7.1.1 - postcss-modules-values@4.0.0(postcss@8.5.6): + postcss-modules-values@4.0.0(postcss@8.5.14): dependencies: - icss-utils: 5.1.0(postcss@8.5.6) - postcss: 8.5.6 + icss-utils: 5.1.0(postcss@8.5.14) + postcss: 8.5.14 - postcss-modules@4.3.1(postcss@8.5.6): + postcss-modules@4.3.1(postcss@8.5.14): dependencies: generic-names: 4.0.0 icss-replace-symbols: 1.1.0 lodash.camelcase: 4.3.0 - postcss: 8.5.6 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) - postcss-modules-scope: 3.2.1(postcss@8.5.6) - postcss-modules-values: 4.0.0(postcss@8.5.6) + postcss: 8.5.14 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.14) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.14) + postcss-modules-scope: 3.2.1(postcss@8.5.14) + postcss-modules-values: 4.0.0(postcss@8.5.14) string-hash: 1.1.3 - postcss-normalize-charset@5.1.0(postcss@8.5.6): + postcss-normalize-charset@5.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 - postcss-normalize-display-values@5.1.0(postcss@8.5.6): + postcss-normalize-display-values@5.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-normalize-positions@5.1.1(postcss@8.5.6): + postcss-normalize-positions@5.1.1(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@5.1.1(postcss@8.5.6): + postcss-normalize-repeat-style@5.1.1(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-normalize-string@5.1.0(postcss@8.5.6): + postcss-normalize-string@5.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@5.1.0(postcss@8.5.6): + postcss-normalize-timing-functions@5.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@5.1.1(postcss@8.5.6): + postcss-normalize-unicode@5.1.1(postcss@8.5.14): dependencies: - browserslist: 4.24.3 - postcss: 8.5.6 + browserslist: 4.28.2 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-normalize-url@5.1.0(postcss@8.5.6): + postcss-normalize-url@5.1.0(postcss@8.5.14): dependencies: normalize-url: 6.1.0 - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@5.1.1(postcss@8.5.6): + postcss-normalize-whitespace@5.1.1(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-ordered-values@5.1.3(postcss@8.5.6): + postcss-ordered-values@5.1.3(postcss@8.5.14): dependencies: - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 + cssnano-utils: 3.1.0(postcss@8.5.14) + postcss: 8.5.14 postcss-value-parser: 4.2.0 - postcss-reduce-initial@5.1.2(postcss@8.5.6): + postcss-reduce-initial@5.1.2(postcss@8.5.14): dependencies: - browserslist: 4.24.3 + browserslist: 4.28.2 caniuse-api: 3.0.0 - postcss: 8.5.6 + postcss: 8.5.14 - postcss-reduce-transforms@5.1.0(postcss@8.5.6): + postcss-reduce-transforms@5.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 postcss-selector-parser@6.1.2: @@ -9595,33 +9272,33 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.0.0: + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@5.1.0(postcss@8.5.6): + postcss-svgo@5.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 - svgo: 2.8.0 + svgo: 2.8.2 - postcss-unique-selectors@5.1.1(postcss@8.5.6): + postcss-unique-selectors@5.1.1(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} - postcss@8.5.6: + postcss@8.5.14: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: dependencies: fast-diff: 1.3.0 @@ -9674,27 +9351,27 @@ snapshots: range-parser@1.2.1: {} - react-confetti@6.2.2(react@18.3.1): + react-confetti@6.4.0(react@18.3.1): dependencies: react: 18.3.1 tween-functions: 1.2.0 - react-docgen-typescript@2.2.2(typescript@5.7.2): + react-docgen-typescript@2.4.0(typescript@5.9.3): dependencies: - typescript: 5.7.2 + typescript: 5.9.3 - react-docgen@7.1.0: + react-docgen@7.1.1: dependencies: '@babel/core': 7.29.0 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.28.0 '@types/doctrine': 0.0.9 '@types/resolve': 1.20.6 doctrine: 3.0.0 - resolve: 1.22.10 - strip-indent: 4.0.0 + resolve: 1.22.12 + strip-indent: 4.1.1 transitivePeerDependencies: - supports-color @@ -9704,7 +9381,7 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-icons@5.4.0(react@18.3.1): + react-icons@5.6.0(react@18.3.1): dependencies: react: 18.3.1 @@ -9712,19 +9389,19 @@ snapshots: react-is@17.0.2: {} - react-is@19.2.4: {} + react-is@19.2.6: {} - react-router-dom@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router-dom@7.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-router: 7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router: 7.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router@7.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - cookie: 1.0.2 + cookie: 1.1.1 react: 18.3.1 - set-cookie-parser: 2.7.1 + set-cookie-parser: 2.7.2 optionalDependencies: react-dom: 18.3.1(react@18.3.1) @@ -9743,9 +9420,9 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 - recast@0.23.9: + recast@0.23.11: dependencies: ast-types: 0.16.1 esprima: 4.0.1 @@ -9760,19 +9437,15 @@ snapshots: reflect.getprototypeof@1.0.10: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.2 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.7 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 get-proto: 1.0.1 which-builtin-type: 1.2.1 - regenerate-unicode-properties@10.2.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties@10.2.2: dependencies: regenerate: 1.4.2 @@ -9781,22 +9454,13 @@ snapshots: regexp.prototype.flags@1.5.4: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 es-errors: 1.3.0 get-proto: 1.0.1 gopd: 1.2.0 set-function-name: 2.0.2 - regexpu-core@6.2.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsgen: 0.8.0 - regjsparser: 0.12.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 - regexpu-core@6.4.0: dependencies: regenerate: 1.4.2 @@ -9808,10 +9472,6 @@ snapshots: regjsgen@0.8.0: {} - regjsparser@0.12.0: - dependencies: - jsesc: 3.0.2 - regjsparser@0.13.1: dependencies: jsesc: 3.1.0 @@ -9835,56 +9495,56 @@ snapshots: resolve-from@5.0.0: {} - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - resolve@1.22.12: dependencies: es-errors: 1.3.0 - is-core-module: 2.16.1 + is-core-module: 2.16.2 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: + resolve@2.0.0-next.6: dependencies: - is-core-module: 2.16.1 + es-errors: 1.3.0 + is-core-module: 2.16.2 + node-exports-info: 1.6.0 + object-keys: 1.1.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - reusify@1.0.4: {} + reusify@1.1.0: {} rimraf@3.0.2: dependencies: glob: 7.2.3 - rollup-plugin-dts@6.1.1(rollup@4.30.0)(typescript@5.7.2): + rollup-plugin-dts@6.4.1(rollup@4.60.3)(typescript@5.9.3): dependencies: - magic-string: 0.30.17 - rollup: 4.30.0 - typescript: 5.7.2 + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 + convert-source-map: 2.0.0 + magic-string: 0.30.21 + rollup: 4.60.3 + typescript: 5.9.3 optionalDependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.29.0 - rollup-plugin-peer-deps-external@2.2.4(rollup@4.30.0): + rollup-plugin-peer-deps-external@2.2.4(rollup@4.60.3): dependencies: - rollup: 4.30.0 + rollup: 4.60.3 - rollup-plugin-postcss@4.0.2(postcss@8.5.6): + rollup-plugin-postcss@4.0.2(postcss@8.5.14): dependencies: chalk: 4.1.2 concat-with-sourcemaps: 1.1.0 - cssnano: 5.1.15(postcss@8.5.6) + cssnano: 5.1.15(postcss@8.5.14) import-cwd: 3.0.0 p-queue: 6.6.2 pify: 5.0.0 - postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6) - postcss-modules: 4.3.1(postcss@8.5.6) + postcss: 8.5.14 + postcss-load-config: 3.1.4(postcss@8.5.14) + postcss-modules: 4.3.1(postcss@8.5.14) promise.series: 0.2.0 - resolve: 1.22.10 + resolve: 1.22.12 rollup-pluginutils: 2.8.2 safe-identifier: 0.4.2 style-inject: 0.3.0 @@ -9895,68 +9555,46 @@ snapshots: dependencies: estree-walker: 0.6.1 - rollup@4.30.0: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.30.0 - '@rollup/rollup-android-arm64': 4.30.0 - '@rollup/rollup-darwin-arm64': 4.30.0 - '@rollup/rollup-darwin-x64': 4.30.0 - '@rollup/rollup-freebsd-arm64': 4.30.0 - '@rollup/rollup-freebsd-x64': 4.30.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.30.0 - '@rollup/rollup-linux-arm-musleabihf': 4.30.0 - '@rollup/rollup-linux-arm64-gnu': 4.30.0 - '@rollup/rollup-linux-arm64-musl': 4.30.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.30.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.30.0 - '@rollup/rollup-linux-riscv64-gnu': 4.30.0 - '@rollup/rollup-linux-s390x-gnu': 4.30.0 - '@rollup/rollup-linux-x64-gnu': 4.30.0 - '@rollup/rollup-linux-x64-musl': 4.30.0 - '@rollup/rollup-win32-arm64-msvc': 4.30.0 - '@rollup/rollup-win32-ia32-msvc': 4.30.0 - '@rollup/rollup-win32-x64-msvc': 4.30.0 - fsevents: 2.3.3 - - rollup@4.52.4: + rollup@4.60.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.4 - '@rollup/rollup-android-arm64': 4.52.4 - '@rollup/rollup-darwin-arm64': 4.52.4 - '@rollup/rollup-darwin-x64': 4.52.4 - '@rollup/rollup-freebsd-arm64': 4.52.4 - '@rollup/rollup-freebsd-x64': 4.52.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.4 - '@rollup/rollup-linux-arm-musleabihf': 4.52.4 - '@rollup/rollup-linux-arm64-gnu': 4.52.4 - '@rollup/rollup-linux-arm64-musl': 4.52.4 - '@rollup/rollup-linux-loong64-gnu': 4.52.4 - '@rollup/rollup-linux-ppc64-gnu': 4.52.4 - '@rollup/rollup-linux-riscv64-gnu': 4.52.4 - '@rollup/rollup-linux-riscv64-musl': 4.52.4 - '@rollup/rollup-linux-s390x-gnu': 4.52.4 - '@rollup/rollup-linux-x64-gnu': 4.52.4 - '@rollup/rollup-linux-x64-musl': 4.52.4 - '@rollup/rollup-openharmony-arm64': 4.52.4 - '@rollup/rollup-win32-arm64-msvc': 4.52.4 - '@rollup/rollup-win32-ia32-msvc': 4.52.4 - '@rollup/rollup-win32-x64-gnu': 4.52.4 - '@rollup/rollup-win32-x64-msvc': 4.52.4 + '@rollup/rollup-android-arm-eabi': 4.60.3 + '@rollup/rollup-android-arm64': 4.60.3 + '@rollup/rollup-darwin-arm64': 4.60.3 + '@rollup/rollup-darwin-x64': 4.60.3 + '@rollup/rollup-freebsd-arm64': 4.60.3 + '@rollup/rollup-freebsd-x64': 4.60.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.3 + '@rollup/rollup-linux-arm-musleabihf': 4.60.3 + '@rollup/rollup-linux-arm64-gnu': 4.60.3 + '@rollup/rollup-linux-arm64-musl': 4.60.3 + '@rollup/rollup-linux-loong64-gnu': 4.60.3 + '@rollup/rollup-linux-loong64-musl': 4.60.3 + '@rollup/rollup-linux-ppc64-gnu': 4.60.3 + '@rollup/rollup-linux-ppc64-musl': 4.60.3 + '@rollup/rollup-linux-riscv64-gnu': 4.60.3 + '@rollup/rollup-linux-riscv64-musl': 4.60.3 + '@rollup/rollup-linux-s390x-gnu': 4.60.3 + '@rollup/rollup-linux-x64-gnu': 4.60.3 + '@rollup/rollup-linux-x64-musl': 4.60.3 + '@rollup/rollup-openbsd-x64': 4.60.3 + '@rollup/rollup-openharmony-arm64': 4.60.3 + '@rollup/rollup-win32-arm64-msvc': 4.60.3 + '@rollup/rollup-win32-ia32-msvc': 4.60.3 + '@rollup/rollup-win32-x64-gnu': 4.60.3 + '@rollup/rollup-win32-x64-msvc': 4.60.3 fsevents: 2.3.3 run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.1.3: + safe-array-concat@1.1.4: dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 has-symbols: 1.1.0 isarray: 2.0.5 @@ -9971,13 +9609,15 @@ snapshots: safe-regex-test@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-regex: 1.2.1 safer-buffer@2.1.2: optional: true + sax@1.6.0: {} + saxes@6.0.0: dependencies: xmlchars: 2.2.0 @@ -9990,39 +9630,32 @@ snapshots: schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@4.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) + ajv: 6.15.0 + ajv-keywords: 3.5.2(ajv@6.15.0) schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) semver@6.3.1: {} - semver@7.6.3: {} + semver@7.8.0: {} serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 - set-cookie-parser@2.7.1: {} + set-cookie-parser@2.7.2: {} set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -10037,7 +9670,7 @@ snapshots: dependencies: dunder-proto: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 shebang-command@2.0.0: dependencies: @@ -10045,31 +9678,31 @@ snapshots: shebang-regex@3.0.0: {} - side-channel-list@1.0.0: + side-channel-list@1.0.1: dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-map@1.0.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 side-channel-weakmap@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 side-channel-map: 1.0.1 side-channel@1.1.0: dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 - side-channel-list: 1.0.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 @@ -10077,7 +9710,7 @@ snapshots: slash@3.0.0: {} - smob@1.5.0: {} + smob@1.6.1: {} source-map-js@1.2.1: {} @@ -10096,14 +9729,19 @@ snapshots: std-env@3.10.0: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + storybook-dark-mode@4.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.18(prettier@3.4.2)): dependencies: - '@storybook/components': 8.4.7(storybook@8.6.18(prettier@3.4.2)) - '@storybook/core-events': 8.4.7(storybook@8.6.18(prettier@3.4.2)) + '@storybook/components': 8.6.14(storybook@8.6.18(prettier@3.4.2)) + '@storybook/core-events': 8.6.14(storybook@8.6.18(prettier@3.4.2)) '@storybook/global': 5.0.0 - '@storybook/icons': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/manager-api': 8.4.7(storybook@8.6.18(prettier@3.4.2)) - '@storybook/theming': 8.4.7(storybook@8.6.18(prettier@3.4.2)) + '@storybook/icons': 1.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/manager-api': 8.6.14(storybook@8.6.18(prettier@3.4.2)) + '@storybook/theming': 8.6.14(storybook@8.6.18(prettier@3.4.2)) fast-deep-equal: 3.1.3 memoizerific: 1.11.3 transitivePeerDependencies: @@ -10125,13 +9763,13 @@ snapshots: string.prototype.matchall@4.0.12: dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.2 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.7 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 gopd: 1.2.0 has-symbols: 1.1.0 internal-slot: 1.1.0 @@ -10142,38 +9780,38 @@ snapshots: string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.2 string.prototype.trim@1.2.10: dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 string.prototype.trimend@1.0.9: dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 + call-bind: 1.0.9 + call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.2.0: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.2 strip-bom@3.0.0: {} @@ -10181,9 +9819,7 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-indent@4.0.0: - dependencies: - min-indent: 1.0.1 + strip-indent@4.1.1: {} strip-json-comments@3.1.1: {} @@ -10197,14 +9833,14 @@ snapshots: style-inject@0.3.0: {} - style-loader@3.3.4(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)): + style-loader@3.3.4(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)): dependencies: - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) - stylehacks@5.1.1(postcss@8.5.6): + stylehacks@5.1.1(postcss@8.5.14): dependencies: - browserslist: 4.24.3 - postcss: 8.5.6 + browserslist: 4.28.2 + postcss: 8.5.14 postcss-selector-parser: 6.1.2 stylis@4.2.0: {} @@ -10219,61 +9855,47 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svgo@2.8.0: + svgo@2.8.2: dependencies: - '@trysound/sax': 0.2.0 commander: 7.2.0 css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 picocolors: 1.1.1 + sax: 1.6.0 stable: 0.1.8 - swc-loader@0.2.6(@swc/core@1.10.4)(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)): + swc-loader@0.2.7(@swc/core@1.15.33)(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)): dependencies: - '@swc/core': 1.10.4 + '@swc/core': 1.15.33 '@swc/counter': 0.1.3 - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) symbol-tree@3.2.4: optional: true - synckit@0.9.2: + synckit@0.11.12: dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.8.1 - - tapable@2.2.1: {} + '@pkgr/core': 0.2.9 tapable@2.3.3: {} - terser-webpack-plugin@5.3.11(@swc/core@1.10.4)(esbuild@0.25.0)(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)): + terser-webpack-plugin@5.6.0(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)): dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.0 - serialize-javascript: 6.0.2 - terser: 5.37.0 - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) - optionalDependencies: - '@swc/core': 1.10.4 - esbuild: 0.25.0 - - terser-webpack-plugin@5.5.0(@swc/core@1.10.4)(esbuild@0.25.0)(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - terser: 5.37.0 - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) + terser: 5.47.1 + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) optionalDependencies: - '@swc/core': 1.10.4 + '@swc/core': 1.15.33 esbuild: 0.25.0 + postcss: 8.5.14 - terser@5.37.0: + terser@5.47.1: dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 + '@jridgewell/source-map': 0.3.11 + acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -10283,10 +9905,10 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.15: + tinyglobby@0.2.16: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinypool@1.1.1: {} @@ -10319,9 +9941,9 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - ts-api-utils@1.4.3(typescript@5.7.2): + ts-api-utils@2.5.0(typescript@5.9.3): dependencies: - typescript: 5.7.2 + typescript: 5.9.3 ts-dedent@2.2.0: {} @@ -10341,14 +9963,14 @@ snapshots: typed-array-buffer@1.0.3: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-typed-array: 1.1.15 typed-array-byte-length@1.0.3: dependencies: - call-bind: 1.0.8 - for-each: 0.3.3 + call-bind: 1.0.9 + for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 @@ -10356,8 +9978,8 @@ snapshots: typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.3 + call-bind: 1.0.9 + for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 @@ -10365,39 +9987,40 @@ snapshots: typed-array-length@1.0.7: dependencies: - call-bind: 1.0.8 - for-each: 0.3.3 + call-bind: 1.0.9 + for-each: 0.3.5 gopd: 1.2.0 is-typed-array: 1.1.15 - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typedoc@0.28.5(typescript@5.7.2): + typedoc@0.28.19(typescript@5.9.3): dependencies: - '@gerrit0/mini-shiki': 3.7.0 + '@gerrit0/mini-shiki': 3.23.0 lunr: 2.3.9 - markdown-it: 14.1.0 - minimatch: 9.0.5 - typescript: 5.7.2 - yaml: 2.8.0 + markdown-it: 14.1.1 + minimatch: 10.2.5 + typescript: 5.9.3 + yaml: 2.9.0 - typescript-eslint@8.19.0(eslint@9.39.4)(typescript@5.7.2): + typescript-eslint@8.59.3(eslint@9.39.4)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.19.0(@typescript-eslint/parser@8.19.0(eslint@9.39.4)(typescript@5.7.2))(eslint@9.39.4)(typescript@5.7.2) - '@typescript-eslint/parser': 8.19.0(eslint@9.39.4)(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@9.39.4)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.59.3(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.3(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.3(eslint@9.39.4)(typescript@5.9.3) eslint: 9.39.4 - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript@5.7.2: {} + typescript@5.9.3: {} uc.micro@2.1.0: {} unbox-primitive@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-bigints: 1.1.0 has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 @@ -10409,30 +10032,22 @@ snapshots: unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.2.0: {} + unicode-property-aliases-ecmascript: 2.2.0 unicode-match-property-value-ecmascript@2.2.1: {} - unicode-property-aliases-ecmascript@2.1.0: {} + unicode-property-aliases-ecmascript@2.2.0: {} universalify@0.2.0: optional: true universalify@2.0.1: {} - unplugin@1.16.0: + unplugin@1.16.1: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 webpack-virtual-modules: 0.6.2 - update-browserslist-db@1.1.1(browserslist@4.24.3): - dependencies: - browserslist: 4.24.3 - escalade: 3.2.0 - picocolors: 1.1.1 - update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: browserslist: 4.28.2 @@ -10464,21 +10079,21 @@ snapshots: dependencies: inherits: 2.0.4 is-arguments: 1.2.0 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-typed-array: 1.1.15 - which-typed-array: 1.1.18 + which-typed-array: 1.1.20 utila@0.4.0: {} uuid@9.0.1: {} - vite-node@3.2.4(@types/node@20.19.21)(terser@5.37.0)(yaml@2.8.0): + vite-node@3.2.4(@types/node@20.19.41)(terser@5.47.1)(yaml@2.9.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.10(@types/node@20.19.21)(terser@5.37.0)(yaml@2.8.0) + vite: 7.3.3(@types/node@20.19.41)(terser@5.47.1)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -10493,25 +10108,25 @@ snapshots: - tsx - yaml - vite@7.1.10(@types/node@20.19.21)(terser@5.37.0)(yaml@2.8.0): + vite@7.3.3(@types/node@20.19.41)(terser@5.47.1)(yaml@2.9.0): dependencies: - esbuild: 0.25.11 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.52.4 - tinyglobby: 0.2.15 + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.14 + rollup: 4.60.3 + tinyglobby: 0.2.16 optionalDependencies: - '@types/node': 20.19.21 + '@types/node': 20.19.41 fsevents: 2.3.3 - terser: 5.37.0 - yaml: 2.8.0 + terser: 5.47.1 + yaml: 2.9.0 - vitest@3.2.4(@types/node@20.19.21)(jsdom@20.0.3)(terser@5.37.0)(yaml@2.8.0): + vitest@3.2.4(@types/node@20.19.41)(jsdom@20.0.3)(terser@5.47.1)(yaml@2.9.0): dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.10(@types/node@20.19.21)(terser@5.37.0)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.3.3(@types/node@20.19.41)(terser@5.47.1)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -10519,21 +10134,21 @@ snapshots: '@vitest/utils': 3.2.4 chai: 5.3.3 debug: 4.4.3 - expect-type: 1.2.2 - magic-string: 0.30.17 + expect-type: 1.3.0 + magic-string: 0.30.21 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.4 std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.10(@types/node@20.19.21)(terser@5.37.0)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@20.19.21)(terser@5.37.0)(yaml@2.8.0) + vite: 7.3.3(@types/node@20.19.41)(terser@5.47.1)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@20.19.41)(terser@5.47.1)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.19.21 + '@types/node': 20.19.41 jsdom: 20.0.3 transitivePeerDependencies: - jiti @@ -10562,39 +10177,39 @@ snapshots: webidl-conversions@7.0.0: optional: true - webpack-dev-middleware@6.1.3(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)): + webpack-dev-middleware@6.1.3(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 - schema-utils: 4.3.0 + schema-utils: 4.3.3 optionalDependencies: - webpack: 5.104.1(@swc/core@1.10.4)(esbuild@0.25.0) + webpack: 5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14) webpack-hot-middleware@2.26.1: dependencies: ansi-html-community: 0.0.8 - html-entities: 2.5.2 + html-entities: 2.6.0 strip-ansi: 6.0.1 - webpack-sources@3.4.0: {} + webpack-sources@3.4.1: {} webpack-virtual-modules@0.6.2: {} - webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0): + webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14): dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-phases: 1.0.4(acorn@8.16.0) browserslist: 4.28.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.0 + enhanced-resolve: 5.21.3 es-module-lexer: 2.1.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -10606,12 +10221,21 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.5.0(@swc/core@1.10.4)(esbuild@0.25.0)(webpack@5.104.1(@swc/core@1.10.4)(esbuild@0.25.0)) + terser-webpack-plugin: 5.6.0(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)(webpack@5.104.1(@swc/core@1.15.33)(esbuild@0.25.0)(postcss@8.5.14)) watchpack: 2.5.1 - webpack-sources: 3.4.0 + webpack-sources: 3.4.1 transitivePeerDependencies: + - '@minify-html/node' - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso - esbuild + - html-minifier-terser + - lightningcss + - postcss - uglify-js whatwg-encoding@2.0.0: @@ -10631,26 +10255,26 @@ snapshots: which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 - is-boolean-object: 1.2.1 + is-boolean-object: 1.2.2 is-number-object: 1.1.1 is-string: 1.1.1 is-symbol: 1.1.1 which-builtin-type@1.2.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 - is-async-function: 2.1.0 + is-async-function: 2.1.1 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-regex: 1.2.1 - is-weakref: 1.1.0 + is-weakref: 1.1.1 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.18 + which-typed-array: 1.1.20 which-collection@1.0.2: dependencies: @@ -10659,12 +10283,13 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 - which-typed-array@1.1.18: + which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.3 - for-each: 0.3.3 + call-bind: 1.0.9 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 gopd: 1.2.0 has-tostringtag: 1.0.2 @@ -10681,7 +10306,7 @@ snapshots: wrappy@1.0.2: {} - ws@8.18.3: {} + ws@8.20.0: {} xml-name-validator@4.0.0: optional: true @@ -10691,8 +10316,8 @@ snapshots: yallist@3.1.1: {} - yaml@1.10.2: {} + yaml@1.10.3: {} - yaml@2.8.0: {} + yaml@2.9.0: {} yocto-queue@0.1.0: {} From dabdeac126a51224359fd8a39287d20a6ea9f571 Mon Sep 17 00:00:00 2001 From: Zohar Manor-Abel Date: Tue, 12 May 2026 10:50:12 +0100 Subject: [PATCH 6/9] Refactor Storybook theme handling and introduce Diamond DS theme configuration support Following suggestion of simplification by @akademy. - Updated theme mode handling to use MUI colour scheme classes - Removed previous data-mode logic - Introduced back System settings option and a way to switch to it Revert "Refactor Storybook theme handling and introduce Diamond DS theme configuration support" This reverts commit 378432399d5fb243bd5d171193302b012f5d9937. Reapply "Refactor Storybook theme handling and introduce Diamond DS theme configuration support" This reverts commit a84523885a2d01f80a665418d27d07b2686656d9. --- .storybook/ThemeSwapper.tsx | 32 +- .storybook/preview.tsx | 90 +- src/styles/diamondDS/diamond-ds-roles.css | 4 +- src/themes/DiamondDSTheme.ts | 1482 ++++++++++----------- src/themes/ThemeProvider.tsx | 29 +- 5 files changed, 803 insertions(+), 834 deletions(-) diff --git a/.storybook/ThemeSwapper.tsx b/.storybook/ThemeSwapper.tsx index 99634d0f..e7a3f8b8 100644 --- a/.storybook/ThemeSwapper.tsx +++ b/.storybook/ThemeSwapper.tsx @@ -1,6 +1,5 @@ -import { useColorScheme } from "@mui/material"; +import { useColorScheme } from "@mui/material/styles"; import * as React from "react"; -import { useEffect } from "react"; interface Globals { theme: string; @@ -18,20 +17,35 @@ export interface ThemeSwapperProps { export const TextLight = "Mode: Light"; export const TextDark = "Mode: Dark"; +export const TextSystem = "Mode: System"; const ThemeSwapper = ({ context, children }: ThemeSwapperProps) => { - const { mode, setMode } = useColorScheme(); + const { mode, systemMode, setMode } = useColorScheme(); - useEffect(() => { - const selectedThemeMode = context.globals.themeMode || TextLight; - const nextMode = selectedThemeMode === TextLight ? "light" : "dark"; + React.useEffect(() => { + const selectedThemeMode = context.globals.themeMode || TextSystem; - setMode(nextMode); - document.documentElement.setAttribute("data-mode", nextMode); + if (selectedThemeMode === TextLight) { + setMode("light"); + return; + } + + if (selectedThemeMode === TextDark) { + setMode("dark"); + return; + } + + setMode("system"); }, [context.globals.themeMode, setMode]); + const resolvedMode = mode === "system" ? systemMode : mode; + return ( -
+
{children}
); diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index a46c2aa7..7aadaaf3 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -1,51 +1,40 @@ -import React, { useLayoutEffect } from "react"; -import { CssBaseline } from "@mui/material"; +import React from "react"; import type { Preview } from "@storybook/react"; + import { ThemeProvider } from "../src"; +import { GenericTheme, DiamondTheme, DiamondDSTheme } from "../src"; + import { - GenericTheme, - DiamondTheme, - DiamondDSTheme, - DiamondDSThemeDark, -} from "../src"; -import { Context, ThemeSwapper, TextLight, TextDark } from "./ThemeSwapper"; + Context, + ThemeSwapper, + TextDark, + TextLight, + TextSystem, +} from "./ThemeSwapper"; const TextThemeBase = "Theme: Generic"; const TextThemeDiamond = "Theme: Diamond"; +const TextThemeDiamondDS = "Theme: Diamond DS"; -const TextThemeDiamondDS = "Theme: DiamondDS"; - -function resolveTheme(selectedTheme: string, mode: "light" | "dark") { +function resolveTheme(selectedTheme: string) { switch (selectedTheme) { case TextThemeBase: return GenericTheme; - case TextThemeDiamondDS: - return mode === "dark" ? DiamondDSThemeDark : DiamondDSTheme; + case TextThemeDiamond: - default: return DiamondTheme; + + case TextThemeDiamondDS: + default: + return DiamondDSTheme; } } -function ApplyModeToPreviewDoc({ - mode, - doc, -}: { - mode: "light" | "dark"; - doc: Document; -}) { - useLayoutEffect(() => { - const root = doc.documentElement; // - root.setAttribute("data-mode", mode); - - // Optional: keep class too if your CSS supports it - root.classList.toggle("dark", mode === "dark"); - root.classList.toggle("light", mode === "light"); - - root.style.colorScheme = mode; - }, [mode, doc]); - - return null; +function resolveDefaultMode(selectedThemeMode: string) { + if (selectedThemeMode === TextLight) return "light"; + if (selectedThemeMode === TextDark) return "dark"; + + return "system"; } export const decorators = [ @@ -56,28 +45,19 @@ export const decorators = [
); }, - (StoriesWithThemeSwapping: React.FC, context: Context) => { - return ( - - - - ); - }, + (StoriesWithThemeProvider: React.FC, context: Context) => { - const selectedTheme = context.globals.theme || TextThemeBase; - const selectedThemeMode = context.globals.themeMode || TextLight; - const mode = selectedThemeMode === TextLight ? "light" : "dark"; + const selectedTheme = context.globals.theme || TextThemeDiamondDS; + const selectedThemeMode = context.globals.themeMode || TextSystem; - // ensure we target the preview iframe document - const doc: Document = context?.canvasElement?.ownerDocument ?? document; return ( - - - + + + ); }, @@ -94,20 +74,23 @@ const preview: Preview = { dynamicTitle: true, }, }, + themeMode: { description: "Global theme mode for components", toolbar: { - title: "Theme Mode", + title: "Theme mode", icon: "mirror", - items: [TextLight, TextDark], + items: [TextLight, TextDark, TextSystem], dynamicTitle: true, }, }, }, + initialGlobals: { theme: TextThemeDiamondDS, - themeMode: TextLight, + themeMode: TextSystem, }, + parameters: { controls: { matchers: { @@ -132,6 +115,7 @@ const preview: Preview = { }, }, }, + argTypes: { linkComponent: { control: false, diff --git a/src/styles/diamondDS/diamond-ds-roles.css b/src/styles/diamondDS/diamond-ds-roles.css index 4c826945..db4c16b9 100644 --- a/src/styles/diamondDS/diamond-ds-roles.css +++ b/src/styles/diamondDS/diamond-ds-roles.css @@ -12,7 +12,7 @@ } :root, -:root[data-mode="light"] { +:root.light { /* Neutral */ --ds-background: #f6f6f9; @@ -201,7 +201,7 @@ --ds-focus-ring-highlight: var(--ds-highlight-accent); } -:root[data-mode="dark"] { +:root.dark { /* Neutral */ --ds-background: #0e1017; diff --git a/src/themes/DiamondDSTheme.ts b/src/themes/DiamondDSTheme.ts index 9d6eb70b..c3eb9e19 100644 --- a/src/themes/DiamondDSTheme.ts +++ b/src/themes/DiamondDSTheme.ts @@ -134,8 +134,6 @@ declare module "@mui/material/styles" { } } -export type DSMode = "light" | "dark"; - // --- Helpers --- const getIntentPalette = ( @@ -176,947 +174,931 @@ const getFocusOutline = (token?: string): CSSObject => ({ const getOverlayInset = (token = "var(--ds-overlay-hover)") => `inset 0 0 0 9999px ${token}`; -// --- Theme factory --- - -export const createDiamondTheme = (mode: DSMode): Theme => { - const DiamondDSThemeOptions = mergeThemeOptions({ - typography: { - fontFamily: [ - "Inter Variable", - "Inter", - "system-ui", - "-apple-system", - '"Segoe UI"', - "Roboto", - "Helvetica", - "Arial", - "sans-serif", - ].join(","), - }, +export const DiamondDSThemeOptions = mergeThemeOptions({ + cssVariables: { + colorSchemeSelector: "class", + }, - logos: { - normal: { - src: - mode === "dark" ? (logoImageDark ?? logoImageLight) : logoImageLight, - srcDark: logoImageDark ?? logoImageLight, - alt: "Diamond Light Source Logo", - width: "100", - }, - short: { - src: logoShort, - alt: "Diamond Light Source Logo", - width: "35", - }, + colorSchemes: { + light: true, + dark: true, + }, + + typography: { + fontFamily: [ + '"Inter Variable"', + "Inter", + "system-ui", + "-apple-system", + '"Segoe UI"', + "Roboto", + "Helvetica", + "Arial", + "sans-serif", + ].join(","), + }, + + logos: { + normal: { + src: logoImageLight, + srcDark: logoImageDark ?? undefined, + alt: "Diamond Light Source Logo", + width: "100", + }, + short: { + src: logoShort, + alt: "Diamond Light Source Logo", + width: "35", }, + }, - palette: { - mode, + palette: { + action: { + hover: "var(--ds-overlay-hover)", + selected: "var(--ds-overlay-selected)", + focus: "var(--ds-overlay-focus)", + disabled: "var(--ds-on-surface-disabled)", + disabledBackground: "var(--ds-surface-disabled)", + + hoverOpacity: 0.04, + selectedOpacity: 0.08, + disabledOpacity: 0.38, + focusOpacity: 0.16, + }, - action: { - hover: "var(--ds-overlay-hover)", - selected: "var(--ds-overlay-selected)", - focus: "var(--ds-overlay-focus)", - disabled: "var(--ds-on-surface-disabled)", - disabledBackground: "var(--ds-surface-disabled)", + text: { + primary: "var(--ds-on-surface)", + secondary: "var(--ds-on-surface-variant)", + onSolid: "var(--ds-on-solid)", + disabled: "var(--ds-on-surface-disabled)", + placeholder: "var(--ds-placeholder)", + placeholderFocus: "var(--ds-placeholder-focus)", - hoverOpacity: 0.04, - selectedOpacity: 0.08, - disabledOpacity: 0.38, - focusOpacity: 0.16, - }, + primaryChannel: "var(--ds-on-surface-channel)", + secondaryChannel: "var(--ds-on-surface-variant-channel)", + }, - text: { - primary: "var(--ds-on-surface)", - secondary: "var(--ds-on-surface-variant)", - onSolid: "var(--ds-on-solid)", - disabled: "var(--ds-on-surface-disabled)", - placeholder: "var(--ds-placeholder)", - placeholderFocus: "var(--ds-placeholder-focus)", + background: { + default: "rgb(var(--ds-background-channel))", + paper: "rgb(var(--ds-surface-channel))", + }, - primaryChannel: "var(--ds-on-surface-channel)", - secondaryChannel: "var(--ds-on-surface-variant-channel)", - }, + divider: "var(--ds-border-subtle)", - background: { - default: "rgb(var(--ds-background-channel))", - paper: "rgb(var(--ds-surface-channel))", - }, + borders: { + subtle: "var(--ds-border-subtle)", + base: "var(--ds-border)", + emphasis: "var(--ds-border-emphasis)", + }, - divider: "var(--ds-border-subtle)", + surface: { + subtle: "var(--ds-surface-container)", + strong: "var(--ds-surface-container-high)", + }, - borders: { - subtle: "var(--ds-border-subtle)", - base: "var(--ds-border)", - emphasis: "var(--ds-border-emphasis)", - }, + primary: { + light: "var(--ds-primary-accent)", + main: "var(--ds-primary)", + dark: "var(--ds-primary-emphasis)", + contrastText: "var(--ds-on-primary)", + container: "var(--ds-primary-container)", + onContainer: "var(--ds-on-primary-container)", + solid: "var(--ds-primary-solid)", + onSolid: "var(--ds-on-primary-solid)", + + contrastTextChannel: "var(--ds-on-primary-channel)", + mainChannel: "var(--ds-primary-mainChannel)", + lightChannel: "var(--ds-primary-lightChannel)", + darkChannel: "var(--ds-primary-darkChannel)", + }, - surface: { - subtle: "var(--ds-surface-container)", - strong: "var(--ds-surface-container-high)", - }, + secondary: { + light: "var(--ds-secondary-accent)", + main: "var(--ds-secondary)", + dark: "var(--ds-secondary-emphasis)", + contrastText: "var(--ds-on-secondary)", + container: "var(--ds-secondary-container)", + onContainer: "var(--ds-on-secondary-container)", + solid: "var(--ds-secondary-solid)", + onSolid: "var(--ds-on-secondary-solid)", + + contrastTextChannel: "var(--ds-on-secondary-channel)", + mainChannel: "var(--ds-secondary-mainChannel)", + lightChannel: "var(--ds-secondary-lightChannel)", + darkChannel: "var(--ds-secondary-darkChannel)", + }, - primary: { - light: "var(--ds-primary-accent)", - main: "var(--ds-primary)", - dark: "var(--ds-primary-emphasis)", - contrastText: "var(--ds-on-primary)", - container: "var(--ds-primary-container)", - onContainer: "var(--ds-on-primary-container)", - solid: "var(--ds-primary-solid)", - onSolid: "var(--ds-on-primary-solid)", - - contrastTextChannel: "var(--ds-on-primary-channel)", - mainChannel: "var(--ds-primary-mainChannel)", - lightChannel: "var(--ds-primary-lightChannel)", - darkChannel: "var(--ds-primary-darkChannel)", - }, + brand: { + light: "var(--ds-brand-accent)", + main: "var(--ds-brand)", + dark: "var(--ds-brand-emphasis)", + contrastText: "var(--ds-on-brand)", + container: "var(--ds-brand-container)", + onContainer: "var(--ds-on-brand-container)", + solid: "var(--ds-brand-solid)", + onSolid: "var(--ds-on-brand-solid)", + + contrastTextChannel: "var(--ds-on-brand-channel)", + mainChannel: "var(--ds-brand-mainChannel)", + lightChannel: "var(--ds-brand-lightChannel)", + darkChannel: "var(--ds-brand-darkChannel)", + }, - secondary: { - light: "var(--ds-secondary-accent)", - main: "var(--ds-secondary)", - dark: "var(--ds-secondary-emphasis)", - contrastText: "var(--ds-on-secondary)", - container: "var(--ds-secondary-container)", - onContainer: "var(--ds-on-secondary-container)", - solid: "var(--ds-secondary-solid)", - onSolid: "var(--ds-on-secondary-solid)", - - contrastTextChannel: "var(--ds-on-secondary-channel)", - mainChannel: "var(--ds-secondary-mainChannel)", - lightChannel: "var(--ds-secondary-lightChannel)", - darkChannel: "var(--ds-secondary-darkChannel)", - }, + error: { + light: "var(--ds-danger-accent)", + main: "var(--ds-danger)", + dark: "var(--ds-danger-emphasis)", + contrastText: "var(--ds-on-danger)", + container: "var(--ds-danger-container)", + onContainer: "var(--ds-on-danger-container)", + solid: "var(--ds-danger-solid)", + onSolid: "var(--ds-on-danger-solid)", + + contrastTextChannel: "var(--ds-on-danger-channel)", + mainChannel: "var(--ds-danger-mainChannel)", + lightChannel: "var(--ds-danger-lightChannel)", + darkChannel: "var(--ds-danger-darkChannel)", + }, - brand: { - light: "var(--ds-brand-accent)", - main: "var(--ds-brand)", - dark: "var(--ds-brand-emphasis)", - contrastText: "var(--ds-on-brand)", - container: "var(--ds-brand-container)", - onContainer: "var(--ds-on-brand-container)", - solid: "var(--ds-brand-solid)", - onSolid: "var(--ds-on-brand-solid)", - - contrastTextChannel: "var(--ds-on-brand-channel)", - mainChannel: "var(--ds-brand-mainChannel)", - lightChannel: "var(--ds-brand-lightChannel)", - darkChannel: "var(--ds-brand-darkChannel)", - }, + warning: { + light: "var(--ds-warning-accent)", + main: "var(--ds-warning)", + dark: "var(--ds-warning-emphasis)", + contrastText: "var(--ds-on-warning)", + container: "var(--ds-warning-container)", + onContainer: "var(--ds-on-warning-container)", + solid: "var(--ds-warning-solid)", + onSolid: "var(--ds-on-warning-solid)", + + contrastTextChannel: "var(--ds-on-warning-channel)", + mainChannel: "var(--ds-warning-mainChannel)", + lightChannel: "var(--ds-warning-lightChannel)", + darkChannel: "var(--ds-warning-darkChannel)", + }, - error: { - light: "var(--ds-danger-accent)", - main: "var(--ds-danger)", - dark: "var(--ds-danger-emphasis)", - contrastText: "var(--ds-on-danger)", - container: "var(--ds-danger-container)", - onContainer: "var(--ds-on-danger-container)", - solid: "var(--ds-danger-solid)", - onSolid: "var(--ds-on-danger-solid)", - - contrastTextChannel: "var(--ds-on-danger-channel)", - mainChannel: "var(--ds-danger-mainChannel)", - lightChannel: "var(--ds-danger-lightChannel)", - darkChannel: "var(--ds-danger-darkChannel)", - }, + success: { + light: "var(--ds-success-accent)", + main: "var(--ds-success)", + dark: "var(--ds-success-emphasis)", + contrastText: "var(--ds-on-success)", + container: "var(--ds-success-container)", + onContainer: "var(--ds-on-success-container)", + solid: "var(--ds-success-solid)", + onSolid: "var(--ds-on-success-solid)", + + contrastTextChannel: "var(--ds-on-success-channel)", + mainChannel: "var(--ds-success-mainChannel)", + lightChannel: "var(--ds-success-lightChannel)", + darkChannel: "var(--ds-success-darkChannel)", + }, - warning: { - light: "var(--ds-warning-accent)", - main: "var(--ds-warning)", - dark: "var(--ds-warning-emphasis)", - contrastText: "var(--ds-on-warning)", - container: "var(--ds-warning-container)", - onContainer: "var(--ds-on-warning-container)", - solid: "var(--ds-warning-solid)", - onSolid: "var(--ds-on-warning-solid)", - - contrastTextChannel: "var(--ds-on-warning-channel)", - mainChannel: "var(--ds-warning-mainChannel)", - lightChannel: "var(--ds-warning-lightChannel)", - darkChannel: "var(--ds-warning-darkChannel)", - }, + info: { + light: "var(--ds-info-accent)", + main: "var(--ds-info)", + dark: "var(--ds-info-emphasis)", + contrastText: "var(--ds-on-info)", + container: "var(--ds-info-container)", + onContainer: "var(--ds-on-info-container)", + solid: "var(--ds-info-solid)", + onSolid: "var(--ds-on-info-solid)", + + contrastTextChannel: "var(--ds-on-info-channel)", + mainChannel: "var(--ds-info-mainChannel)", + lightChannel: "var(--ds-info-lightChannel)", + darkChannel: "var(--ds-info-darkChannel)", + }, - success: { - light: "var(--ds-success-accent)", - main: "var(--ds-success)", - dark: "var(--ds-success-emphasis)", - contrastText: "var(--ds-on-success)", - container: "var(--ds-success-container)", - onContainer: "var(--ds-on-success-container)", - solid: "var(--ds-success-solid)", - onSolid: "var(--ds-on-success-solid)", - - contrastTextChannel: "var(--ds-on-success-channel)", - mainChannel: "var(--ds-success-mainChannel)", - lightChannel: "var(--ds-success-lightChannel)", - darkChannel: "var(--ds-success-darkChannel)", - }, + grey: { + 50: "var(--ds-grey-50)", + 100: "var(--ds-grey-100)", + 200: "var(--ds-grey-200)", + 300: "var(--ds-grey-300)", + 400: "var(--ds-grey-400)", + 500: "var(--ds-grey-500)", + 600: "var(--ds-grey-600)", + 700: "var(--ds-grey-700)", + 800: "var(--ds-grey-800)", + 900: "var(--ds-grey-900)", + }, + }, - info: { - light: "var(--ds-info-accent)", - main: "var(--ds-info)", - dark: "var(--ds-info-emphasis)", - contrastText: "var(--ds-on-info)", - container: "var(--ds-info-container)", - onContainer: "var(--ds-on-info-container)", - solid: "var(--ds-info-solid)", - onSolid: "var(--ds-on-info-solid)", - - contrastTextChannel: "var(--ds-on-info-channel)", - mainChannel: "var(--ds-info-mainChannel)", - lightChannel: "var(--ds-info-lightChannel)", - darkChannel: "var(--ds-info-darkChannel)", + components: { + MuiPaper: { + styleOverrides: { + root: { + backgroundImage: "none", + }, }, + }, - grey: { - 50: "var(--ds-grey-50)", - 100: "var(--ds-grey-100)", - 200: "var(--ds-grey-200)", - 300: "var(--ds-grey-300)", - 400: "var(--ds-grey-400)", - 500: "var(--ds-grey-500)", - 600: "var(--ds-grey-600)", - 700: "var(--ds-grey-700)", - 800: "var(--ds-grey-800)", - 900: "var(--ds-grey-900)", + MuiButtonBase: { + defaultProps: { + disableRipple: true, + disableTouchRipple: true, + focusRipple: false, }, }, - components: { - MuiPaper: { - styleOverrides: { - root: { - backgroundImage: "none", - }, - }, + MuiButton: { + defaultProps: { + disableFocusRipple: true, }, + styleOverrides: { + root: ({ ownerState, theme }: OverrideArgs): CSSObject => { + const base: CSSObject = { + textTransform: "none", + boxShadow: "none", + }; - MuiButtonBase: { - defaultProps: { - disableRipple: true, - disableTouchRipple: true, - focusRipple: false, - }, - }, + const variant = ownerState.variant ?? "text"; + const rawColour = ownerState.color ?? "primary"; - MuiButton: { - defaultProps: { - disableFocusRipple: true, - }, - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const base: CSSObject = { - textTransform: "none", - boxShadow: "none", + if (rawColour === "inherit") { + return { + ...base, + ...getFocusOutline(), }; + } - const variant = ownerState.variant ?? "text"; - const rawColour = ownerState.color ?? "primary"; - - if (rawColour === "inherit") { - return { - ...base, - ...getFocusOutline(), - }; - } - - const colour = rawColour as IntentColour; - const p = getIntentPalette(theme, colour); - const focusToken = getFocusToken(colour); - const subtle = p.container; - const onSubtle = p.onContainer; - - if (variant === "contained") { - return { - ...base, - ...getFocusOutline(focusToken), - backgroundColor: p.solid ?? p.main, - color: p.onSolid ?? "var(--ds-on-solid)", + const colour = rawColour as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + const subtle = p.container; + const onSubtle = p.onContainer; - "&:hover": { - backgroundColor: p.solid ?? p.main, - boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), - }, - - "&:active": { - backgroundColor: p.solid ?? p.main, - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + if (variant === "contained") { + return { + ...base, + ...getFocusOutline(focusToken), + backgroundColor: p.solid ?? p.main, + color: p.onSolid ?? "var(--ds-on-solid)", - "&.Mui-focusVisible": { - outline: "var(--ds-focus-ring-width) solid", - outlineColor: focusToken, - outlineOffset: "var(--ds-focus-ring-offset)", - boxShadow: getOverlayInset("var(--ds-overlay-focus)"), - }, + "&:hover": { + backgroundColor: p.solid ?? p.main, + boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), + }, - "&.Mui-disabled": { - opacity: 1, - backgroundColor: "var(--ds-surface-disabled)", - color: "var(--ds-on-surface-disabled)", - boxShadow: "none", - }, - }; - } + "&:active": { + backgroundColor: p.solid ?? p.main, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, - if (variant === "outlined") { - return { - ...base, - ...getFocusOutline(focusToken), + "&.Mui-focusVisible": { + outline: "var(--ds-focus-ring-width) solid", + outlineColor: focusToken, + outlineOffset: "var(--ds-focus-ring-offset)", + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, - color: onSubtle, - backgroundColor: subtle, + "&.Mui-disabled": { + opacity: 1, + backgroundColor: "var(--ds-surface-disabled)", + color: "var(--ds-on-surface-disabled)", + boxShadow: "none", + }, + }; + } - "&:hover": { - backgroundColor: subtle, - boxShadow: getOverlayInset(), - }, + if (variant === "outlined") { + return { + ...base, + ...getFocusOutline(focusToken), - "&:active": { - backgroundColor: subtle, - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + color: onSubtle, + backgroundColor: subtle, - "&.Mui-disabled": { - opacity: 1, - backgroundColor: "transparent", - color: "var(--ds-on-surface-disabled)", - boxShadow: "none", - }, - }; - } + "&:hover": { + backgroundColor: subtle, + boxShadow: getOverlayInset(), + }, - if (variant === "text") { - return { - ...base, - ...getFocusOutline(focusToken), - color: p.main, + "&:active": { + backgroundColor: subtle, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, - "&:hover": { - backgroundColor: subtle, - boxShadow: getOverlayInset(), - }, - }; - } + "&.Mui-disabled": { + opacity: 1, + backgroundColor: "transparent", + color: "var(--ds-on-surface-disabled)", + boxShadow: "none", + }, + }; + } + if (variant === "text") { return { ...base, ...getFocusOutline(focusToken), + color: p.main, + + "&:hover": { + backgroundColor: subtle, + boxShadow: getOverlayInset(), + }, }; - }, - }, - }, + } - MuiIconButton: { - defaultProps: { - disableRipple: true, - disableFocusRipple: true, + return { + ...base, + ...getFocusOutline(focusToken), + }; }, - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs<{ - color?: "inherit" | "default" | IntentColour; - }>): CSSObject => { - const rawColour = ownerState.color ?? "default"; - - if (rawColour === "inherit" || rawColour === "default") { - return { - "&:hover": { - boxShadow: getOverlayInset(), - }, - ...getFocusOutline(), - }; - } - - const colour = rawColour as IntentColour; - const p = getIntentPalette(theme, colour); - const focusToken = getFocusToken(colour); + }, + }, + MuiIconButton: { + defaultProps: { + disableRipple: true, + disableFocusRipple: true, + }, + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs<{ + color?: "inherit" | "default" | IntentColour; + }>): CSSObject => { + const rawColour = ownerState.color ?? "default"; + + if (rawColour === "inherit" || rawColour === "default") { return { - color: p.main, - "&:hover": { - backgroundColor: p.container, boxShadow: getOverlayInset(), }, - - ...getFocusOutline(focusToken), + ...getFocusOutline(), }; - }, - }, - }, + } - MuiToggleButton: { - styleOverrides: { - root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ - textTransform: "none", - border: `1px solid ${theme.palette.borders.base}`, + const colour = rawColour as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + + return { + color: p.main, "&:hover": { - borderColor: theme.palette.borders.emphasis, + backgroundColor: p.container, + boxShadow: getOverlayInset(), }, - }), + + ...getFocusOutline(focusToken), + }; }, }, + }, - MuiChip: { - styleOverrides: { - root: ({ ownerState, theme }: OverrideArgs): CSSObject => { - const base: CSSObject = { - "& .MuiChip-icon": { - color: "currentColor", - }, - }; + MuiToggleButton: { + styleOverrides: { + root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + textTransform: "none", + border: `1px solid ${theme.palette.borders.base}`, - const rawColour = ownerState.color ?? "default"; - const isDefault = rawColour === "default"; - const isOutlined = ownerState.variant === "outlined"; - const isInteractive = !!( - ownerState.clickable || ownerState.onDelete - ); + "&:hover": { + borderColor: theme.palette.borders.emphasis, + }, + }), + }, + }, - if (isDefault) { - return { - ...base, - ...(isInteractive ? getFocusOutline() : {}), + MuiChip: { + styleOverrides: { + root: ({ ownerState, theme }: OverrideArgs): CSSObject => { + const base: CSSObject = { + "& .MuiChip-icon": { + color: "currentColor", + }, + }; - color: "var(--ds-on-surface)", - borderColor: "var(--ds-border)", - backgroundColor: "var(--ds-surface-container-high)", + const rawColour = ownerState.color ?? "default"; + const isDefault = rawColour === "default"; + const isOutlined = ownerState.variant === "outlined"; + const isInteractive = !!(ownerState.clickable || ownerState.onDelete); - ...(isInteractive && { - "&:hover": { - backgroundColor: "var(--ds-surface-container-high)", - boxShadow: getOverlayInset(), - }, + if (isDefault) { + return { + ...base, + ...(isInteractive ? getFocusOutline() : {}), - "&:active": { - backgroundColor: "var(--ds-surface-container-high)", - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + color: "var(--ds-on-surface)", + borderColor: "var(--ds-border)", + backgroundColor: "var(--ds-surface-container-high)", - "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": - { - backgroundColor: "var(--ds-surface-container-high)", - boxShadow: getOverlayInset("var(--ds-overlay-focus)"), - }, - - "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": - { - backgroundColor: "var(--ds-surface-container-high)", - boxShadow: getOverlayInset("var(--ds-overlay-focus)"), - }, - }), - }; - } - - const colour = rawColour as IntentColour; - const p = getIntentPalette(theme, colour); - const focusToken = getFocusToken(colour); - - if (isOutlined) { - return { - ...base, - ...(isInteractive ? getFocusOutline(focusToken) : {}), - - color: p.onContainer, - borderColor: p.light, - backgroundColor: p.container, + ...(isInteractive && { + "&:hover": { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset(), + }, - ...(isInteractive && { - "&:hover": { - backgroundColor: p.container, - borderColor: p.light, - boxShadow: getOverlayInset(), + "&:active": { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, + + "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": + { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, - "&:active": { - backgroundColor: p.container, - borderColor: p.light, - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": + { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, + }), + }; + } - "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": - { - backgroundColor: p.container, - borderColor: p.light, - boxShadow: getOverlayInset("var(--ds-overlay-focus)"), - }, - - "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": - { - backgroundColor: p.container, - borderColor: p.light, - boxShadow: getOverlayInset("var(--ds-overlay-focus)"), - }, - }), - }; - } - - const solid = p.solid ?? p.main; + const colour = rawColour as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + if (isOutlined) { return { ...base, ...(isInteractive ? getFocusOutline(focusToken) : {}), - color: p.onSolid ?? "var(--ds-on-solid)", - backgroundColor: solid, + color: p.onContainer, + borderColor: p.light, + backgroundColor: p.container, ...(isInteractive && { "&:hover": { - backgroundColor: solid, - boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), + backgroundColor: p.container, + borderColor: p.light, + boxShadow: getOverlayInset(), }, "&:active": { - backgroundColor: solid, + backgroundColor: p.container, + borderColor: p.light, boxShadow: getOverlayInset("var(--ds-overlay-selected)"), }, "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": { - backgroundColor: solid, + backgroundColor: p.container, + borderColor: p.light, boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": { - backgroundColor: solid, + backgroundColor: p.container, + borderColor: p.light, boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, }), }; - }, - }, - }, - - MuiInputBase: { - styleOverrides: { - input: ({ theme }: ThemeOnlyArgs): CSSObject => ({ - "&::placeholder": { - color: theme.palette.text.placeholder, - opacity: 1, - }, + } - "&::-webkit-input-placeholder": { - color: theme.palette.text.placeholder, - opacity: 1, - }, - - "&::-moz-placeholder": { - color: theme.palette.text.placeholder, - opacity: 1, - }, - - "&:focus::placeholder": { - color: theme.palette.text.placeholderFocus, - }, + const solid = p.solid ?? p.main; - "&:focus::-webkit-input-placeholder": { - color: theme.palette.text.placeholderFocus, - opacity: 1, - }, + return { + ...base, + ...(isInteractive ? getFocusOutline(focusToken) : {}), - "&:focus::-moz-placeholder": { - color: theme.palette.text.placeholderFocus, - opacity: 1, - }, - }), + color: p.onSolid ?? "var(--ds-on-solid)", + backgroundColor: solid, - root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ - "&.Mui-error input::placeholder, &.Mui-error input::-webkit-input-placeholder, &.Mui-error input::-moz-placeholder": - { - color: theme.palette.error.light, - opacity: 1, + ...(isInteractive && { + "&:hover": { + backgroundColor: solid, + boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), }, - "&.Mui-disabled input::placeholder, &.Mui-disabled input::-webkit-input-placeholder, &.Mui-disabled input::-moz-placeholder": - { - color: theme.palette.text.disabled, - opacity: 1, + "&:active": { + backgroundColor: solid, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), }, - }), - }, - }, - - MuiOutlinedInput: { - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const colour = (ownerState.color ?? "primary") as IntentColour; - const p = getIntentPalette(theme, colour); - const focusToken = getFocusToken(colour); - return { - "& .MuiOutlinedInput-notchedOutline": { - borderColor: theme.palette.borders.base, - }, - - "&:hover:not(.Mui-disabled):not(.Mui-error):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": + "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": { - borderColor: theme.palette.borders.emphasis, + backgroundColor: solid, + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, - "&.Mui-focused:not(.Mui-disabled):not(.Mui-error) .MuiOutlinedInput-notchedOutline": + "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": { - borderColor: p.light, - borderWidth: 2, + backgroundColor: solid, + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, + }), + }; + }, + }, + }, - "&.Mui-focused:hover:not(.Mui-disabled):not(.Mui-error) .MuiOutlinedInput-notchedOutline": - { - borderColor: p.light, - borderWidth: 2, - }, + MuiInputBase: { + styleOverrides: { + input: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + "&::placeholder": { + color: theme.palette.text.placeholder, + opacity: 1, + }, - "&.Mui-error .MuiOutlinedInput-notchedOutline": { - borderColor: theme.palette.error.light, - }, + "&::-webkit-input-placeholder": { + color: theme.palette.text.placeholder, + opacity: 1, + }, - "&.Mui-error:hover:not(.Mui-disabled):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": - { - borderColor: theme.palette.error.light, - }, + "&::-moz-placeholder": { + color: theme.palette.text.placeholder, + opacity: 1, + }, - "&.Mui-error.Mui-focused .MuiOutlinedInput-notchedOutline": { - borderColor: theme.palette.error.light, - borderWidth: 2, - }, + "&:focus::placeholder": { + color: theme.palette.text.placeholderFocus, + }, - "&.Mui-focusVisible": { - outline: "var(--ds-focus-ring-width) solid", - outlineColor: focusToken, - outlineOffset: "var(--ds-focus-ring-offset)", - }, + "&:focus::-webkit-input-placeholder": { + color: theme.palette.text.placeholderFocus, + opacity: 1, + }, - "&.Mui-disabled .MuiOutlinedInput-notchedOutline": { - borderColor: "var(--ds-border-subtle)", - }, - }; + "&:focus::-moz-placeholder": { + color: theme.palette.text.placeholderFocus, + opacity: 1, }, - }, - }, + }), - MuiInputLabel: { - styleOverrides: { - root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ - "&:not(.MuiInputLabel-shrink)": { - color: theme.palette.text.secondary, + root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + "&.Mui-error input::placeholder, &.Mui-error input::-webkit-input-placeholder, &.Mui-error input::-moz-placeholder": + { + color: theme.palette.error.light, + opacity: 1, }, - "&.Mui-disabled:not(.MuiInputLabel-shrink)": { + "&.Mui-disabled input::placeholder, &.Mui-disabled input::-webkit-input-placeholder, &.Mui-disabled input::-moz-placeholder": + { color: theme.palette.text.disabled, + opacity: 1, }, + }), + }, + }, - "&.Mui-focused": { - color: theme.palette.primary.main, + MuiOutlinedInput: { + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const colour = (ownerState.color ?? "primary") as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + + return { + "& .MuiOutlinedInput-notchedOutline": { + borderColor: theme.palette.borders.base, }, - "&.Mui-focused.MuiFormLabel-colorSecondary": { - color: theme.palette.secondary.main, - }, + "&:hover:not(.Mui-disabled):not(.Mui-error):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": + { + borderColor: theme.palette.borders.emphasis, + }, - "&.Mui-focused.MuiFormLabel-colorSuccess": { - color: theme.palette.success.main, - }, + "&.Mui-focused:not(.Mui-disabled):not(.Mui-error) .MuiOutlinedInput-notchedOutline": + { + borderColor: p.light, + borderWidth: 2, + }, - "&.Mui-focused.MuiFormLabel-colorWarning": { - color: theme.palette.warning.main, - }, + "&.Mui-focused:hover:not(.Mui-disabled):not(.Mui-error) .MuiOutlinedInput-notchedOutline": + { + borderColor: p.light, + borderWidth: 2, + }, - "&.Mui-focused.MuiFormLabel-colorError": { - color: theme.palette.error.main, + "&.Mui-error .MuiOutlinedInput-notchedOutline": { + borderColor: theme.palette.error.light, }, - "&.Mui-focused.MuiFormLabel-colorInfo": { - color: theme.palette.info.main, + "&.Mui-error:hover:not(.Mui-disabled):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": + { + borderColor: theme.palette.error.light, + }, + + "&.Mui-error.Mui-focused .MuiOutlinedInput-notchedOutline": { + borderColor: theme.palette.error.light, + borderWidth: 2, }, - "&.Mui-focused.Mui-error": { - color: theme.palette.error.main, + "&.Mui-focusVisible": { + outline: "var(--ds-focus-ring-width) solid", + outlineColor: focusToken, + outlineOffset: "var(--ds-focus-ring-offset)", }, - "&.Mui-disabled": { - color: theme.palette.text.disabled, + "&.Mui-disabled .MuiOutlinedInput-notchedOutline": { + borderColor: "var(--ds-border-subtle)", }, - }), + }; }, }, + }, - MuiTab: { - styleOverrides: { - root: ({ theme }: OverrideArgs): CSSObject => ({ - textTransform: "none", + MuiInputLabel: { + styleOverrides: { + root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + "&:not(.MuiInputLabel-shrink)": { color: theme.palette.text.secondary, - fontWeight: 500, - minHeight: 44, + }, - "&:hover": { - color: theme.palette.text.primary, - boxShadow: getOverlayInset(), - }, + "&.Mui-disabled:not(.MuiInputLabel-shrink)": { + color: theme.palette.text.disabled, + }, - "&.Mui-selected": { - color: theme.palette.primary.main, - fontWeight: 600, - }, + "&.Mui-focused": { + color: theme.palette.primary.main, + }, - "&.Mui-disabled": { - color: theme.palette.text.disabled, - }, + "&.Mui-focused.MuiFormLabel-colorSecondary": { + color: theme.palette.secondary.main, + }, - "&.Mui-focusVisible, &:focus-visible": { - outline: "var(--ds-focus-ring-width) solid var(--ds-focus-ring)", - outlineOffset: "-2px", - }, - }), - }, + "&.Mui-focused.MuiFormLabel-colorSuccess": { + color: theme.palette.success.main, + }, + + "&.Mui-focused.MuiFormLabel-colorWarning": { + color: theme.palette.warning.main, + }, + + "&.Mui-focused.MuiFormLabel-colorError": { + color: theme.palette.error.main, + }, + + "&.Mui-focused.MuiFormLabel-colorInfo": { + color: theme.palette.info.main, + }, + + "&.Mui-focused.Mui-error": { + color: theme.palette.error.main, + }, + + "&.Mui-disabled": { + color: theme.palette.text.disabled, + }, + }), }, + }, - MuiAlert: { - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const severity = (ownerState.severity ?? "success") as IntentColour; - const p = getIntentPalette(theme, severity); - - const common: CSSObject = { - borderRadius: 8, - alignItems: "flex-start", - - "& .MuiAlert-icon": { - color: "currentColor", - opacity: 1, - }, + MuiTab: { + styleOverrides: { + root: ({ theme }: OverrideArgs): CSSObject => ({ + textTransform: "none", + color: theme.palette.text.secondary, + fontWeight: 500, + minHeight: 44, + + "&:hover": { + color: theme.palette.text.primary, + boxShadow: getOverlayInset(), + }, - "& .MuiAlert-action": { - color: "inherit", + "&.Mui-selected": { + color: theme.palette.primary.main, + fontWeight: 600, + }, - "& .MuiIconButton-root:hover": { - boxShadow: getOverlayInset(), - }, + "&.Mui-disabled": { + color: theme.palette.text.disabled, + }, + + "&.Mui-focusVisible, &:focus-visible": { + outline: "var(--ds-focus-ring-width) solid var(--ds-focus-ring)", + outlineOffset: "-2px", + }, + }), + }, + }, + + MuiAlert: { + styleOverrides: { + root: ({ ownerState, theme }: OverrideArgs): CSSObject => { + const severity = (ownerState.severity ?? "success") as IntentColour; + const p = getIntentPalette(theme, severity); + + const common: CSSObject = { + borderRadius: 8, + alignItems: "flex-start", + + "& .MuiAlert-icon": { + color: "currentColor", + opacity: 1, + }, + + "& .MuiAlert-action": { + color: "inherit", + + "& .MuiIconButton-root:hover": { + boxShadow: getOverlayInset(), }, - }; + }, + }; - if (ownerState.variant === "filled") { - return { - ...common, - backgroundColor: p.solid ?? p.main, - color: p.onSolid ?? "var(--ds-on-solid)", - }; - } - - if (ownerState.variant === "outlined") { - return { - ...common, - backgroundColor: p.container, - color: p.onContainer, - border: `1px solid ${p.light}`, - }; - } + if (ownerState.variant === "filled") { + return { + ...common, + backgroundColor: p.solid ?? p.main, + color: p.onSolid ?? "var(--ds-on-solid)", + }; + } + if (ownerState.variant === "outlined") { return { ...common, backgroundColor: p.container, color: p.onContainer, - border: "1px solid var(--ds-border-subtle)", + border: `1px solid ${p.light}`, }; - }, + } + + return { + ...common, + backgroundColor: p.container, + color: p.onContainer, + border: "1px solid var(--ds-border-subtle)", + }; }, }, + }, - MuiLinearProgress: { - styleOverrides: { - root: { - height: 6, - borderRadius: 999, - overflow: "hidden", - backgroundColor: "var(--ds-surface-container-high)", - }, + MuiLinearProgress: { + styleOverrides: { + root: { + height: 6, + borderRadius: 999, + overflow: "hidden", + backgroundColor: "var(--ds-surface-container-high)", + }, - bar: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const colour = (ownerState.color ?? "primary") as IntentColour; - const p = getIntentPalette(theme, colour); + bar: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const colour = (ownerState.color ?? "primary") as IntentColour; + const p = getIntentPalette(theme, colour); - return { - backgroundColor: p.main, - }; - }, + return { + backgroundColor: p.main, + }; }, }, + }, - MuiCircularProgress: { - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const colour = (ownerState.color ?? "primary") as IntentColour; - const p = getIntentPalette(theme, colour); - - return { - color: p.main, - }; - }, + MuiCircularProgress: { + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const colour = (ownerState.color ?? "primary") as IntentColour; + const p = getIntentPalette(theme, colour); + + return { + color: p.main, + }; }, }, + }, - MuiSkeleton: { - styleOverrides: { - root: { - backgroundColor: "var(--ds-surface-container-high)", - }, + MuiSkeleton: { + styleOverrides: { + root: { + backgroundColor: "var(--ds-surface-container-high)", + }, - wave: { - backgroundColor: "var(--ds-surface-container-high)", - position: "relative", - overflow: "hidden", - - "&::after": { - content: '""', - position: "absolute", - inset: 0, - transform: "translateX(-100%)", - backgroundImage: - "linear-gradient(90deg, transparent, var(--ds-overlay-hover), transparent)", - }, + wave: { + backgroundColor: "var(--ds-surface-container-high)", + position: "relative", + overflow: "hidden", + + "&::after": { + content: '""', + position: "absolute", + inset: 0, + transform: "translateX(-100%)", + backgroundImage: + "linear-gradient(90deg, transparent, var(--ds-overlay-hover), transparent)", }, }, }, + }, - MuiSnackbar: { - styleOverrides: { - root: { - "& .MuiSnackbarContent-root, & .MuiAlert-root": { - minWidth: 320, - maxWidth: 560, - }, + MuiSnackbar: { + styleOverrides: { + root: { + "& .MuiSnackbarContent-root, & .MuiAlert-root": { + minWidth: 320, + maxWidth: 560, }, }, }, + }, - MuiSnackbarContent: { - styleOverrides: { - root: { - backgroundColor: "var(--ds-surface-container)", - color: "var(--ds-on-surface)", - border: "1px solid var(--ds-border-subtle)", - borderRadius: 8, - }, + MuiSnackbarContent: { + styleOverrides: { + root: { + backgroundColor: "var(--ds-surface-container)", + color: "var(--ds-on-surface)", + border: "1px solid var(--ds-border-subtle)", + borderRadius: 8, + }, - message: { - padding: "8px 0", - }, + message: { + padding: "8px 0", + }, - action: { - color: "inherit", + action: { + color: "inherit", - "& .MuiIconButton-root:hover": { - boxShadow: getOverlayInset(), - }, + "& .MuiIconButton-root:hover": { + boxShadow: getOverlayInset(), }, }, }, + }, - MuiCheckbox: { - defaultProps: { - disableRipple: true, - }, - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const rawColour = ownerState.color ?? "primary"; - const isDefault = rawColour === "default"; - const colour = rawColour as IntentColour; - - const p = !isDefault ? getIntentPalette(theme, colour) : null; - const focusToken = !isDefault ? getFocusToken(colour) : undefined; - - return { - color: "var(--ds-on-surface-variant)", - borderRadius: 8, + MuiCheckbox: { + defaultProps: { + disableRipple: true, + }, + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const rawColour = ownerState.color ?? "primary"; + const isDefault = rawColour === "default"; + const colour = rawColour as IntentColour; + + const p = !isDefault ? getIntentPalette(theme, colour) : null; + const focusToken = !isDefault ? getFocusToken(colour) : undefined; + + return { + color: "var(--ds-on-surface-variant)", + borderRadius: 8, - "&:hover": { - backgroundColor: "var(--ds-overlay-hover)", - }, + "&:hover": { + backgroundColor: "var(--ds-overlay-hover)", + }, - ...getFocusOutline(focusToken), + ...getFocusOutline(focusToken), - "&.Mui-checked": { - color: isDefault ? "var(--ds-on-surface)" : p?.main, - }, + "&.Mui-checked": { + color: isDefault ? "var(--ds-on-surface)" : p?.main, + }, - "&.MuiCheckbox-indeterminate": { - color: isDefault ? "var(--ds-on-surface)" : p?.main, - }, + "&.MuiCheckbox-indeterminate": { + color: isDefault ? "var(--ds-on-surface)" : p?.main, + }, - "&.Mui-disabled": { - color: "var(--ds-action-disabled)", - }, - }; - }, + "&.Mui-disabled": { + color: "var(--ds-action-disabled)", + }, + }; }, }, + }, - MuiRadio: { - defaultProps: { - disableRipple: true, - }, - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const rawColour = ownerState.color ?? "primary"; - const isDefault = rawColour === "default"; - const colour = rawColour as IntentColour; - - const p = !isDefault ? getIntentPalette(theme, colour) : null; - const focusToken = !isDefault ? getFocusToken(colour) : undefined; + MuiRadio: { + defaultProps: { + disableRipple: true, + }, + styleOverrides: { + root: ({ ownerState, theme }: OverrideArgs): CSSObject => { + const rawColour = ownerState.color ?? "primary"; + const isDefault = rawColour === "default"; + const colour = rawColour as IntentColour; - return { - color: "var(--ds-on-surface-variant)", - borderRadius: "50%", + const p = !isDefault ? getIntentPalette(theme, colour) : null; + const focusToken = !isDefault ? getFocusToken(colour) : undefined; - "&:hover": { - backgroundColor: "var(--ds-overlay-hover)", - }, + return { + color: "var(--ds-on-surface-variant)", + borderRadius: "50%", - ...getFocusOutline(focusToken), + "&:hover": { + backgroundColor: "var(--ds-overlay-hover)", + }, - "&.Mui-checked": { - color: isDefault ? "var(--ds-on-surface)" : p?.main, - }, + ...getFocusOutline(focusToken), - "&.Mui-disabled": { - color: "var(--ds-action-disabled)", - }, - }; - }, + "&.Mui-checked": { + color: isDefault ? "var(--ds-on-surface)" : p?.main, + }, + + "&.Mui-disabled": { + color: "var(--ds-action-disabled)", + }, + }; }, }, }, - }); - - return createTheme(DiamondDSThemeOptions); -}; - -// Convenience exports — derive from the factory so they stay in sync. -export const DiamondDSTheme = createDiamondTheme("light"); -export const DiamondDSThemeDark = createDiamondTheme("dark"); + }, +}); -// Keep the old export name as an alias for backwards compatibility. -export const createMuiTheme = createDiamondTheme; +export const DiamondDSTheme = createTheme(DiamondDSThemeOptions); diff --git a/src/themes/ThemeProvider.tsx b/src/themes/ThemeProvider.tsx index 56d306b1..a4badc84 100644 --- a/src/themes/ThemeProvider.tsx +++ b/src/themes/ThemeProvider.tsx @@ -1,37 +1,26 @@ -import React, { useLayoutEffect, useMemo } from "react"; -import { CssBaseline } from "@mui/material"; import { ThemeProvider as MuiThemeProvider } from "@mui/material/styles"; -import type { ThemeProviderProps as MuiThemeProviderProps } from "@mui/material/styles"; -import { createMuiTheme } from "./DiamondDSTheme"; -import type { DSMode } from "./DiamondDSTheme"; +import { CssBaseline } from "@mui/material"; +import { GenericTheme } from "./GenericTheme"; +import { ThemeProviderProps as MuiThemeProviderProps } from "@mui/material/styles"; interface ThemeProviderProps extends Partial { baseline?: boolean; - mode?: DSMode; // 'light' | 'dark' (adding 'system' for future use) } -export function ThemeProvider({ +const ThemeProvider = function ({ children, + theme = GenericTheme, baseline = true, defaultMode = "system", - mode = "light", // default to light mode (for now) ...props }: ThemeProviderProps) { - useLayoutEffect(() => { - const root = document.documentElement; - - root.setAttribute("data-mode", mode); - root.classList.toggle("dark", mode === "dark"); - root.classList.toggle("light", mode === "light"); - root.style.colorScheme = mode; - }, [mode]); - - const theme = useMemo(() => createMuiTheme(mode), [mode]); - return ( {baseline && } {children} ); -} +}; + +export { ThemeProvider }; +export type { ThemeProviderProps }; From 699625acfa436f66b24a593f25516b09cf95c28b Mon Sep 17 00:00:00 2001 From: Zohar Manor-Abel Date: Tue, 12 May 2026 14:27:08 +0100 Subject: [PATCH 7/9] Revert "Refactor Storybook theme handling and introduce Diamond DS theme configuration support" This reverts commit 8b304fd18d7ace6b296890a058c770f6eb86fed0. --- .storybook/ThemeSwapper.tsx | 32 +- .storybook/preview.tsx | 90 +- src/styles/diamondDS/diamond-ds-roles.css | 4 +- src/themes/DiamondDSTheme.ts | 1482 +++++++++++---------- src/themes/ThemeProvider.tsx | 29 +- 5 files changed, 834 insertions(+), 803 deletions(-) diff --git a/.storybook/ThemeSwapper.tsx b/.storybook/ThemeSwapper.tsx index e7a3f8b8..99634d0f 100644 --- a/.storybook/ThemeSwapper.tsx +++ b/.storybook/ThemeSwapper.tsx @@ -1,5 +1,6 @@ -import { useColorScheme } from "@mui/material/styles"; +import { useColorScheme } from "@mui/material"; import * as React from "react"; +import { useEffect } from "react"; interface Globals { theme: string; @@ -17,35 +18,20 @@ export interface ThemeSwapperProps { export const TextLight = "Mode: Light"; export const TextDark = "Mode: Dark"; -export const TextSystem = "Mode: System"; const ThemeSwapper = ({ context, children }: ThemeSwapperProps) => { - const { mode, systemMode, setMode } = useColorScheme(); + const { mode, setMode } = useColorScheme(); - React.useEffect(() => { - const selectedThemeMode = context.globals.themeMode || TextSystem; + useEffect(() => { + const selectedThemeMode = context.globals.themeMode || TextLight; + const nextMode = selectedThemeMode === TextLight ? "light" : "dark"; - if (selectedThemeMode === TextLight) { - setMode("light"); - return; - } - - if (selectedThemeMode === TextDark) { - setMode("dark"); - return; - } - - setMode("system"); + setMode(nextMode); + document.documentElement.setAttribute("data-mode", nextMode); }, [context.globals.themeMode, setMode]); - const resolvedMode = mode === "system" ? systemMode : mode; - return ( -
+
{children}
); diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 7aadaaf3..a46c2aa7 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -1,40 +1,51 @@ -import React from "react"; +import React, { useLayoutEffect } from "react"; +import { CssBaseline } from "@mui/material"; import type { Preview } from "@storybook/react"; - import { ThemeProvider } from "../src"; -import { GenericTheme, DiamondTheme, DiamondDSTheme } from "../src"; - import { - Context, - ThemeSwapper, - TextDark, - TextLight, - TextSystem, -} from "./ThemeSwapper"; + GenericTheme, + DiamondTheme, + DiamondDSTheme, + DiamondDSThemeDark, +} from "../src"; +import { Context, ThemeSwapper, TextLight, TextDark } from "./ThemeSwapper"; const TextThemeBase = "Theme: Generic"; const TextThemeDiamond = "Theme: Diamond"; -const TextThemeDiamondDS = "Theme: Diamond DS"; -function resolveTheme(selectedTheme: string) { +const TextThemeDiamondDS = "Theme: DiamondDS"; + +function resolveTheme(selectedTheme: string, mode: "light" | "dark") { switch (selectedTheme) { case TextThemeBase: return GenericTheme; - - case TextThemeDiamond: - return DiamondTheme; - case TextThemeDiamondDS: + return mode === "dark" ? DiamondDSThemeDark : DiamondDSTheme; + case TextThemeDiamond: default: - return DiamondDSTheme; + return DiamondTheme; } } -function resolveDefaultMode(selectedThemeMode: string) { - if (selectedThemeMode === TextLight) return "light"; - if (selectedThemeMode === TextDark) return "dark"; - - return "system"; +function ApplyModeToPreviewDoc({ + mode, + doc, +}: { + mode: "light" | "dark"; + doc: Document; +}) { + useLayoutEffect(() => { + const root = doc.documentElement; // + root.setAttribute("data-mode", mode); + + // Optional: keep class too if your CSS supports it + root.classList.toggle("dark", mode === "dark"); + root.classList.toggle("light", mode === "light"); + + root.style.colorScheme = mode; + }, [mode, doc]); + + return null; } export const decorators = [ @@ -45,19 +56,28 @@ export const decorators = [
); }, - + (StoriesWithThemeSwapping: React.FC, context: Context) => { + return ( + + + + ); + }, (StoriesWithThemeProvider: React.FC, context: Context) => { - const selectedTheme = context.globals.theme || TextThemeDiamondDS; - const selectedThemeMode = context.globals.themeMode || TextSystem; + const selectedTheme = context.globals.theme || TextThemeBase; + const selectedThemeMode = context.globals.themeMode || TextLight; + const mode = selectedThemeMode === TextLight ? "light" : "dark"; + // ensure we target the preview iframe document + const doc: Document = context?.canvasElement?.ownerDocument ?? document; return ( - - - + + + ); }, @@ -74,23 +94,20 @@ const preview: Preview = { dynamicTitle: true, }, }, - themeMode: { description: "Global theme mode for components", toolbar: { - title: "Theme mode", + title: "Theme Mode", icon: "mirror", - items: [TextLight, TextDark, TextSystem], + items: [TextLight, TextDark], dynamicTitle: true, }, }, }, - initialGlobals: { theme: TextThemeDiamondDS, - themeMode: TextSystem, + themeMode: TextLight, }, - parameters: { controls: { matchers: { @@ -115,7 +132,6 @@ const preview: Preview = { }, }, }, - argTypes: { linkComponent: { control: false, diff --git a/src/styles/diamondDS/diamond-ds-roles.css b/src/styles/diamondDS/diamond-ds-roles.css index db4c16b9..4c826945 100644 --- a/src/styles/diamondDS/diamond-ds-roles.css +++ b/src/styles/diamondDS/diamond-ds-roles.css @@ -12,7 +12,7 @@ } :root, -:root.light { +:root[data-mode="light"] { /* Neutral */ --ds-background: #f6f6f9; @@ -201,7 +201,7 @@ --ds-focus-ring-highlight: var(--ds-highlight-accent); } -:root.dark { +:root[data-mode="dark"] { /* Neutral */ --ds-background: #0e1017; diff --git a/src/themes/DiamondDSTheme.ts b/src/themes/DiamondDSTheme.ts index c3eb9e19..9d6eb70b 100644 --- a/src/themes/DiamondDSTheme.ts +++ b/src/themes/DiamondDSTheme.ts @@ -134,6 +134,8 @@ declare module "@mui/material/styles" { } } +export type DSMode = "light" | "dark"; + // --- Helpers --- const getIntentPalette = ( @@ -174,931 +176,947 @@ const getFocusOutline = (token?: string): CSSObject => ({ const getOverlayInset = (token = "var(--ds-overlay-hover)") => `inset 0 0 0 9999px ${token}`; -export const DiamondDSThemeOptions = mergeThemeOptions({ - cssVariables: { - colorSchemeSelector: "class", - }, - - colorSchemes: { - light: true, - dark: true, - }, - - typography: { - fontFamily: [ - '"Inter Variable"', - "Inter", - "system-ui", - "-apple-system", - '"Segoe UI"', - "Roboto", - "Helvetica", - "Arial", - "sans-serif", - ].join(","), - }, - - logos: { - normal: { - src: logoImageLight, - srcDark: logoImageDark ?? undefined, - alt: "Diamond Light Source Logo", - width: "100", +// --- Theme factory --- + +export const createDiamondTheme = (mode: DSMode): Theme => { + const DiamondDSThemeOptions = mergeThemeOptions({ + typography: { + fontFamily: [ + "Inter Variable", + "Inter", + "system-ui", + "-apple-system", + '"Segoe UI"', + "Roboto", + "Helvetica", + "Arial", + "sans-serif", + ].join(","), }, - short: { - src: logoShort, - alt: "Diamond Light Source Logo", - width: "35", - }, - }, - palette: { - action: { - hover: "var(--ds-overlay-hover)", - selected: "var(--ds-overlay-selected)", - focus: "var(--ds-overlay-focus)", - disabled: "var(--ds-on-surface-disabled)", - disabledBackground: "var(--ds-surface-disabled)", - - hoverOpacity: 0.04, - selectedOpacity: 0.08, - disabledOpacity: 0.38, - focusOpacity: 0.16, + logos: { + normal: { + src: + mode === "dark" ? (logoImageDark ?? logoImageLight) : logoImageLight, + srcDark: logoImageDark ?? logoImageLight, + alt: "Diamond Light Source Logo", + width: "100", + }, + short: { + src: logoShort, + alt: "Diamond Light Source Logo", + width: "35", + }, }, - text: { - primary: "var(--ds-on-surface)", - secondary: "var(--ds-on-surface-variant)", - onSolid: "var(--ds-on-solid)", - disabled: "var(--ds-on-surface-disabled)", - placeholder: "var(--ds-placeholder)", - placeholderFocus: "var(--ds-placeholder-focus)", + palette: { + mode, - primaryChannel: "var(--ds-on-surface-channel)", - secondaryChannel: "var(--ds-on-surface-variant-channel)", - }, + action: { + hover: "var(--ds-overlay-hover)", + selected: "var(--ds-overlay-selected)", + focus: "var(--ds-overlay-focus)", + disabled: "var(--ds-on-surface-disabled)", + disabledBackground: "var(--ds-surface-disabled)", - background: { - default: "rgb(var(--ds-background-channel))", - paper: "rgb(var(--ds-surface-channel))", - }, + hoverOpacity: 0.04, + selectedOpacity: 0.08, + disabledOpacity: 0.38, + focusOpacity: 0.16, + }, - divider: "var(--ds-border-subtle)", + text: { + primary: "var(--ds-on-surface)", + secondary: "var(--ds-on-surface-variant)", + onSolid: "var(--ds-on-solid)", + disabled: "var(--ds-on-surface-disabled)", + placeholder: "var(--ds-placeholder)", + placeholderFocus: "var(--ds-placeholder-focus)", - borders: { - subtle: "var(--ds-border-subtle)", - base: "var(--ds-border)", - emphasis: "var(--ds-border-emphasis)", - }, + primaryChannel: "var(--ds-on-surface-channel)", + secondaryChannel: "var(--ds-on-surface-variant-channel)", + }, - surface: { - subtle: "var(--ds-surface-container)", - strong: "var(--ds-surface-container-high)", - }, + background: { + default: "rgb(var(--ds-background-channel))", + paper: "rgb(var(--ds-surface-channel))", + }, - primary: { - light: "var(--ds-primary-accent)", - main: "var(--ds-primary)", - dark: "var(--ds-primary-emphasis)", - contrastText: "var(--ds-on-primary)", - container: "var(--ds-primary-container)", - onContainer: "var(--ds-on-primary-container)", - solid: "var(--ds-primary-solid)", - onSolid: "var(--ds-on-primary-solid)", - - contrastTextChannel: "var(--ds-on-primary-channel)", - mainChannel: "var(--ds-primary-mainChannel)", - lightChannel: "var(--ds-primary-lightChannel)", - darkChannel: "var(--ds-primary-darkChannel)", - }, + divider: "var(--ds-border-subtle)", - secondary: { - light: "var(--ds-secondary-accent)", - main: "var(--ds-secondary)", - dark: "var(--ds-secondary-emphasis)", - contrastText: "var(--ds-on-secondary)", - container: "var(--ds-secondary-container)", - onContainer: "var(--ds-on-secondary-container)", - solid: "var(--ds-secondary-solid)", - onSolid: "var(--ds-on-secondary-solid)", - - contrastTextChannel: "var(--ds-on-secondary-channel)", - mainChannel: "var(--ds-secondary-mainChannel)", - lightChannel: "var(--ds-secondary-lightChannel)", - darkChannel: "var(--ds-secondary-darkChannel)", - }, + borders: { + subtle: "var(--ds-border-subtle)", + base: "var(--ds-border)", + emphasis: "var(--ds-border-emphasis)", + }, - brand: { - light: "var(--ds-brand-accent)", - main: "var(--ds-brand)", - dark: "var(--ds-brand-emphasis)", - contrastText: "var(--ds-on-brand)", - container: "var(--ds-brand-container)", - onContainer: "var(--ds-on-brand-container)", - solid: "var(--ds-brand-solid)", - onSolid: "var(--ds-on-brand-solid)", - - contrastTextChannel: "var(--ds-on-brand-channel)", - mainChannel: "var(--ds-brand-mainChannel)", - lightChannel: "var(--ds-brand-lightChannel)", - darkChannel: "var(--ds-brand-darkChannel)", - }, + surface: { + subtle: "var(--ds-surface-container)", + strong: "var(--ds-surface-container-high)", + }, - error: { - light: "var(--ds-danger-accent)", - main: "var(--ds-danger)", - dark: "var(--ds-danger-emphasis)", - contrastText: "var(--ds-on-danger)", - container: "var(--ds-danger-container)", - onContainer: "var(--ds-on-danger-container)", - solid: "var(--ds-danger-solid)", - onSolid: "var(--ds-on-danger-solid)", - - contrastTextChannel: "var(--ds-on-danger-channel)", - mainChannel: "var(--ds-danger-mainChannel)", - lightChannel: "var(--ds-danger-lightChannel)", - darkChannel: "var(--ds-danger-darkChannel)", - }, + primary: { + light: "var(--ds-primary-accent)", + main: "var(--ds-primary)", + dark: "var(--ds-primary-emphasis)", + contrastText: "var(--ds-on-primary)", + container: "var(--ds-primary-container)", + onContainer: "var(--ds-on-primary-container)", + solid: "var(--ds-primary-solid)", + onSolid: "var(--ds-on-primary-solid)", + + contrastTextChannel: "var(--ds-on-primary-channel)", + mainChannel: "var(--ds-primary-mainChannel)", + lightChannel: "var(--ds-primary-lightChannel)", + darkChannel: "var(--ds-primary-darkChannel)", + }, - warning: { - light: "var(--ds-warning-accent)", - main: "var(--ds-warning)", - dark: "var(--ds-warning-emphasis)", - contrastText: "var(--ds-on-warning)", - container: "var(--ds-warning-container)", - onContainer: "var(--ds-on-warning-container)", - solid: "var(--ds-warning-solid)", - onSolid: "var(--ds-on-warning-solid)", - - contrastTextChannel: "var(--ds-on-warning-channel)", - mainChannel: "var(--ds-warning-mainChannel)", - lightChannel: "var(--ds-warning-lightChannel)", - darkChannel: "var(--ds-warning-darkChannel)", - }, + secondary: { + light: "var(--ds-secondary-accent)", + main: "var(--ds-secondary)", + dark: "var(--ds-secondary-emphasis)", + contrastText: "var(--ds-on-secondary)", + container: "var(--ds-secondary-container)", + onContainer: "var(--ds-on-secondary-container)", + solid: "var(--ds-secondary-solid)", + onSolid: "var(--ds-on-secondary-solid)", + + contrastTextChannel: "var(--ds-on-secondary-channel)", + mainChannel: "var(--ds-secondary-mainChannel)", + lightChannel: "var(--ds-secondary-lightChannel)", + darkChannel: "var(--ds-secondary-darkChannel)", + }, - success: { - light: "var(--ds-success-accent)", - main: "var(--ds-success)", - dark: "var(--ds-success-emphasis)", - contrastText: "var(--ds-on-success)", - container: "var(--ds-success-container)", - onContainer: "var(--ds-on-success-container)", - solid: "var(--ds-success-solid)", - onSolid: "var(--ds-on-success-solid)", - - contrastTextChannel: "var(--ds-on-success-channel)", - mainChannel: "var(--ds-success-mainChannel)", - lightChannel: "var(--ds-success-lightChannel)", - darkChannel: "var(--ds-success-darkChannel)", - }, + brand: { + light: "var(--ds-brand-accent)", + main: "var(--ds-brand)", + dark: "var(--ds-brand-emphasis)", + contrastText: "var(--ds-on-brand)", + container: "var(--ds-brand-container)", + onContainer: "var(--ds-on-brand-container)", + solid: "var(--ds-brand-solid)", + onSolid: "var(--ds-on-brand-solid)", + + contrastTextChannel: "var(--ds-on-brand-channel)", + mainChannel: "var(--ds-brand-mainChannel)", + lightChannel: "var(--ds-brand-lightChannel)", + darkChannel: "var(--ds-brand-darkChannel)", + }, - info: { - light: "var(--ds-info-accent)", - main: "var(--ds-info)", - dark: "var(--ds-info-emphasis)", - contrastText: "var(--ds-on-info)", - container: "var(--ds-info-container)", - onContainer: "var(--ds-on-info-container)", - solid: "var(--ds-info-solid)", - onSolid: "var(--ds-on-info-solid)", - - contrastTextChannel: "var(--ds-on-info-channel)", - mainChannel: "var(--ds-info-mainChannel)", - lightChannel: "var(--ds-info-lightChannel)", - darkChannel: "var(--ds-info-darkChannel)", - }, + error: { + light: "var(--ds-danger-accent)", + main: "var(--ds-danger)", + dark: "var(--ds-danger-emphasis)", + contrastText: "var(--ds-on-danger)", + container: "var(--ds-danger-container)", + onContainer: "var(--ds-on-danger-container)", + solid: "var(--ds-danger-solid)", + onSolid: "var(--ds-on-danger-solid)", + + contrastTextChannel: "var(--ds-on-danger-channel)", + mainChannel: "var(--ds-danger-mainChannel)", + lightChannel: "var(--ds-danger-lightChannel)", + darkChannel: "var(--ds-danger-darkChannel)", + }, - grey: { - 50: "var(--ds-grey-50)", - 100: "var(--ds-grey-100)", - 200: "var(--ds-grey-200)", - 300: "var(--ds-grey-300)", - 400: "var(--ds-grey-400)", - 500: "var(--ds-grey-500)", - 600: "var(--ds-grey-600)", - 700: "var(--ds-grey-700)", - 800: "var(--ds-grey-800)", - 900: "var(--ds-grey-900)", - }, - }, + warning: { + light: "var(--ds-warning-accent)", + main: "var(--ds-warning)", + dark: "var(--ds-warning-emphasis)", + contrastText: "var(--ds-on-warning)", + container: "var(--ds-warning-container)", + onContainer: "var(--ds-on-warning-container)", + solid: "var(--ds-warning-solid)", + onSolid: "var(--ds-on-warning-solid)", + + contrastTextChannel: "var(--ds-on-warning-channel)", + mainChannel: "var(--ds-warning-mainChannel)", + lightChannel: "var(--ds-warning-lightChannel)", + darkChannel: "var(--ds-warning-darkChannel)", + }, - components: { - MuiPaper: { - styleOverrides: { - root: { - backgroundImage: "none", - }, + success: { + light: "var(--ds-success-accent)", + main: "var(--ds-success)", + dark: "var(--ds-success-emphasis)", + contrastText: "var(--ds-on-success)", + container: "var(--ds-success-container)", + onContainer: "var(--ds-on-success-container)", + solid: "var(--ds-success-solid)", + onSolid: "var(--ds-on-success-solid)", + + contrastTextChannel: "var(--ds-on-success-channel)", + mainChannel: "var(--ds-success-mainChannel)", + lightChannel: "var(--ds-success-lightChannel)", + darkChannel: "var(--ds-success-darkChannel)", + }, + + info: { + light: "var(--ds-info-accent)", + main: "var(--ds-info)", + dark: "var(--ds-info-emphasis)", + contrastText: "var(--ds-on-info)", + container: "var(--ds-info-container)", + onContainer: "var(--ds-on-info-container)", + solid: "var(--ds-info-solid)", + onSolid: "var(--ds-on-info-solid)", + + contrastTextChannel: "var(--ds-on-info-channel)", + mainChannel: "var(--ds-info-mainChannel)", + lightChannel: "var(--ds-info-lightChannel)", + darkChannel: "var(--ds-info-darkChannel)", }, - }, - MuiButtonBase: { - defaultProps: { - disableRipple: true, - disableTouchRipple: true, - focusRipple: false, + grey: { + 50: "var(--ds-grey-50)", + 100: "var(--ds-grey-100)", + 200: "var(--ds-grey-200)", + 300: "var(--ds-grey-300)", + 400: "var(--ds-grey-400)", + 500: "var(--ds-grey-500)", + 600: "var(--ds-grey-600)", + 700: "var(--ds-grey-700)", + 800: "var(--ds-grey-800)", + 900: "var(--ds-grey-900)", }, }, - MuiButton: { - defaultProps: { - disableFocusRipple: true, + components: { + MuiPaper: { + styleOverrides: { + root: { + backgroundImage: "none", + }, + }, }, - styleOverrides: { - root: ({ ownerState, theme }: OverrideArgs): CSSObject => { - const base: CSSObject = { - textTransform: "none", - boxShadow: "none", - }; - const variant = ownerState.variant ?? "text"; - const rawColour = ownerState.color ?? "primary"; + MuiButtonBase: { + defaultProps: { + disableRipple: true, + disableTouchRipple: true, + focusRipple: false, + }, + }, - if (rawColour === "inherit") { - return { - ...base, - ...getFocusOutline(), + MuiButton: { + defaultProps: { + disableFocusRipple: true, + }, + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const base: CSSObject = { + textTransform: "none", + boxShadow: "none", }; - } - - const colour = rawColour as IntentColour; - const p = getIntentPalette(theme, colour); - const focusToken = getFocusToken(colour); - const subtle = p.container; - const onSubtle = p.onContainer; - if (variant === "contained") { - return { - ...base, - ...getFocusOutline(focusToken), - backgroundColor: p.solid ?? p.main, - color: p.onSolid ?? "var(--ds-on-solid)", - - "&:hover": { + const variant = ownerState.variant ?? "text"; + const rawColour = ownerState.color ?? "primary"; + + if (rawColour === "inherit") { + return { + ...base, + ...getFocusOutline(), + }; + } + + const colour = rawColour as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + const subtle = p.container; + const onSubtle = p.onContainer; + + if (variant === "contained") { + return { + ...base, + ...getFocusOutline(focusToken), backgroundColor: p.solid ?? p.main, - boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), - }, + color: p.onSolid ?? "var(--ds-on-solid)", - "&:active": { - backgroundColor: p.solid ?? p.main, - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + "&:hover": { + backgroundColor: p.solid ?? p.main, + boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), + }, - "&.Mui-focusVisible": { - outline: "var(--ds-focus-ring-width) solid", - outlineColor: focusToken, - outlineOffset: "var(--ds-focus-ring-offset)", - boxShadow: getOverlayInset("var(--ds-overlay-focus)"), - }, + "&:active": { + backgroundColor: p.solid ?? p.main, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, - "&.Mui-disabled": { - opacity: 1, - backgroundColor: "var(--ds-surface-disabled)", - color: "var(--ds-on-surface-disabled)", - boxShadow: "none", - }, - }; - } + "&.Mui-focusVisible": { + outline: "var(--ds-focus-ring-width) solid", + outlineColor: focusToken, + outlineOffset: "var(--ds-focus-ring-offset)", + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, - if (variant === "outlined") { - return { - ...base, - ...getFocusOutline(focusToken), + "&.Mui-disabled": { + opacity: 1, + backgroundColor: "var(--ds-surface-disabled)", + color: "var(--ds-on-surface-disabled)", + boxShadow: "none", + }, + }; + } - color: onSubtle, - backgroundColor: subtle, + if (variant === "outlined") { + return { + ...base, + ...getFocusOutline(focusToken), - "&:hover": { + color: onSubtle, backgroundColor: subtle, - boxShadow: getOverlayInset(), - }, - "&:active": { - backgroundColor: subtle, - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + "&:hover": { + backgroundColor: subtle, + boxShadow: getOverlayInset(), + }, - "&.Mui-disabled": { - opacity: 1, - backgroundColor: "transparent", - color: "var(--ds-on-surface-disabled)", - boxShadow: "none", - }, - }; - } + "&:active": { + backgroundColor: subtle, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, + + "&.Mui-disabled": { + opacity: 1, + backgroundColor: "transparent", + color: "var(--ds-on-surface-disabled)", + boxShadow: "none", + }, + }; + } + + if (variant === "text") { + return { + ...base, + ...getFocusOutline(focusToken), + color: p.main, + + "&:hover": { + backgroundColor: subtle, + boxShadow: getOverlayInset(), + }, + }; + } - if (variant === "text") { return { ...base, ...getFocusOutline(focusToken), - color: p.main, - - "&:hover": { - backgroundColor: subtle, - boxShadow: getOverlayInset(), - }, }; - } - - return { - ...base, - ...getFocusOutline(focusToken), - }; + }, }, }, - }, - MuiIconButton: { - defaultProps: { - disableRipple: true, - disableFocusRipple: true, - }, - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs<{ - color?: "inherit" | "default" | IntentColour; - }>): CSSObject => { - const rawColour = ownerState.color ?? "default"; - - if (rawColour === "inherit" || rawColour === "default") { + MuiIconButton: { + defaultProps: { + disableRipple: true, + disableFocusRipple: true, + }, + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs<{ + color?: "inherit" | "default" | IntentColour; + }>): CSSObject => { + const rawColour = ownerState.color ?? "default"; + + if (rawColour === "inherit" || rawColour === "default") { + return { + "&:hover": { + boxShadow: getOverlayInset(), + }, + ...getFocusOutline(), + }; + } + + const colour = rawColour as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + return { + color: p.main, + "&:hover": { + backgroundColor: p.container, boxShadow: getOverlayInset(), }, - ...getFocusOutline(), - }; - } - const colour = rawColour as IntentColour; - const p = getIntentPalette(theme, colour); - const focusToken = getFocusToken(colour); + ...getFocusOutline(focusToken), + }; + }, + }, + }, - return { - color: p.main, + MuiToggleButton: { + styleOverrides: { + root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + textTransform: "none", + border: `1px solid ${theme.palette.borders.base}`, "&:hover": { - backgroundColor: p.container, - boxShadow: getOverlayInset(), + borderColor: theme.palette.borders.emphasis, }, - - ...getFocusOutline(focusToken), - }; + }), }, }, - }, - - MuiToggleButton: { - styleOverrides: { - root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ - textTransform: "none", - border: `1px solid ${theme.palette.borders.base}`, - "&:hover": { - borderColor: theme.palette.borders.emphasis, - }, - }), - }, - }, + MuiChip: { + styleOverrides: { + root: ({ ownerState, theme }: OverrideArgs): CSSObject => { + const base: CSSObject = { + "& .MuiChip-icon": { + color: "currentColor", + }, + }; - MuiChip: { - styleOverrides: { - root: ({ ownerState, theme }: OverrideArgs): CSSObject => { - const base: CSSObject = { - "& .MuiChip-icon": { - color: "currentColor", - }, - }; + const rawColour = ownerState.color ?? "default"; + const isDefault = rawColour === "default"; + const isOutlined = ownerState.variant === "outlined"; + const isInteractive = !!( + ownerState.clickable || ownerState.onDelete + ); - const rawColour = ownerState.color ?? "default"; - const isDefault = rawColour === "default"; - const isOutlined = ownerState.variant === "outlined"; - const isInteractive = !!(ownerState.clickable || ownerState.onDelete); + if (isDefault) { + return { + ...base, + ...(isInteractive ? getFocusOutline() : {}), - if (isDefault) { - return { - ...base, - ...(isInteractive ? getFocusOutline() : {}), + color: "var(--ds-on-surface)", + borderColor: "var(--ds-border)", + backgroundColor: "var(--ds-surface-container-high)", - color: "var(--ds-on-surface)", - borderColor: "var(--ds-border)", - backgroundColor: "var(--ds-surface-container-high)", + ...(isInteractive && { + "&:hover": { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset(), + }, - ...(isInteractive && { - "&:hover": { - backgroundColor: "var(--ds-surface-container-high)", - boxShadow: getOverlayInset(), - }, + "&:active": { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, - "&:active": { - backgroundColor: "var(--ds-surface-container-high)", - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": + { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + + "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": + { + backgroundColor: "var(--ds-surface-container-high)", + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + }), + }; + } + + const colour = rawColour as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); + + if (isOutlined) { + return { + ...base, + ...(isInteractive ? getFocusOutline(focusToken) : {}), + + color: p.onContainer, + borderColor: p.light, + backgroundColor: p.container, - "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": - { - backgroundColor: "var(--ds-surface-container-high)", - boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + ...(isInteractive && { + "&:hover": { + backgroundColor: p.container, + borderColor: p.light, + boxShadow: getOverlayInset(), }, - "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": - { - backgroundColor: "var(--ds-surface-container-high)", - boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + "&:active": { + backgroundColor: p.container, + borderColor: p.light, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), }, - }), - }; - } - const colour = rawColour as IntentColour; - const p = getIntentPalette(theme, colour); - const focusToken = getFocusToken(colour); + "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": + { + backgroundColor: p.container, + borderColor: p.light, + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + + "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": + { + backgroundColor: p.container, + borderColor: p.light, + boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + }, + }), + }; + } + + const solid = p.solid ?? p.main; - if (isOutlined) { return { ...base, ...(isInteractive ? getFocusOutline(focusToken) : {}), - color: p.onContainer, - borderColor: p.light, - backgroundColor: p.container, + color: p.onSolid ?? "var(--ds-on-solid)", + backgroundColor: solid, ...(isInteractive && { "&:hover": { - backgroundColor: p.container, - borderColor: p.light, - boxShadow: getOverlayInset(), + backgroundColor: solid, + boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), }, "&:active": { - backgroundColor: p.container, - borderColor: p.light, + backgroundColor: solid, boxShadow: getOverlayInset("var(--ds-overlay-selected)"), }, "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": { - backgroundColor: p.container, - borderColor: p.light, + backgroundColor: solid, boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": { - backgroundColor: p.container, - borderColor: p.light, + backgroundColor: solid, boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, }), }; - } + }, + }, + }, + + MuiInputBase: { + styleOverrides: { + input: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + "&::placeholder": { + color: theme.palette.text.placeholder, + opacity: 1, + }, - const solid = p.solid ?? p.main; + "&::-webkit-input-placeholder": { + color: theme.palette.text.placeholder, + opacity: 1, + }, - return { - ...base, - ...(isInteractive ? getFocusOutline(focusToken) : {}), + "&::-moz-placeholder": { + color: theme.palette.text.placeholder, + opacity: 1, + }, - color: p.onSolid ?? "var(--ds-on-solid)", - backgroundColor: solid, + "&:focus::placeholder": { + color: theme.palette.text.placeholderFocus, + }, - ...(isInteractive && { - "&:hover": { - backgroundColor: solid, - boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), + "&:focus::-webkit-input-placeholder": { + color: theme.palette.text.placeholderFocus, + opacity: 1, + }, + + "&:focus::-moz-placeholder": { + color: theme.palette.text.placeholderFocus, + opacity: 1, + }, + }), + + root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + "&.Mui-error input::placeholder, &.Mui-error input::-webkit-input-placeholder, &.Mui-error input::-moz-placeholder": + { + color: theme.palette.error.light, + opacity: 1, }, - "&:active": { - backgroundColor: solid, - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + "&.Mui-disabled input::placeholder, &.Mui-disabled input::-webkit-input-placeholder, &.Mui-disabled input::-moz-placeholder": + { + color: theme.palette.text.disabled, + opacity: 1, }, + }), + }, + }, + + MuiOutlinedInput: { + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const colour = (ownerState.color ?? "primary") as IntentColour; + const p = getIntentPalette(theme, colour); + const focusToken = getFocusToken(colour); - "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": + return { + "& .MuiOutlinedInput-notchedOutline": { + borderColor: theme.palette.borders.base, + }, + + "&:hover:not(.Mui-disabled):not(.Mui-error):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": { - backgroundColor: solid, - boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + borderColor: theme.palette.borders.emphasis, }, - "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": + "&.Mui-focused:not(.Mui-disabled):not(.Mui-error) .MuiOutlinedInput-notchedOutline": { - backgroundColor: solid, - boxShadow: getOverlayInset("var(--ds-overlay-focus)"), + borderColor: p.light, + borderWidth: 2, }, - }), - }; - }, - }, - }, - MuiInputBase: { - styleOverrides: { - input: ({ theme }: ThemeOnlyArgs): CSSObject => ({ - "&::placeholder": { - color: theme.palette.text.placeholder, - opacity: 1, - }, + "&.Mui-focused:hover:not(.Mui-disabled):not(.Mui-error) .MuiOutlinedInput-notchedOutline": + { + borderColor: p.light, + borderWidth: 2, + }, - "&::-webkit-input-placeholder": { - color: theme.palette.text.placeholder, - opacity: 1, - }, + "&.Mui-error .MuiOutlinedInput-notchedOutline": { + borderColor: theme.palette.error.light, + }, - "&::-moz-placeholder": { - color: theme.palette.text.placeholder, - opacity: 1, - }, + "&.Mui-error:hover:not(.Mui-disabled):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": + { + borderColor: theme.palette.error.light, + }, - "&:focus::placeholder": { - color: theme.palette.text.placeholderFocus, - }, + "&.Mui-error.Mui-focused .MuiOutlinedInput-notchedOutline": { + borderColor: theme.palette.error.light, + borderWidth: 2, + }, - "&:focus::-webkit-input-placeholder": { - color: theme.palette.text.placeholderFocus, - opacity: 1, - }, + "&.Mui-focusVisible": { + outline: "var(--ds-focus-ring-width) solid", + outlineColor: focusToken, + outlineOffset: "var(--ds-focus-ring-offset)", + }, - "&:focus::-moz-placeholder": { - color: theme.palette.text.placeholderFocus, - opacity: 1, + "&.Mui-disabled .MuiOutlinedInput-notchedOutline": { + borderColor: "var(--ds-border-subtle)", + }, + }; }, - }), + }, + }, - root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ - "&.Mui-error input::placeholder, &.Mui-error input::-webkit-input-placeholder, &.Mui-error input::-moz-placeholder": - { - color: theme.palette.error.light, - opacity: 1, + MuiInputLabel: { + styleOverrides: { + root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + "&:not(.MuiInputLabel-shrink)": { + color: theme.palette.text.secondary, }, - "&.Mui-disabled input::placeholder, &.Mui-disabled input::-webkit-input-placeholder, &.Mui-disabled input::-moz-placeholder": - { + "&.Mui-disabled:not(.MuiInputLabel-shrink)": { color: theme.palette.text.disabled, - opacity: 1, }, - }), - }, - }, - MuiOutlinedInput: { - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const colour = (ownerState.color ?? "primary") as IntentColour; - const p = getIntentPalette(theme, colour); - const focusToken = getFocusToken(colour); - - return { - "& .MuiOutlinedInput-notchedOutline": { - borderColor: theme.palette.borders.base, + "&.Mui-focused": { + color: theme.palette.primary.main, }, - "&:hover:not(.Mui-disabled):not(.Mui-error):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": - { - borderColor: theme.palette.borders.emphasis, - }, - - "&.Mui-focused:not(.Mui-disabled):not(.Mui-error) .MuiOutlinedInput-notchedOutline": - { - borderColor: p.light, - borderWidth: 2, - }, + "&.Mui-focused.MuiFormLabel-colorSecondary": { + color: theme.palette.secondary.main, + }, - "&.Mui-focused:hover:not(.Mui-disabled):not(.Mui-error) .MuiOutlinedInput-notchedOutline": - { - borderColor: p.light, - borderWidth: 2, - }, + "&.Mui-focused.MuiFormLabel-colorSuccess": { + color: theme.palette.success.main, + }, - "&.Mui-error .MuiOutlinedInput-notchedOutline": { - borderColor: theme.palette.error.light, + "&.Mui-focused.MuiFormLabel-colorWarning": { + color: theme.palette.warning.main, }, - "&.Mui-error:hover:not(.Mui-disabled):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": - { - borderColor: theme.palette.error.light, - }, + "&.Mui-focused.MuiFormLabel-colorError": { + color: theme.palette.error.main, + }, - "&.Mui-error.Mui-focused .MuiOutlinedInput-notchedOutline": { - borderColor: theme.palette.error.light, - borderWidth: 2, + "&.Mui-focused.MuiFormLabel-colorInfo": { + color: theme.palette.info.main, }, - "&.Mui-focusVisible": { - outline: "var(--ds-focus-ring-width) solid", - outlineColor: focusToken, - outlineOffset: "var(--ds-focus-ring-offset)", + "&.Mui-focused.Mui-error": { + color: theme.palette.error.main, }, - "&.Mui-disabled .MuiOutlinedInput-notchedOutline": { - borderColor: "var(--ds-border-subtle)", + "&.Mui-disabled": { + color: theme.palette.text.disabled, }, - }; + }), }, }, - }, - MuiInputLabel: { - styleOverrides: { - root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ - "&:not(.MuiInputLabel-shrink)": { + MuiTab: { + styleOverrides: { + root: ({ theme }: OverrideArgs): CSSObject => ({ + textTransform: "none", color: theme.palette.text.secondary, - }, - - "&.Mui-disabled:not(.MuiInputLabel-shrink)": { - color: theme.palette.text.disabled, - }, - - "&.Mui-focused": { - color: theme.palette.primary.main, - }, - - "&.Mui-focused.MuiFormLabel-colorSecondary": { - color: theme.palette.secondary.main, - }, - - "&.Mui-focused.MuiFormLabel-colorSuccess": { - color: theme.palette.success.main, - }, - - "&.Mui-focused.MuiFormLabel-colorWarning": { - color: theme.palette.warning.main, - }, - - "&.Mui-focused.MuiFormLabel-colorError": { - color: theme.palette.error.main, - }, - - "&.Mui-focused.MuiFormLabel-colorInfo": { - color: theme.palette.info.main, - }, - - "&.Mui-focused.Mui-error": { - color: theme.palette.error.main, - }, - - "&.Mui-disabled": { - color: theme.palette.text.disabled, - }, - }), - }, - }, + fontWeight: 500, + minHeight: 44, - MuiTab: { - styleOverrides: { - root: ({ theme }: OverrideArgs): CSSObject => ({ - textTransform: "none", - color: theme.palette.text.secondary, - fontWeight: 500, - minHeight: 44, - - "&:hover": { - color: theme.palette.text.primary, - boxShadow: getOverlayInset(), - }, + "&:hover": { + color: theme.palette.text.primary, + boxShadow: getOverlayInset(), + }, - "&.Mui-selected": { - color: theme.palette.primary.main, - fontWeight: 600, - }, + "&.Mui-selected": { + color: theme.palette.primary.main, + fontWeight: 600, + }, - "&.Mui-disabled": { - color: theme.palette.text.disabled, - }, + "&.Mui-disabled": { + color: theme.palette.text.disabled, + }, - "&.Mui-focusVisible, &:focus-visible": { - outline: "var(--ds-focus-ring-width) solid var(--ds-focus-ring)", - outlineOffset: "-2px", - }, - }), + "&.Mui-focusVisible, &:focus-visible": { + outline: "var(--ds-focus-ring-width) solid var(--ds-focus-ring)", + outlineOffset: "-2px", + }, + }), + }, }, - }, - - MuiAlert: { - styleOverrides: { - root: ({ ownerState, theme }: OverrideArgs): CSSObject => { - const severity = (ownerState.severity ?? "success") as IntentColour; - const p = getIntentPalette(theme, severity); - const common: CSSObject = { - borderRadius: 8, - alignItems: "flex-start", - - "& .MuiAlert-icon": { - color: "currentColor", - opacity: 1, - }, + MuiAlert: { + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const severity = (ownerState.severity ?? "success") as IntentColour; + const p = getIntentPalette(theme, severity); + + const common: CSSObject = { + borderRadius: 8, + alignItems: "flex-start", + + "& .MuiAlert-icon": { + color: "currentColor", + opacity: 1, + }, - "& .MuiAlert-action": { - color: "inherit", + "& .MuiAlert-action": { + color: "inherit", - "& .MuiIconButton-root:hover": { - boxShadow: getOverlayInset(), + "& .MuiIconButton-root:hover": { + boxShadow: getOverlayInset(), + }, }, - }, - }; - - if (ownerState.variant === "filled") { - return { - ...common, - backgroundColor: p.solid ?? p.main, - color: p.onSolid ?? "var(--ds-on-solid)", }; - } - if (ownerState.variant === "outlined") { + if (ownerState.variant === "filled") { + return { + ...common, + backgroundColor: p.solid ?? p.main, + color: p.onSolid ?? "var(--ds-on-solid)", + }; + } + + if (ownerState.variant === "outlined") { + return { + ...common, + backgroundColor: p.container, + color: p.onContainer, + border: `1px solid ${p.light}`, + }; + } + return { ...common, backgroundColor: p.container, color: p.onContainer, - border: `1px solid ${p.light}`, + border: "1px solid var(--ds-border-subtle)", }; - } - - return { - ...common, - backgroundColor: p.container, - color: p.onContainer, - border: "1px solid var(--ds-border-subtle)", - }; + }, }, }, - }, - MuiLinearProgress: { - styleOverrides: { - root: { - height: 6, - borderRadius: 999, - overflow: "hidden", - backgroundColor: "var(--ds-surface-container-high)", - }, + MuiLinearProgress: { + styleOverrides: { + root: { + height: 6, + borderRadius: 999, + overflow: "hidden", + backgroundColor: "var(--ds-surface-container-high)", + }, - bar: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const colour = (ownerState.color ?? "primary") as IntentColour; - const p = getIntentPalette(theme, colour); + bar: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const colour = (ownerState.color ?? "primary") as IntentColour; + const p = getIntentPalette(theme, colour); - return { - backgroundColor: p.main, - }; + return { + backgroundColor: p.main, + }; + }, }, }, - }, - MuiCircularProgress: { - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const colour = (ownerState.color ?? "primary") as IntentColour; - const p = getIntentPalette(theme, colour); - - return { - color: p.main, - }; + MuiCircularProgress: { + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const colour = (ownerState.color ?? "primary") as IntentColour; + const p = getIntentPalette(theme, colour); + + return { + color: p.main, + }; + }, }, }, - }, - MuiSkeleton: { - styleOverrides: { - root: { - backgroundColor: "var(--ds-surface-container-high)", - }, + MuiSkeleton: { + styleOverrides: { + root: { + backgroundColor: "var(--ds-surface-container-high)", + }, - wave: { - backgroundColor: "var(--ds-surface-container-high)", - position: "relative", - overflow: "hidden", - - "&::after": { - content: '""', - position: "absolute", - inset: 0, - transform: "translateX(-100%)", - backgroundImage: - "linear-gradient(90deg, transparent, var(--ds-overlay-hover), transparent)", + wave: { + backgroundColor: "var(--ds-surface-container-high)", + position: "relative", + overflow: "hidden", + + "&::after": { + content: '""', + position: "absolute", + inset: 0, + transform: "translateX(-100%)", + backgroundImage: + "linear-gradient(90deg, transparent, var(--ds-overlay-hover), transparent)", + }, }, }, }, - }, - MuiSnackbar: { - styleOverrides: { - root: { - "& .MuiSnackbarContent-root, & .MuiAlert-root": { - minWidth: 320, - maxWidth: 560, + MuiSnackbar: { + styleOverrides: { + root: { + "& .MuiSnackbarContent-root, & .MuiAlert-root": { + minWidth: 320, + maxWidth: 560, + }, }, }, }, - }, - MuiSnackbarContent: { - styleOverrides: { - root: { - backgroundColor: "var(--ds-surface-container)", - color: "var(--ds-on-surface)", - border: "1px solid var(--ds-border-subtle)", - borderRadius: 8, - }, + MuiSnackbarContent: { + styleOverrides: { + root: { + backgroundColor: "var(--ds-surface-container)", + color: "var(--ds-on-surface)", + border: "1px solid var(--ds-border-subtle)", + borderRadius: 8, + }, - message: { - padding: "8px 0", - }, + message: { + padding: "8px 0", + }, - action: { - color: "inherit", + action: { + color: "inherit", - "& .MuiIconButton-root:hover": { - boxShadow: getOverlayInset(), + "& .MuiIconButton-root:hover": { + boxShadow: getOverlayInset(), + }, }, }, }, - }, - MuiCheckbox: { - defaultProps: { - disableRipple: true, - }, - styleOverrides: { - root: ({ - ownerState, - theme, - }: OverrideArgs): CSSObject => { - const rawColour = ownerState.color ?? "primary"; - const isDefault = rawColour === "default"; - const colour = rawColour as IntentColour; - - const p = !isDefault ? getIntentPalette(theme, colour) : null; - const focusToken = !isDefault ? getFocusToken(colour) : undefined; - - return { - color: "var(--ds-on-surface-variant)", - borderRadius: 8, + MuiCheckbox: { + defaultProps: { + disableRipple: true, + }, + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const rawColour = ownerState.color ?? "primary"; + const isDefault = rawColour === "default"; + const colour = rawColour as IntentColour; + + const p = !isDefault ? getIntentPalette(theme, colour) : null; + const focusToken = !isDefault ? getFocusToken(colour) : undefined; - "&:hover": { - backgroundColor: "var(--ds-overlay-hover)", - }, + return { + color: "var(--ds-on-surface-variant)", + borderRadius: 8, - ...getFocusOutline(focusToken), + "&:hover": { + backgroundColor: "var(--ds-overlay-hover)", + }, - "&.Mui-checked": { - color: isDefault ? "var(--ds-on-surface)" : p?.main, - }, + ...getFocusOutline(focusToken), - "&.MuiCheckbox-indeterminate": { - color: isDefault ? "var(--ds-on-surface)" : p?.main, - }, + "&.Mui-checked": { + color: isDefault ? "var(--ds-on-surface)" : p?.main, + }, - "&.Mui-disabled": { - color: "var(--ds-action-disabled)", - }, - }; - }, - }, - }, + "&.MuiCheckbox-indeterminate": { + color: isDefault ? "var(--ds-on-surface)" : p?.main, + }, - MuiRadio: { - defaultProps: { - disableRipple: true, + "&.Mui-disabled": { + color: "var(--ds-action-disabled)", + }, + }; + }, + }, }, - styleOverrides: { - root: ({ ownerState, theme }: OverrideArgs): CSSObject => { - const rawColour = ownerState.color ?? "primary"; - const isDefault = rawColour === "default"; - const colour = rawColour as IntentColour; - const p = !isDefault ? getIntentPalette(theme, colour) : null; - const focusToken = !isDefault ? getFocusToken(colour) : undefined; + MuiRadio: { + defaultProps: { + disableRipple: true, + }, + styleOverrides: { + root: ({ + ownerState, + theme, + }: OverrideArgs): CSSObject => { + const rawColour = ownerState.color ?? "primary"; + const isDefault = rawColour === "default"; + const colour = rawColour as IntentColour; + + const p = !isDefault ? getIntentPalette(theme, colour) : null; + const focusToken = !isDefault ? getFocusToken(colour) : undefined; - return { - color: "var(--ds-on-surface-variant)", - borderRadius: "50%", + return { + color: "var(--ds-on-surface-variant)", + borderRadius: "50%", - "&:hover": { - backgroundColor: "var(--ds-overlay-hover)", - }, + "&:hover": { + backgroundColor: "var(--ds-overlay-hover)", + }, - ...getFocusOutline(focusToken), + ...getFocusOutline(focusToken), - "&.Mui-checked": { - color: isDefault ? "var(--ds-on-surface)" : p?.main, - }, + "&.Mui-checked": { + color: isDefault ? "var(--ds-on-surface)" : p?.main, + }, - "&.Mui-disabled": { - color: "var(--ds-action-disabled)", - }, - }; + "&.Mui-disabled": { + color: "var(--ds-action-disabled)", + }, + }; + }, }, }, }, - }, -}); + }); + + return createTheme(DiamondDSThemeOptions); +}; + +// Convenience exports — derive from the factory so they stay in sync. +export const DiamondDSTheme = createDiamondTheme("light"); +export const DiamondDSThemeDark = createDiamondTheme("dark"); -export const DiamondDSTheme = createTheme(DiamondDSThemeOptions); +// Keep the old export name as an alias for backwards compatibility. +export const createMuiTheme = createDiamondTheme; diff --git a/src/themes/ThemeProvider.tsx b/src/themes/ThemeProvider.tsx index a4badc84..56d306b1 100644 --- a/src/themes/ThemeProvider.tsx +++ b/src/themes/ThemeProvider.tsx @@ -1,26 +1,37 @@ -import { ThemeProvider as MuiThemeProvider } from "@mui/material/styles"; +import React, { useLayoutEffect, useMemo } from "react"; import { CssBaseline } from "@mui/material"; -import { GenericTheme } from "./GenericTheme"; -import { ThemeProviderProps as MuiThemeProviderProps } from "@mui/material/styles"; +import { ThemeProvider as MuiThemeProvider } from "@mui/material/styles"; +import type { ThemeProviderProps as MuiThemeProviderProps } from "@mui/material/styles"; +import { createMuiTheme } from "./DiamondDSTheme"; +import type { DSMode } from "./DiamondDSTheme"; interface ThemeProviderProps extends Partial { baseline?: boolean; + mode?: DSMode; // 'light' | 'dark' (adding 'system' for future use) } -const ThemeProvider = function ({ +export function ThemeProvider({ children, - theme = GenericTheme, baseline = true, defaultMode = "system", + mode = "light", // default to light mode (for now) ...props }: ThemeProviderProps) { + useLayoutEffect(() => { + const root = document.documentElement; + + root.setAttribute("data-mode", mode); + root.classList.toggle("dark", mode === "dark"); + root.classList.toggle("light", mode === "light"); + root.style.colorScheme = mode; + }, [mode]); + + const theme = useMemo(() => createMuiTheme(mode), [mode]); + return ( {baseline && } {children} ); -}; - -export { ThemeProvider }; -export type { ThemeProviderProps }; +} From d4ca62c8d951fe9e7d0baeb4e486609e8b0e901a Mon Sep 17 00:00:00 2001 From: Zohar Manor-Abel Date: Tue, 12 May 2026 14:36:00 +0100 Subject: [PATCH 8/9] Introduced back System settings option and a way to switch to it --- .storybook/ThemeSwapper.tsx | 32 ++++++--- .storybook/preview.tsx | 84 +++++++++++++++-------- src/styles/diamondDS/diamond-ds-roles.css | 6 +- 3 files changed, 81 insertions(+), 41 deletions(-) diff --git a/.storybook/ThemeSwapper.tsx b/.storybook/ThemeSwapper.tsx index 99634d0f..e7a3f8b8 100644 --- a/.storybook/ThemeSwapper.tsx +++ b/.storybook/ThemeSwapper.tsx @@ -1,6 +1,5 @@ -import { useColorScheme } from "@mui/material"; +import { useColorScheme } from "@mui/material/styles"; import * as React from "react"; -import { useEffect } from "react"; interface Globals { theme: string; @@ -18,20 +17,35 @@ export interface ThemeSwapperProps { export const TextLight = "Mode: Light"; export const TextDark = "Mode: Dark"; +export const TextSystem = "Mode: System"; const ThemeSwapper = ({ context, children }: ThemeSwapperProps) => { - const { mode, setMode } = useColorScheme(); + const { mode, systemMode, setMode } = useColorScheme(); - useEffect(() => { - const selectedThemeMode = context.globals.themeMode || TextLight; - const nextMode = selectedThemeMode === TextLight ? "light" : "dark"; + React.useEffect(() => { + const selectedThemeMode = context.globals.themeMode || TextSystem; - setMode(nextMode); - document.documentElement.setAttribute("data-mode", nextMode); + if (selectedThemeMode === TextLight) { + setMode("light"); + return; + } + + if (selectedThemeMode === TextDark) { + setMode("dark"); + return; + } + + setMode("system"); }, [context.globals.themeMode, setMode]); + const resolvedMode = mode === "system" ? systemMode : mode; + return ( -
+
{children}
); diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index a46c2aa7..5eab3b85 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -1,6 +1,6 @@ import React, { useLayoutEffect } from "react"; -import { CssBaseline } from "@mui/material"; import type { Preview } from "@storybook/react"; + import { ThemeProvider } from "../src"; import { GenericTheme, @@ -8,22 +8,45 @@ import { DiamondDSTheme, DiamondDSThemeDark, } from "../src"; -import { Context, ThemeSwapper, TextLight, TextDark } from "./ThemeSwapper"; + +import { + Context, + ThemeSwapper, + TextDark, + TextLight, + TextSystem, +} from "./ThemeSwapper"; const TextThemeBase = "Theme: Generic"; const TextThemeDiamond = "Theme: Diamond"; +const TextThemeDiamondDS = "Theme: Diamond DS"; + +function resolveThemeMode( + selectedThemeMode: string, +): "light" | "dark" | "system" { + if (selectedThemeMode === TextLight) return "light"; + if (selectedThemeMode === TextDark) return "dark"; -const TextThemeDiamondDS = "Theme: DiamondDS"; + return "system"; +} + +function getSystemMode(): "light" | "dark" { + return window.matchMedia?.("(prefers-color-scheme: dark)").matches + ? "dark" + : "light"; +} -function resolveTheme(selectedTheme: string, mode: "light" | "dark") { +function resolveTheme(selectedTheme: string, resolvedMode: "light" | "dark") { switch (selectedTheme) { case TextThemeBase: return GenericTheme; - case TextThemeDiamondDS: - return mode === "dark" ? DiamondDSThemeDark : DiamondDSTheme; + case TextThemeDiamond: - default: return DiamondTheme; + + case TextThemeDiamondDS: + default: + return resolvedMode === "dark" ? DiamondDSThemeDark : DiamondDSTheme; } } @@ -35,13 +58,11 @@ function ApplyModeToPreviewDoc({ doc: Document; }) { useLayoutEffect(() => { - const root = doc.documentElement; // - root.setAttribute("data-mode", mode); + const root = doc.documentElement; - // Optional: keep class too if your CSS supports it + root.setAttribute("data-mode", mode); root.classList.toggle("dark", mode === "dark"); root.classList.toggle("light", mode === "light"); - root.style.colorScheme = mode; }, [mode, doc]); @@ -56,28 +77,27 @@ export const decorators = [
); }, - (StoriesWithThemeSwapping: React.FC, context: Context) => { - return ( - - - - ); - }, + (StoriesWithThemeProvider: React.FC, context: Context) => { - const selectedTheme = context.globals.theme || TextThemeBase; - const selectedThemeMode = context.globals.themeMode || TextLight; - const mode = selectedThemeMode === TextLight ? "light" : "dark"; + const selectedTheme = context.globals.theme || TextThemeDiamondDS; + const selectedThemeMode = context.globals.themeMode || TextSystem; + + const defaultMode = resolveThemeMode(selectedThemeMode); + const resolvedMode = + defaultMode === "system" ? getSystemMode() : defaultMode; - // ensure we target the preview iframe document const doc: Document = context?.canvasElement?.ownerDocument ?? document; + return ( - - - + + + + + ); }, @@ -94,20 +114,23 @@ const preview: Preview = { dynamicTitle: true, }, }, + themeMode: { description: "Global theme mode for components", toolbar: { - title: "Theme Mode", + title: "Theme mode", icon: "mirror", - items: [TextLight, TextDark], + items: [TextLight, TextDark, TextSystem], dynamicTitle: true, }, }, }, + initialGlobals: { theme: TextThemeDiamondDS, - themeMode: TextLight, + themeMode: TextSystem, }, + parameters: { controls: { matchers: { @@ -132,6 +155,7 @@ const preview: Preview = { }, }, }, + argTypes: { linkComponent: { control: false, diff --git a/src/styles/diamondDS/diamond-ds-roles.css b/src/styles/diamondDS/diamond-ds-roles.css index 4c826945..fb0fe46e 100644 --- a/src/styles/diamondDS/diamond-ds-roles.css +++ b/src/styles/diamondDS/diamond-ds-roles.css @@ -12,7 +12,8 @@ } :root, -:root[data-mode="light"] { +:root[data-mode="light"], +:root.light { /* Neutral */ --ds-background: #f6f6f9; @@ -201,7 +202,8 @@ --ds-focus-ring-highlight: var(--ds-highlight-accent); } -:root[data-mode="dark"] { +:root[data-mode="dark"], +:root.dark { /* Neutral */ --ds-background: #0e1017; From fa6200249a823c298f0d6816c669d66d405832e4 Mon Sep 17 00:00:00 2001 From: Zohar Manor-Abel Date: Tue, 12 May 2026 14:36:11 +0100 Subject: [PATCH 9/9] Update DiamondDS theme documentation and brand roles - document theme architecture and semantic token model - simplified repeated conventions across intents - clarify action intent, status intent, and brand usage - add dedicated BrandPaletteColor typing with fixed brand roles - improve helper documentation and component override comments - keep CSS variables as the source of truth for theme roles - remove global Paper override - update theme colours to use grey primitives --- src/styles/diamondDS/diamond-ds-roles.css | 108 ++-- src/themes/DiamondDSTheme.ts | 664 ++++++++++++++-------- 2 files changed, 494 insertions(+), 278 deletions(-) diff --git a/src/styles/diamondDS/diamond-ds-roles.css b/src/styles/diamondDS/diamond-ds-roles.css index fb0fe46e..79f583f2 100644 --- a/src/styles/diamondDS/diamond-ds-roles.css +++ b/src/styles/diamondDS/diamond-ds-roles.css @@ -1,4 +1,5 @@ :root { + /* Neutral primitives */ --ds-grey-50: #f8f8fa; --ds-grey-100: #eef1f5; --ds-grey-200: #e6e9f0; @@ -9,25 +10,35 @@ --ds-grey-700: #505563; --ds-grey-800: #2c3140; --ds-grey-900: #1a1c23; + + --ds-grey-dark-50: #e8eaf0; + --ds-grey-dark-100: #b6bcc9; + --ds-grey-dark-200: #7c8394; + --ds-grey-dark-300: #505664; + --ds-grey-dark-400: #3a3f4c; + --ds-grey-dark-500: #2c3140; + --ds-grey-dark-600: #222632; + --ds-grey-dark-700: #161820; + --ds-grey-dark-800: #0e1017; } +/* Light mode semantic roles */ :root, :root[data-mode="light"], :root.light { - /* Neutral */ - + /* Neutral roles */ --ds-background: #f6f6f9; --ds-background-channel: 246 246 249; --ds-surface: #ffffff; --ds-surface-channel: 255 255 255; - --ds-surface-container: #eef1f5; - --ds-surface-container-high: #e6e9f0; + --ds-surface-container: var(--ds-grey-100); + --ds-surface-container-high: var(--ds-grey-200); --ds-surface-disabled: rgba(0, 0, 0, 0.08); - --ds-on-surface: #1a1c23; - --ds-on-surface-variant: #5e6473; + --ds-on-surface: var(--ds-grey-900); + --ds-on-surface-variant: var(--ds-grey-700); --ds-on-surface-disabled: rgba(0, 0, 0, 0.36); --ds-action-disabled: rgba(0, 0, 0, 0.3); --ds-on-solid: #ffffff; @@ -35,19 +46,34 @@ --ds-on-surface-channel: 26 28 35; --ds-on-surface-variant-channel: 80 85 99; - --ds-placeholder: #8a90a0; - --ds-placeholder-focus: #505563; + --ds-placeholder: var(--ds-grey-600); + --ds-placeholder-focus: var(--ds-grey-700); - --ds-border-subtle: #dde1e8; - --ds-border: #bcc2cd; - --ds-border-emphasis: #a5acb8; + --ds-border-subtle: var(--ds-grey-300); + --ds-border: var(--ds-grey-400); + --ds-border-emphasis: var(--ds-grey-500); - /* Overlay */ + /* Interaction overlays + * + * Overlays are layered on top of semantic surfaces rather than replacing them. + */ --ds-overlay-hover: rgba(0, 0, 0, 0.08); --ds-overlay-hover-solid: rgba(0, 0, 0, 0.16); --ds-overlay-selected: rgba(0, 0, 0, 0.25); --ds-overlay-focus: rgba(0, 0, 0, 0.1); + /* Intent semantic roles + * + * Used for action hierarchy and status meaning. + * + * Scale logic: + * - accent = lighter/supporting emphasis + * - main = default semantic role + * - emphasis = stronger emphasis + * - container = subtle surface + * - solid = filled surface + */ + /* Primary (Indigo-Blue) */ --ds-primary: #2a4db8; --ds-on-primary: #ffffff; @@ -78,7 +104,10 @@ --ds-secondary-lightChannel: 39 173 183; --ds-secondary-darkChannel: 0 95 103; - /* Tertiary (Violet) */ + /* Tertiary (Violet) + * + * Available as a token family but not currently exposed as a MUI intent colour. + */ --ds-tertiary: #8c0070; --ds-on-tertiary: #ffffff; --ds-tertiary-emphasis: #6c0057; @@ -103,6 +132,11 @@ --ds-brand-solid: #2f3b63; --ds-on-brand-solid: #ffffff; + /* Fixed brand roles + * + * These remain stable across light and dark mode. + * Use sparingly for persistent Diamond identity surfaces or accents. + */ --ds-brand-fixed: #202945; --ds-brand-fixed-dim: #586084; --ds-on-brand-fixed: #ffffff; @@ -172,7 +206,10 @@ --ds-info-lightChannel: 111 143 232; --ds-info-darkChannel: 42 78 167; - /* Highlight */ + /* Highlight + * + * Available as a token family but not currently exposed as a MUI intent colour. + */ --ds-highlight: #d4a900; --ds-on-highlight: #1a1c23; --ds-highlight-emphasis: #b89300; @@ -187,37 +224,32 @@ --ds-highlight-lightChannel: 255 216 77; --ds-highlight-darkChannel: 184 147 0; - /* Focus */ + /* Focus roles */ --ds-focus-ring: var(--ds-primary-accent); --ds-focus-ring-width: 2px; --ds-focus-ring-offset: 2px; - - --ds-focus-ring-primary: var(--ds-primary-accent); - --ds-focus-ring-secondary: var(--ds-secondary-accent); - --ds-focus-ring-danger: var(--ds-danger-accent); - --ds-focus-ring-warning: var(--ds-warning-accent); - --ds-focus-ring-success: var(--ds-success-accent); - --ds-focus-ring-info: var(--ds-info-accent); - --ds-focus-ring-brand: var(--ds-brand-accent); - --ds-focus-ring-highlight: var(--ds-highlight-accent); } +/** + * Dark mode semantic roles. + * + * Values are tuned for dark surfaces rather than mechanically inverted from light mode. + */ :root[data-mode="dark"], :root.dark { - /* Neutral */ - - --ds-background: #0e1017; + /* Neutral roles */ + --ds-background: var(--ds-grey-dark-800); --ds-background-channel: 14 16 23; - --ds-surface: #161820; + --ds-surface: var(--ds-grey-dark-700); --ds-surface-channel: 22 24 32; - --ds-surface-container: #222632; - --ds-surface-container-high: #2c3140; + --ds-surface-container: var(--ds-grey-dark-600); + --ds-surface-container-high: var(--ds-grey-dark-500); --ds-surface-disabled: rgba(255, 255, 255, 0.14); - --ds-on-surface: #e8eaf0; - --ds-on-surface-variant: #b6bcc9; + --ds-on-surface: var(--ds-grey-dark-50); + --ds-on-surface-variant: var(--ds-grey-dark-100); --ds-on-surface-disabled: rgba(255, 255, 255, 0.36); --ds-action-disabled: rgba(255, 255, 255, 0.3); --ds-on-solid: #ffffff; @@ -225,14 +257,14 @@ --ds-on-surface-channel: 232 234 240; --ds-on-surface-variant-channel: 182 188 201; - --ds-placeholder: #7a8191; - --ds-placeholder-focus: #b6bcc9; + --ds-placeholder: var(--ds-grey-dark-200); + --ds-placeholder-focus: var(--ds-grey-dark-100); - --ds-border-subtle: #3a3f4c; - --ds-border: #505664; - --ds-border-emphasis: #7c8394; + --ds-border-subtle: var(--ds-grey-dark-400); + --ds-border: var(--ds-grey-dark-300); + --ds-border-emphasis: var(--ds-grey-dark-200); - /* Overlay */ + /* Interaction overlays */ --ds-overlay-hover: rgba(255, 255, 255, 0.16); --ds-overlay-hover-solid: rgba(255, 255, 255, 0.16); --ds-overlay-selected: rgba(255, 255, 255, 0.12); diff --git a/src/themes/DiamondDSTheme.ts b/src/themes/DiamondDSTheme.ts index 9d6eb70b..b94276ad 100644 --- a/src/themes/DiamondDSTheme.ts +++ b/src/themes/DiamondDSTheme.ts @@ -1,9 +1,25 @@ +/** + * DiamondDS MUI theme + * + * Maps DiamondDS semantic design tokens and interaction rules into MUI's + * theme system, component model and runtime styling APIs. + * + * CSS variables remain the source of truth. + * The MUI theme acts as the semantic adapter consumed by components. + * + * Components should consume semantic roles from the theme or semantic CSS + * variables rather than raw colour values. + */ import "../styles/diamondDS/diamond-ds-roles.css"; +// Enables `theme.vars` typings for MUI CSS variable themes. import type {} from "@mui/material/themeCssVarsAugmentation"; import { createTheme } from "@mui/material/styles"; import type { CSSObject, Theme } from "@mui/material/styles"; +/** + * Component prop types are used to type `ownerState` inside MUI style overrides. + */ import type { AlertProps } from "@mui/material/Alert"; import type { ButtonProps } from "@mui/material/Button"; import type { CheckboxProps } from "@mui/material/Checkbox"; @@ -20,47 +36,109 @@ import logoImageLight from "../public/diamond/logo-light.svg"; import logoImageDark from "../public/diamond/logo-dark.svg"; import logoShort from "../public/diamond/logo-short.svg"; +/** + * Standard argument shape for MUI style override callbacks. + * + * `ownerState` is MUI's current component prop/state snapshot. + */ type OverrideArgs = { ownerState: OwnerState; theme: Theme; }; +/** + * Theme-only argument shape for MUI style overrides. + */ type ThemeOnlyArgs = { theme: Theme; }; -type IntentColour = - | "primary" - | "secondary" - | "error" - | "warning" - | "info" - | "success"; - +/** + * Canonical list of supported DiamondDS intent colours. + * + * DiamondDS supports: + * - action intents: primary, secondary + * - status intents: success, warning, error, info + * + * Intent colours communicate hierarchy, meaning and state through component + * APIs such as `color="primary"` or `color="error"`. + * + * Brand is intentionally excluded. Brand communicates Diamond identity rather + * than behaviour or status. + */ +const intentColours = [ + "primary", + "secondary", + "error", + "warning", + "info", + "success", +] as const; + +type IntentColour = (typeof intentColours)[number]; + +/** + * Internal DiamondDS palette contract. + * + * Every supported intent colour must provide the roles needed for text, + * container, solid and interaction states. MUI's public palette option types + * remain partial, but DiamondDS helpers use this stricter resolved contract. + */ type ExtendedPaletteColor = { - light?: string; - main?: string; - dark?: string; - contrastText?: string; - mainChannel?: string; - lightChannel?: string; - darkChannel?: string; - contrastTextChannel?: string; - container?: string; - onContainer?: string; - solid?: string; - onSolid?: string; + light: string; + main: string; + dark: string; + contrastText: string; + mainChannel: string; + lightChannel: string; + darkChannel: string; + contrastTextChannel: string; + container: string; + onContainer: string; + solid: string; + onSolid: string; }; -type IntentPaletteRecord = Partial>; +type BrandPaletteColor = ExtendedPaletteColor & { + /** + * Fixed brand roles stay stable across light and dark mode. + * + * Use for persistent Diamond identity surfaces or accents only. + */ + fixed: string; + fixedDim: string; + onFixed: string; +}; +type BrandPaletteOptions = Partial; + +/** + * Strict DiamondDS intent palette map. + * + * Every supported intent colour must provide the full semantic role set. + */ +type IntentPaletteRecord = Record; + +/** + * Theme shape used by DiamondDS intent helpers. + * + * `theme.palette` is treated as the resolved strict contract. + * `theme.vars.palette` remains partial because MUI controls CSS variable + * resolution. + */ type ThemeWithIntentPalette = Theme & { vars?: { - palette?: IntentPaletteRecord; + palette?: Partial>>; }; palette: Theme["palette"] & IntentPaletteRecord; }; +/** + * MUI theme augmentation for DiamondDS semantic roles. + * + * CSS variables remain the source of truth. These typings expose DiamondDS + * text, surface, border and palette roles through the MUI theme API. + */ declare module "@mui/material/styles" { interface TypeBackground { default: string; @@ -86,20 +164,45 @@ declare module "@mui/material/styles" { } interface Palette { - brand?: PaletteColor; + /** + * Brand is an identity/accent colour, not an intent colour. + * + * Use it for Diamond recognition, product identity and selected visual + * accents. Avoid using it as a general status or behaviour signal. + */ + brand?: BrandPaletteColor; + + /** Neutral border roles used for structure, not meaning. */ borders: { subtle: string; base: string; emphasis: string; }; + + /** Neutral surface roles used to create hierarchy without semantic state. */ surface: { subtle: string; strong: string; }; } + /** + * Theme authoring interface. + * + * Unlike the resolved runtime palette, theme options remain intentionally + * partial so themes can provide only the values they need to override. + * + * DiamondDS extends MUI's palette options with: + * - brand identity roles + * - semantic border roles + * - semantic surface roles + * + * The stricter runtime intent contract is enforced separately through + * IntentPaletteRecord and ExtendedPaletteColor. + */ interface PaletteOptions { - brand?: SimplePaletteColorOptions; + brand?: BrandPaletteOptions; + borders?: { subtle?: string; base?: string; @@ -136,35 +239,156 @@ declare module "@mui/material/styles" { export type DSMode = "light" | "dark"; -// --- Helpers --- +// --- Semantic palette and interaction helpers --- + +const isIntentColour = (colour: unknown): colour is IntentColour => + typeof colour === "string" && intentColours.includes(colour as IntentColour); + +/** + * Creates a DiamondDS semantic palette entry from a token namespace. + * + * CSS variables remain the source of truth. The MUI palette is an adapter layer + * that lets component overrides use stable semantic names instead of repeating + * raw `var(--ds-*)` references everywhere. + * + * MUI mapping follows the DiamondDS/Radix-style role logic: + * - light -> accent / focus-adjacent role + * - main -> default semantic colour + * - dark -> stronger emphasis role (not simply a darker colour) + * - container -> subtle semantic surface + * - onContainer -> foreground on subtle semantic surface + * - solid -> filled interactive surface + * - onSolid -> foreground on filled interactive surface + */ +const createPaletteColour = (tokenName: string): ExtendedPaletteColor => ({ + light: `var(--ds-${tokenName}-accent)`, + main: `var(--ds-${tokenName})`, + dark: `var(--ds-${tokenName}-emphasis)`, + contrastText: `var(--ds-on-${tokenName})`, + container: `var(--ds-${tokenName}-container)`, + onContainer: `var(--ds-on-${tokenName}-container)`, + solid: `var(--ds-${tokenName}-solid)`, + onSolid: `var(--ds-on-${tokenName}-solid)`, + + contrastTextChannel: `var(--ds-on-${tokenName}-channel)`, + mainChannel: `var(--ds-${tokenName}-mainChannel)`, + lightChannel: `var(--ds-${tokenName}-lightChannel)`, + darkChannel: `var(--ds-${tokenName}-darkChannel)`, +}); + +/** + * Creates the DiamondDS brand palette. + * + * Brand includes the regular semantic palette roles plus fixed brand roles. + * Fixed roles remain stable across light and dark mode and should only be used + * for persistent Diamond identity surfaces or accents. + */ +const createBrandPaletteColour = (): BrandPaletteColor => ({ + ...createPaletteColour("brand"), + + fixed: "var(--ds-brand-fixed)", + fixedDim: "var(--ds-brand-fixed-dim)", + onFixed: "var(--ds-on-brand-fixed)", +}); +/** + * MUI uses `error`; DiamondDS tokens use `danger`. + * + * Keep the translation here so component code can continue to speak MUI while + * the CSS token layer can use DiamondDS language. + */ +const intentTokenName: Record = { + primary: "primary", + secondary: "secondary", + error: "danger", + warning: "warning", + success: "success", + info: "info", +}; + +/** + * Builds the complete DiamondDS intent palette from token namespaces. + * + * Keeping this generated from `intentTokenName` avoids repeating the same MUI + * palette mapping for every supported intent. + */ +const createIntentPalette = (): IntentPaletteRecord => ({ + primary: createPaletteColour(intentTokenName.primary), + secondary: createPaletteColour(intentTokenName.secondary), + error: createPaletteColour(intentTokenName.error), + warning: createPaletteColour(intentTokenName.warning), + success: createPaletteColour(intentTokenName.success), + info: createPaletteColour(intentTokenName.info), +}); + +/** + * Returns a supported intent palette. + * + * `theme.vars.palette` can be present when MUI CSS variables are enabled. When + * it exists, it may contain the resolved variable-aware values. We merge it over + * `theme.palette` while preserving the DiamondDS contract. + * + * Fallback policy: + * - unsupported colour values fall back to primary before this function is used + * - missing palette entries fall back to primary in development with a warning + * + * That fallback has a deliberate meaning: primary is the safest non-destructive + * action intent. We do not silently fall back from error/warning to decorative + * or brand values. + */ const getIntentPalette = ( theme: Theme, colour: IntentColour, ): ExtendedPaletteColor => { const { vars, palette } = theme as ThemeWithIntentPalette; - const fallbackPalette = palette[colour]; - const varsPalette = vars?.palette?.[colour]; + const paletteColour = palette[colour]; + const varsColour = vars?.palette?.[colour]; - if (process.env.NODE_ENV !== "production" && !fallbackPalette) { + if (paletteColour) { + return { + ...paletteColour, + ...varsColour, + }; + } + + if (process.env.NODE_ENV !== "production") { console.warn( - `[DiamondDS] getIntentPalette: colour "${colour}" not found in palette`, + `[DiamondDS] getIntentPalette: colour "${colour}" not found. Falling back to primary.`, ); } return { - ...fallbackPalette, - ...varsPalette, + ...palette.primary, + ...vars?.palette?.primary, }; }; +/** + * Normalises external MUI colour props into DiamondDS-supported intents. + * + * Component `ownerState` values come from MUI props and internal state. They can + * include values such as `inherit`, `default`, or custom app colours. DiamondDS + * only treats the declared `IntentColour` set as semantic intents. + */ +const getIntentFromColourProp = ( + colour: unknown, + fallback: IntentColour = "primary", +): IntentColour => (isIntentColour(colour) ? colour : fallback); + const getFocusToken = (colour?: IntentColour) => { if (!colour) return "var(--ds-focus-ring)"; - return `var(--ds-focus-ring-${colour === "error" ? "danger" : colour})`; + return `var(--ds-focus-ring-${intentTokenName[colour]})`; }; +/** + * Focus rings use dedicated focus tokens rather than component colours. + * + * This keeps keyboard focus visible without confusing it with selection, status + * or validation state. Error and disabled states should still win visually where + * those states are present. + */ const getFocusOutline = (token?: string): CSSObject => ({ "&.Mui-focusVisible": { outline: "var(--ds-focus-ring-width) solid", @@ -173,16 +397,66 @@ const getFocusOutline = (token?: string): CSSObject => ({ }, }); +/** + * Interaction overlays are layered on top of the base surface. + * + * This keeps hover/active/focus feedback separate from semantic colour roles, + * which is especially useful across light and dark modes. + */ const getOverlayInset = (token = "var(--ds-overlay-hover)") => `inset 0 0 0 9999px ${token}`; -// --- Theme factory --- +/** + * Shared interaction treatment for semantic interactive surfaces. + * + * Keeps hover and active overlays visually consistent across components. + */ +const getInteractiveSurfaceStateStyles = ( + backgroundColor: string, + overlay = "var(--ds-overlay-hover)", +): CSSObject => ({ + "&:hover": { + backgroundColor, + boxShadow: getOverlayInset(overlay), + }, + + "&:active": { + backgroundColor, + boxShadow: getOverlayInset("var(--ds-overlay-selected)"), + }, +}); +/** + * Disabled state intentionally removes interactive affordances. + * + * Disabled styles should visually override hover, focus and active states. + */ +const getDisabledControlStyles = (backgroundColor = "transparent"): CSSObject => + ({ + opacity: 1, + backgroundColor, + color: "var(--ds-on-surface-disabled)", + boxShadow: "none", + }) satisfies CSSObject; + +/** + * Creates the resolved DiamondDS MUI theme. + * + * This factory: + * - maps DiamondDS semantic tokens into MUI + * - configures component defaults and overrides + * - applies light/dark semantic role resolution + * - keeps CSS variables as the source of truth + * + * The resulting theme should expose semantic roles rather than raw colours. + */ export const createDiamondTheme = (mode: DSMode): Theme => { + const intentPalette = createIntentPalette(); + const DiamondDSThemeOptions = mergeThemeOptions({ typography: { fontFamily: [ - "Inter Variable", + '"Inter Variable"', "Inter", "system-ui", "-apple-system", @@ -212,6 +486,13 @@ export const createDiamondTheme = (mode: DSMode): Theme => { palette: { mode, + /** + * MUI action tokens are mapped to DiamondDS overlay and disabled roles. + * + * Components should prefer semantic CSS variables directly where they need + * precise behaviour, but these values keep MUI defaults aligned with the + * design system. + */ action: { hover: "var(--ds-overlay-hover)", selected: "var(--ds-overlay-selected)", @@ -225,6 +506,12 @@ export const createDiamondTheme = (mode: DSMode): Theme => { focusOpacity: 0.16, }, + /** + * Text roles describe hierarchy and surface relationship. + * + * Prefer these semantic roles over raw greys so dark mode and future + * accessibility refinements can be made centrally. + */ text: { primary: "var(--ds-on-surface)", secondary: "var(--ds-on-surface-variant)", @@ -255,117 +542,13 @@ export const createDiamondTheme = (mode: DSMode): Theme => { strong: "var(--ds-surface-container-high)", }, - primary: { - light: "var(--ds-primary-accent)", - main: "var(--ds-primary)", - dark: "var(--ds-primary-emphasis)", - contrastText: "var(--ds-on-primary)", - container: "var(--ds-primary-container)", - onContainer: "var(--ds-on-primary-container)", - solid: "var(--ds-primary-solid)", - onSolid: "var(--ds-on-primary-solid)", - - contrastTextChannel: "var(--ds-on-primary-channel)", - mainChannel: "var(--ds-primary-mainChannel)", - lightChannel: "var(--ds-primary-lightChannel)", - darkChannel: "var(--ds-primary-darkChannel)", - }, - - secondary: { - light: "var(--ds-secondary-accent)", - main: "var(--ds-secondary)", - dark: "var(--ds-secondary-emphasis)", - contrastText: "var(--ds-on-secondary)", - container: "var(--ds-secondary-container)", - onContainer: "var(--ds-on-secondary-container)", - solid: "var(--ds-secondary-solid)", - onSolid: "var(--ds-on-secondary-solid)", - - contrastTextChannel: "var(--ds-on-secondary-channel)", - mainChannel: "var(--ds-secondary-mainChannel)", - lightChannel: "var(--ds-secondary-lightChannel)", - darkChannel: "var(--ds-secondary-darkChannel)", - }, - - brand: { - light: "var(--ds-brand-accent)", - main: "var(--ds-brand)", - dark: "var(--ds-brand-emphasis)", - contrastText: "var(--ds-on-brand)", - container: "var(--ds-brand-container)", - onContainer: "var(--ds-on-brand-container)", - solid: "var(--ds-brand-solid)", - onSolid: "var(--ds-on-brand-solid)", - - contrastTextChannel: "var(--ds-on-brand-channel)", - mainChannel: "var(--ds-brand-mainChannel)", - lightChannel: "var(--ds-brand-lightChannel)", - darkChannel: "var(--ds-brand-darkChannel)", - }, - - error: { - light: "var(--ds-danger-accent)", - main: "var(--ds-danger)", - dark: "var(--ds-danger-emphasis)", - contrastText: "var(--ds-on-danger)", - container: "var(--ds-danger-container)", - onContainer: "var(--ds-on-danger-container)", - solid: "var(--ds-danger-solid)", - onSolid: "var(--ds-on-danger-solid)", - - contrastTextChannel: "var(--ds-on-danger-channel)", - mainChannel: "var(--ds-danger-mainChannel)", - lightChannel: "var(--ds-danger-lightChannel)", - darkChannel: "var(--ds-danger-darkChannel)", - }, - - warning: { - light: "var(--ds-warning-accent)", - main: "var(--ds-warning)", - dark: "var(--ds-warning-emphasis)", - contrastText: "var(--ds-on-warning)", - container: "var(--ds-warning-container)", - onContainer: "var(--ds-on-warning-container)", - solid: "var(--ds-warning-solid)", - onSolid: "var(--ds-on-warning-solid)", - - contrastTextChannel: "var(--ds-on-warning-channel)", - mainChannel: "var(--ds-warning-mainChannel)", - lightChannel: "var(--ds-warning-lightChannel)", - darkChannel: "var(--ds-warning-darkChannel)", - }, + ...intentPalette, - success: { - light: "var(--ds-success-accent)", - main: "var(--ds-success)", - dark: "var(--ds-success-emphasis)", - contrastText: "var(--ds-on-success)", - container: "var(--ds-success-container)", - onContainer: "var(--ds-on-success-container)", - solid: "var(--ds-success-solid)", - onSolid: "var(--ds-on-success-solid)", - - contrastTextChannel: "var(--ds-on-success-channel)", - mainChannel: "var(--ds-success-mainChannel)", - lightChannel: "var(--ds-success-lightChannel)", - darkChannel: "var(--ds-success-darkChannel)", - }, - - info: { - light: "var(--ds-info-accent)", - main: "var(--ds-info)", - dark: "var(--ds-info-emphasis)", - contrastText: "var(--ds-on-info)", - container: "var(--ds-info-container)", - onContainer: "var(--ds-on-info-container)", - solid: "var(--ds-info-solid)", - onSolid: "var(--ds-on-info-solid)", - - contrastTextChannel: "var(--ds-on-info-channel)", - mainChannel: "var(--ds-info-mainChannel)", - lightChannel: "var(--ds-info-lightChannel)", - darkChannel: "var(--ds-info-darkChannel)", - }, + /** + * Brand is provided as a palette entry for places that need Diamond visual + * identity, but it is not part of the intent-colour helper path. + */ + brand: createBrandPaletteColour(), grey: { 50: "var(--ds-grey-50)", @@ -382,23 +565,38 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }, components: { - MuiPaper: { - styleOverrides: { - root: { - backgroundImage: "none", - }, - }, - }, + /** + * Component overrides translate DiamondDS semantic roles into MUI behaviour. + * + * Keep overrides token-led: + * - use semantic tokens or palette roles + * - avoid raw colours + * - keep disabled and error states visually dominant + * - prefer scoped/additive changes over breaking MUI defaults + */ MuiButtonBase: { + /** + * Keeps MUI ripple behaviour available while using DiamondDS focus outlines. + */ defaultProps: { - disableRipple: true, - disableTouchRipple: true, + disableRipple: false, + disableTouchRipple: false, focusRipple: false, }, }, MuiButton: { + /** + * Button uses the DiamondDS intent model: + * + * - contained = solid action surface + * - outlined = subtle intent container with border + * - text = low-emphasis action + * + * Disabled styles are declared inside each variant so they override + * hover, active and focus treatments for that variant. + */ defaultProps: { disableFocusRipple: true, }, @@ -422,28 +620,21 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }; } - const colour = rawColour as IntentColour; + const colour = getIntentFromColourProp(rawColour); const p = getIntentPalette(theme, colour); const focusToken = getFocusToken(colour); - const subtle = p.container; - const onSubtle = p.onContainer; if (variant === "contained") { return { ...base, ...getFocusOutline(focusToken), - backgroundColor: p.solid ?? p.main, - color: p.onSolid ?? "var(--ds-on-solid)", + backgroundColor: p.solid, + color: p.onSolid, - "&:hover": { - backgroundColor: p.solid ?? p.main, - boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), - }, - - "&:active": { - backgroundColor: p.solid ?? p.main, - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + ...getInteractiveSurfaceStateStyles( + p.solid, + "var(--ds-overlay-hover-solid)", + ), "&.Mui-focusVisible": { outline: "var(--ds-focus-ring-width) solid", @@ -452,12 +643,9 @@ export const createDiamondTheme = (mode: DSMode): Theme => { boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, - "&.Mui-disabled": { - opacity: 1, - backgroundColor: "var(--ds-surface-disabled)", - color: "var(--ds-on-surface-disabled)", - boxShadow: "none", - }, + "&.Mui-disabled": getDisabledControlStyles( + "var(--ds-surface-disabled)", + ), }; } @@ -466,25 +654,12 @@ export const createDiamondTheme = (mode: DSMode): Theme => { ...base, ...getFocusOutline(focusToken), - color: onSubtle, - backgroundColor: subtle, - - "&:hover": { - backgroundColor: subtle, - boxShadow: getOverlayInset(), - }, + color: p.onContainer, + backgroundColor: p.container, - "&:active": { - backgroundColor: subtle, - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + ...getInteractiveSurfaceStateStyles(p.container), - "&.Mui-disabled": { - opacity: 1, - backgroundColor: "transparent", - color: "var(--ds-on-surface-disabled)", - boxShadow: "none", - }, + "&.Mui-disabled": getDisabledControlStyles(), }; } @@ -495,9 +670,13 @@ export const createDiamondTheme = (mode: DSMode): Theme => { color: p.main, "&:hover": { - backgroundColor: subtle, + backgroundColor: p.container, boxShadow: getOverlayInset(), }, + + "&.Mui-disabled": { + color: "var(--ds-on-surface-disabled)", + }, }; } @@ -510,8 +689,12 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }, MuiIconButton: { + /** + * IconButton follows the same intent model as Button, but default/inherit + * colours stay neutral unless an explicit intent is provided. + */ defaultProps: { - disableRipple: true, + disableRipple: false, disableFocusRipple: true, }, styleOverrides: { @@ -532,7 +715,7 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }; } - const colour = rawColour as IntentColour; + const colour = getIntentFromColourProp(rawColour); const p = getIntentPalette(theme, colour); const focusToken = getFocusToken(colour); @@ -564,6 +747,11 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }, MuiChip: { + /** + * Chip supports both neutral metadata and semantic status/action usage. + * + * Interactive chips receive focus and overlay states; static chips remain calm. + */ styleOverrides: { root: ({ ownerState, theme }: OverrideArgs): CSSObject => { const base: CSSObject = { @@ -580,41 +768,35 @@ export const createDiamondTheme = (mode: DSMode): Theme => { ); if (isDefault) { + const backgroundColor = "var(--ds-surface-container-high)"; + return { ...base, ...(isInteractive ? getFocusOutline() : {}), color: "var(--ds-on-surface)", borderColor: "var(--ds-border)", - backgroundColor: "var(--ds-surface-container-high)", + backgroundColor, ...(isInteractive && { - "&:hover": { - backgroundColor: "var(--ds-surface-container-high)", - boxShadow: getOverlayInset(), - }, - - "&:active": { - backgroundColor: "var(--ds-surface-container-high)", - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + ...getInteractiveSurfaceStateStyles(backgroundColor), "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": { - backgroundColor: "var(--ds-surface-container-high)", + backgroundColor, boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": { - backgroundColor: "var(--ds-surface-container-high)", + backgroundColor, boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, }), }; } - const colour = rawColour as IntentColour; + const colour = getIntentFromColourProp(rawColour); const p = getIntentPalette(theme, colour); const focusToken = getFocusToken(colour); @@ -628,17 +810,7 @@ export const createDiamondTheme = (mode: DSMode): Theme => { backgroundColor: p.container, ...(isInteractive && { - "&:hover": { - backgroundColor: p.container, - borderColor: p.light, - boxShadow: getOverlayInset(), - }, - - "&:active": { - backgroundColor: p.container, - borderColor: p.light, - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + ...getInteractiveSurfaceStateStyles(p.container), "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": { @@ -657,35 +829,28 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }; } - const solid = p.solid ?? p.main; - return { ...base, ...(isInteractive ? getFocusOutline(focusToken) : {}), - color: p.onSolid ?? "var(--ds-on-solid)", - backgroundColor: solid, + color: p.onSolid, + backgroundColor: p.solid, ...(isInteractive && { - "&:hover": { - backgroundColor: solid, - boxShadow: getOverlayInset("var(--ds-overlay-hover-solid)"), - }, - - "&:active": { - backgroundColor: solid, - boxShadow: getOverlayInset("var(--ds-overlay-selected)"), - }, + ...getInteractiveSurfaceStateStyles( + p.solid, + "var(--ds-overlay-hover-solid)", + ), "&&.MuiChip-clickable.Mui-focusVisible, &&.MuiChip-deletable.Mui-focusVisible": { - backgroundColor: solid, + backgroundColor: p.solid, boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, "&&.MuiChip-clickable.Mui-focusVisible:hover, &&.MuiChip-deletable.Mui-focusVisible:hover": { - backgroundColor: solid, + backgroundColor: p.solid, boxShadow: getOverlayInset("var(--ds-overlay-focus)"), }, }), @@ -728,6 +893,7 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }), root: ({ theme }: ThemeOnlyArgs): CSSObject => ({ + /** Error and disabled placeholder states win over normal focus. */ "&.Mui-error input::placeholder, &.Mui-error input::-webkit-input-placeholder, &.Mui-error input::-moz-placeholder": { color: theme.palette.error.light, @@ -745,11 +911,18 @@ export const createDiamondTheme = (mode: DSMode): Theme => { MuiOutlinedInput: { styleOverrides: { + /** + * Outlined inputs prioritise state clarity: + * + * disabled > error > focused > hover > default + * + * This order avoids a focused or hover style masking validation state. + */ root: ({ ownerState, theme, }: OverrideArgs): CSSObject => { - const colour = (ownerState.color ?? "primary") as IntentColour; + const colour = getIntentFromColourProp(ownerState.color); const p = getIntentPalette(theme, colour); const focusToken = getFocusToken(colour); @@ -880,12 +1053,19 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }, MuiAlert: { + /** + * Alerts use status intents only. Filled alerts use solid/onSolid; standard and + * outlined alerts use container/onContainer. + */ styleOverrides: { root: ({ ownerState, theme, }: OverrideArgs): CSSObject => { - const severity = (ownerState.severity ?? "success") as IntentColour; + const severity = getIntentFromColourProp( + ownerState.severity, + "success", + ); const p = getIntentPalette(theme, severity); const common: CSSObject = { @@ -909,8 +1089,8 @@ export const createDiamondTheme = (mode: DSMode): Theme => { if (ownerState.variant === "filled") { return { ...common, - backgroundColor: p.solid ?? p.main, - color: p.onSolid ?? "var(--ds-on-solid)", + backgroundColor: p.solid, + color: p.onSolid, }; } @@ -933,6 +1113,10 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }, }, + /** + * Progress indicators use intent `main` as an activity signal, not a filled + * surface. This keeps them visually lighter than buttons or alerts. + */ MuiLinearProgress: { styleOverrides: { root: { @@ -946,7 +1130,7 @@ export const createDiamondTheme = (mode: DSMode): Theme => { ownerState, theme, }: OverrideArgs): CSSObject => { - const colour = (ownerState.color ?? "primary") as IntentColour; + const colour = getIntentFromColourProp(ownerState.color); const p = getIntentPalette(theme, colour); return { @@ -962,7 +1146,7 @@ export const createDiamondTheme = (mode: DSMode): Theme => { ownerState, theme, }: OverrideArgs): CSSObject => { - const colour = (ownerState.color ?? "primary") as IntentColour; + const colour = getIntentFromColourProp(ownerState.color); const p = getIntentPalette(theme, colour); return { @@ -1040,7 +1224,7 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }: OverrideArgs): CSSObject => { const rawColour = ownerState.color ?? "primary"; const isDefault = rawColour === "default"; - const colour = rawColour as IntentColour; + const colour = getIntentFromColourProp(rawColour); const p = !isDefault ? getIntentPalette(theme, colour) : null; const focusToken = !isDefault ? getFocusToken(colour) : undefined; @@ -1082,7 +1266,7 @@ export const createDiamondTheme = (mode: DSMode): Theme => { }: OverrideArgs): CSSObject => { const rawColour = ownerState.color ?? "primary"; const isDefault = rawColour === "default"; - const colour = rawColour as IntentColour; + const colour = getIntentFromColourProp(rawColour); const p = !isDefault ? getIntentPalette(theme, colour) : null; const focusToken = !isDefault ? getFocusToken(colour) : undefined;