@morze/ui 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/utils.ts","../src/components/theme-provider.tsx","../src/lib/icons.tsx","../src/components/button.tsx","../src/components/badge.tsx","../src/components/toggle.tsx","../src/components/toggle-group.tsx","../src/components/checkbox.tsx","../src/components/radio-group.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/input.tsx","../src/components/textarea.tsx","../src/components/label.tsx","../src/components/field.tsx","../src/components/select.tsx","../src/components/tabs.tsx","../src/components/card.tsx","../src/components/alert.tsx","../src/components/accordion.tsx","../src/components/progress.tsx","../src/components/avatar.tsx","../src/components/separator.tsx","../src/components/skeleton.tsx","../src/components/spinner.tsx","../src/components/dialog.tsx","../src/components/popover.tsx","../src/components/dropdown-menu.tsx","../src/components/tooltip.tsx","../src/components/sheet.tsx","../src/lib/use-is-mobile.ts","../src/components/sidebar.tsx","../src/components/data-table/cell-editor.tsx","../src/components/data-table/labels.ts","../src/components/data-table/utils.ts","../src/components/data-table/column-filter.tsx","../src/components/data-table/column-manager.tsx","../src/components/data-table/data-table-pagination.tsx","../src/components/data-table/use-column-resize.ts","../src/components/data-table/use-column-layout.ts","../src/components/data-table/use-row-selection.ts","../src/components/data-table/data-table.tsx","../src/components/data-table/types.ts","../src/components/data-table/use-table-query.ts"],"names":["React","jsx","jsxs","Fragment","React3","cva","Slot","TogglePrimitive","React6","ToggleGroupPrimitive","CheckboxPrimitive","RadioGroupPrimitive","SwitchPrimitive","React10","SliderPrimitive","LabelPrimitive","SelectPrimitive","TabsPrimitive","AccordionPrimitive","ProgressPrimitive","AvatarPrimitive","SeparatorPrimitive","DialogPrimitive","PopoverPrimitive","DropdownMenuPrimitive","React28","TooltipPrimitive","SheetPrimitive","React30","React31","readStored","React32","React33","current","React34","React36","writeStored","React37","React38","next","labels","React40"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx'\n\n/**\n * Class name joiner. Morze UI ships plain, prefixed CSS rather than utility\n * classes, so there is nothing to merge — clsx is enough.\n */\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs)\n}\n\nexport type Tone = 'primary' | 'accent' | 'danger' | 'warning' | 'info' | 'success'\n","'use client'\n\nimport * as React from 'react'\n\nexport type MorzeTheme = 'dark' | 'light' | 'system'\n\ntype ThemeContextValue = {\n /** What was requested — may be `system`. */\n theme: MorzeTheme\n /** What is actually painted — never `system`. */\n resolvedTheme: 'dark' | 'light'\n setTheme: (theme: MorzeTheme) => void\n}\n\nconst ThemeContext = React.createContext<ThemeContextValue | null>(null)\n\n/** Storage can throw outright when site data is blocked, so every access is guarded. */\nfunction readStored(key: string | null): MorzeTheme | null {\n if (!key || typeof window === 'undefined') return null\n try {\n const stored = window.localStorage.getItem(key)\n return stored === 'dark' || stored === 'light' || stored === 'system' ? stored : null\n } catch {\n return null\n }\n}\n\nfunction writeStored(key: string | null, theme: MorzeTheme) {\n if (!key || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(key, theme)\n } catch {\n /* private mode, blocked site data — the theme just does not persist */\n }\n}\n\nfunction systemTheme(): 'dark' | 'light' {\n if (typeof window === 'undefined' || !window.matchMedia) return 'dark'\n return window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'\n}\n\ntype MorzeThemeProviderProps = {\n children: React.ReactNode\n /** Initial theme. Defaults to the Morze dark palette. */\n defaultTheme?: MorzeTheme\n /** localStorage key; pass `null` to disable persistence. */\n storageKey?: string | null\n /**\n * Where `data-mz-theme` is written. `html` themes the whole document (and is\n * what you want when portalled dialogs and menus should follow the theme);\n * `element` scopes the theme to the wrapper this provider renders.\n */\n target?: 'html' | 'element'\n className?: string\n}\n\nfunction MorzeThemeProvider({\n children,\n defaultTheme = 'dark',\n storageKey = 'morze-ui-theme',\n target = 'html',\n className,\n}: MorzeThemeProviderProps) {\n // Both the server and the first client render start from defaultTheme; the\n // stored/system preference is applied after mount. Reading storage during\n // render would make the markup disagree with the server and break hydration.\n const [theme, setThemeState] = React.useState<MorzeTheme>(defaultTheme)\n const [resolved, setResolved] = React.useState<'dark' | 'light'>(\n defaultTheme === 'system' ? 'dark' : defaultTheme\n )\n\n React.useEffect(() => {\n const stored = readStored(storageKey)\n if (stored) setThemeState(stored)\n }, [storageKey])\n\n React.useEffect(() => {\n if (theme !== 'system') {\n setResolved(theme)\n return\n }\n setResolved(systemTheme())\n const mql = window.matchMedia('(prefers-color-scheme: light)')\n const onChange = () => setResolved(systemTheme())\n mql.addEventListener('change', onChange)\n return () => mql.removeEventListener('change', onChange)\n }, [theme])\n\n React.useEffect(() => {\n if (target !== 'html' || typeof document === 'undefined') return\n document.documentElement.setAttribute('data-mz-theme', resolved)\n }, [resolved, target])\n\n const setTheme = React.useCallback(\n (next: MorzeTheme) => {\n setThemeState(next)\n writeStored(storageKey, next)\n },\n [storageKey]\n )\n\n const value = React.useMemo(\n () => ({ theme, resolvedTheme: resolved, setTheme }),\n [theme, resolved, setTheme]\n )\n\n return (\n <ThemeContext.Provider value={value}>\n <div\n data-slot=\"morze-root\"\n data-mz-theme={target === 'element' ? resolved : undefined}\n className={['mz-root', className].filter(Boolean).join(' ')}\n >\n {children}\n </div>\n </ThemeContext.Provider>\n )\n}\n\nfunction useMorzeTheme() {\n const context = React.useContext(ThemeContext)\n if (!context) {\n throw new Error('useMorzeTheme must be used inside <MorzeThemeProvider>')\n }\n return context\n}\n\nexport { MorzeThemeProvider, useMorzeTheme }\nexport type { MorzeThemeProviderProps }\n","import * as React from 'react'\n\n/**\n * Inline icons so the package has no icon dependency. Each one inherits\n * currentColor and is sized by CSS, matching lucide's 24x24 grid.\n */\ntype IconProps = React.SVGProps<SVGSVGElement>\n\nfunction icon(path: React.ReactNode, extra?: Partial<IconProps>) {\n return function Icon(props: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...extra}\n {...props}\n >\n {path}\n </svg>\n )\n }\n}\n\nexport const CheckIcon = icon(<path d=\"M20 6 9 17l-5-5\" />)\nexport const MinusIcon = icon(<path d=\"M5 12h14\" />)\nexport const XIcon = icon(<path d=\"M18 6 6 18M6 6l12 12\" />)\nexport const ChevronDownIcon = icon(<path d=\"m6 9 6 6 6-6\" />)\nexport const ChevronUpIcon = icon(<path d=\"m18 15-6-6-6 6\" />)\nexport const ChevronRightIcon = icon(<path d=\"m9 18 6-6-6-6\" />)\nexport const CircleIcon = icon(<circle cx=\"12\" cy=\"12\" r=\"10\" />)\nexport const DotIcon = icon(<circle cx=\"12\" cy=\"12\" r=\"4\" fill=\"currentColor\" />)\n\nexport const SpinnerIcon = icon(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"9\" opacity=\"0.25\" />\n <path d=\"M21 12a9 9 0 0 0-9-9\" />\n </>\n)\n\nexport const ChevronLeftIcon = icon(<path d=\"m15 18-6-6 6-6\" />)\nexport const ChevronsLeftIcon = icon(\n <>\n <path d=\"m11 17-5-5 5-5\" />\n <path d=\"m18 17-5-5 5-5\" />\n </>\n)\nexport const ChevronsRightIcon = icon(\n <>\n <path d=\"m13 17 5-5-5-5\" />\n <path d=\"m6 17 5-5-5-5\" />\n </>\n)\nexport const ArrowUpIcon = icon(<path d=\"M12 19V5m-7 7 7-7 7 7\" />)\nexport const ArrowDownIcon = icon(<path d=\"M12 5v14m7-7-7 7-7-7\" />)\nexport const SortIcon = icon(\n <>\n <path d=\"m7 15 3 3 3-3\" opacity=\"0.9\" />\n <path d=\"m7 9 3-3 3 3\" opacity=\"0.9\" />\n </>\n)\nexport const FilterIcon = icon(<path d=\"M4 5h16l-6.5 7.5V19l-3 2v-8.5L4 5Z\" />)\nexport const ColumnsIcon = icon(\n <>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M9 4v16M15 4v16\" />\n </>\n)\nexport const GripIcon = icon(\n <>\n <circle cx=\"9\" cy=\"7\" r=\"1.4\" fill=\"currentColor\" />\n <circle cx=\"9\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" />\n <circle cx=\"9\" cy=\"17\" r=\"1.4\" fill=\"currentColor\" />\n <circle cx=\"15\" cy=\"7\" r=\"1.4\" fill=\"currentColor\" />\n <circle cx=\"15\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" />\n <circle cx=\"15\" cy=\"17\" r=\"1.4\" fill=\"currentColor\" />\n </>\n)\nexport const PinIcon = icon(<path d=\"M15 3 21 9l-4 1-4 4-1 5-6-6 5-1 4-4 1-4Z\" />)\nexport const EyeIcon = icon(\n <>\n <path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </>\n)\nexport const EyeOffIcon = icon(\n <>\n <path d=\"M10.6 5.2A9.8 9.8 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-3 3.9M6.2 6.2A17 17 0 0 0 2 12s3.5 7 10 7c1.9 0 3.5-.6 4.9-1.4\" />\n <path d=\"m3 3 18 18\" />\n </>\n)\nexport const SearchIcon = icon(\n <>\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m20 20-3.5-3.5\" />\n </>\n)\nexport const PlusIcon = icon(<path d=\"M12 5v14M5 12h14\" />)\nexport const TrashIcon = icon(\n <>\n <path d=\"M4 7h16M10 11v6M14 11v6\" />\n <path d=\"M6 7l1 12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-12M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2\" />\n </>\n)\nexport const InboxIcon = icon(\n <>\n <path d=\"M3 12h5l2 3h4l2-3h5\" />\n <path d=\"M5.5 5h13l2.5 7v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5l2.5-7Z\" />\n </>\n)\nexport const AlertIcon = icon(\n <>\n <path d=\"M12 9v4M12 17h.01\" />\n <path d=\"M10.3 3.9 2.6 17a2 2 0 0 0 1.7 3h15.4a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z\" />\n </>\n)\nexport const SaveIcon = icon(\n <>\n <path d=\"M5 4h11l4 4v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z\" />\n <path d=\"M8 4v5h7M8 21v-6h8v6\" />\n </>\n)\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Slot } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\nimport { SpinnerIcon } from '../lib/icons'\n\n// mz-focusable belongs to the base string so buttonVariants() carries the focus\n// ring onto elements that are styled as buttons without being one.\nconst buttonVariants = cva('mz-btn mz-focusable', {\n variants: {\n variant: {\n primary: 'mz-btn--primary',\n secondary: 'mz-btn--secondary',\n outline: 'mz-btn--outline',\n ghost: 'mz-btn--ghost',\n destructive: 'mz-btn--destructive',\n link: 'mz-btn--link',\n },\n size: {\n xs: 'mz-btn--xs',\n sm: 'mz-btn--sm',\n md: 'mz-btn--md',\n lg: 'mz-btn--lg',\n 'icon-xs': 'mz-btn--icon-xs',\n 'icon-sm': 'mz-btn--icon-sm',\n icon: 'mz-btn--icon',\n 'icon-lg': 'mz-btn--icon-lg',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n})\n\ntype ButtonProps = React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n /** Re-points the convex gradient, glow and focus ring to another tone. */\n tone?: Tone\n /** Swaps the label for a spinner and blocks interaction. */\n loading?: boolean\n }\n\nfunction Button({\n className,\n variant = 'primary',\n size = 'md',\n asChild = false,\n tone,\n loading = false,\n disabled,\n children,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot.Root : 'button'\n const isDisabled = disabled || loading\n\n const decorate = (label: React.ReactNode) => (\n <>\n {label}\n {loading ? (\n <span className=\"mz-btn__spinner\" aria-hidden=\"true\">\n <SpinnerIcon />\n </span>\n ) : null}\n </>\n )\n\n // Slot takes exactly one child, so the decorations are grafted inside it\n // rather than rendered as siblings — otherwise `loading` would blank the\n // label with no spinner to replace it.\n let content: React.ReactNode\n if (asChild) {\n const child = React.Children.only(children) as React.ReactElement<{\n children?: React.ReactNode\n }>\n content = React.cloneElement(child, undefined, decorate(child.props.children))\n } else {\n content = decorate(children)\n }\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n data-tone={tone}\n data-loading={loading || undefined}\n className={cn(buttonVariants({ variant, size }), className)}\n // A slotted element may not support `disabled` (a link, for one), so the\n // state is also expressed through aria, which the CSS honours.\n disabled={asChild ? undefined : isDisabled}\n aria-disabled={asChild && isDisabled ? true : undefined}\n aria-busy={loading || undefined}\n {...props}\n >\n {content}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\nexport type { ButtonProps }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Slot } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nconst badgeVariants = cva('mz-badge', {\n variants: {\n variant: {\n solid: 'mz-badge--solid',\n soft: 'mz-badge--soft',\n outline: 'mz-badge--outline',\n },\n },\n defaultVariants: {\n variant: 'solid',\n },\n})\n\nfunction Badge({\n className,\n variant = 'solid',\n tone,\n asChild = false,\n children,\n ...props\n}: React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & {\n asChild?: boolean\n tone?: Tone\n }) {\n const Comp = asChild ? Slot.Root : 'span'\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n data-tone={tone}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n >\n {children}\n </Comp>\n )\n}\n\nexport { Badge, badgeVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Toggle as TogglePrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nconst toggleVariants = cva('mz-toggle', {\n variants: {\n variant: {\n default: '',\n outline: 'mz-toggle--outline',\n },\n size: {\n sm: 'mz-toggle--sm',\n md: 'mz-toggle--md',\n lg: 'mz-toggle--lg',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n})\n\nfunction Toggle({\n className,\n variant = 'default',\n size = 'md',\n tone,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants> & { tone?: Tone }) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n data-variant={variant}\n data-size={size}\n data-tone={tone}\n className={cn(toggleVariants({ variant, size }), 'mz-focusable', className)}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { type VariantProps } from 'class-variance-authority'\nimport { ToggleGroup as ToggleGroupPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\nimport { toggleVariants } from './toggle'\n\ntype ToggleGroupContextValue = VariantProps<typeof toggleVariants> & { tone?: Tone }\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue>({\n size: 'md',\n variant: 'default',\n})\n\ntype ToggleGroupProps = React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n tone?: Tone\n /**\n * `segmented` — items sit in one sunken well and the active one pops out.\n * `joined` — items share edges as a single convex bar.\n * `spaced` — free-standing toggles with a gap.\n */\n appearance?: 'segmented' | 'joined' | 'spaced'\n }\n\nfunction ToggleGroup({\n className,\n variant = 'default',\n size = 'md',\n tone,\n appearance = 'segmented',\n style,\n children,\n ...props\n}: ToggleGroupProps) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-tone={tone}\n data-appearance={appearance}\n className={cn(\n 'mz-toggle-group',\n appearance === 'segmented' && 'mz-toggle-group--segmented',\n appearance === 'joined' && 'mz-toggle-group--joined',\n className\n )}\n style={\n appearance === 'spaced'\n ? ({ '--mz-toggle-group-gap': '8px', ...style } as React.CSSProperties)\n : style\n }\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, tone }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n // The item's own props win; the group only supplies the default. The other\n // way round the context defaults would always short-circuit and per-item\n // variant/size would be silently dropped.\n const context = React.useContext(ToggleGroupContext)\n const resolvedVariant = variant ?? context.variant\n const resolvedSize = size ?? context.size\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={resolvedVariant}\n data-size={resolvedSize}\n // Each item declares its own tone default, so the group's tone is\n // forwarded explicitly rather than left to inheritance.\n data-tone={context.tone}\n className={cn(\n toggleVariants({ variant: resolvedVariant, size: resolvedSize }),\n 'mz-focusable',\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","'use client'\n\nimport * as React from 'react'\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\nimport { CheckIcon, MinusIcon } from '../lib/icons'\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive.Root> & {\n size?: 'sm' | 'md' | 'lg'\n tone?: Tone\n}\n\nfunction Checkbox({ className, size = 'md', tone, ...props }: CheckboxProps) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n data-size={size}\n data-tone={tone}\n className={cn(\n 'mz-checkbox mz-focusable',\n size === 'sm' && 'mz-checkbox--sm',\n size === 'lg' && 'mz-checkbox--lg',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\" className=\"mz-checkbox__indicator\">\n {/* Both glyphs ship; CSS picks one off the root's data-state, which is\n the only source that is right for uncontrolled checkboxes too. */}\n <CheckIcon className=\"mz-checkbox__check\" />\n <MinusIcon className=\"mz-checkbox__dash\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\nexport type { CheckboxProps }\n","'use client'\n\nimport * as React from 'react'\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('mz-radio-group', className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n tone,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & { tone?: Tone }) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n data-tone={tone}\n className={cn('mz-radio mz-focusable', className)}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"mz-radio__indicator\"\n />\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","'use client'\n\nimport * as React from 'react'\nimport { Switch as SwitchPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\ntype SwitchProps = React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'md' | 'lg'\n tone?: Tone\n}\n\nfunction Switch({ className, size = 'md', tone, ...props }: SwitchProps) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n data-tone={tone}\n className={cn(\n 'mz-switch mz-focusable',\n size === 'sm' && 'mz-switch--sm',\n size === 'lg' && 'mz-switch--lg',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb data-slot=\"switch-thumb\" className=\"mz-switch__thumb\" />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\nexport type { SwitchProps }\n","'use client'\n\nimport * as React from 'react'\nimport { Slider as SliderPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n tone,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root> & { tone?: Tone }) {\n // Radix's uncontrolled state defaults to a single value, so the thumb count\n // has to fall back to one — [min, max] would render an extra thumb that\n // tracks nothing.\n const values = React.useMemo(\n () =>\n Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min],\n [value, defaultValue, min]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n data-tone={tone}\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn('mz-slider', className)}\n {...props}\n >\n <SliderPrimitive.Track data-slot=\"slider-track\" className=\"mz-slider__track\">\n <SliderPrimitive.Range data-slot=\"slider-range\" className=\"mz-slider__range\" />\n </SliderPrimitive.Track>\n {Array.from({ length: values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"mz-slider__thumb mz-focusable\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\n\ntype InputProps = React.ComponentProps<'input'> & {\n inputSize?: 'sm' | 'md' | 'lg'\n}\n\nfunction Input({ className, type, inputSize = 'md', ...props }: InputProps) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n data-size={inputSize}\n className={cn(\n 'mz-input',\n inputSize === 'sm' && 'mz-input--sm',\n inputSize === 'lg' && 'mz-input--lg',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\nexport type { InputProps }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\n\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return <textarea data-slot=\"textarea\" className={cn('mz-textarea', className)} {...props} />\n}\n\nexport { Textarea }\n","'use client'\n\nimport * as React from 'react'\nimport { Label as LabelPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nfunction Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return <LabelPrimitive.Root data-slot=\"label\" className={cn('mz-label', className)} {...props} />\n}\n\nexport { Label }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\n\n/** Vertical label + control + hint/error stack. */\nfunction Field({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"field\" className={cn('mz-field', className)} {...props} />\n}\n\nfunction FieldHint({ className, ...props }: React.ComponentProps<'p'>) {\n return <p data-slot=\"field-hint\" className={cn('mz-field__hint', className)} {...props} />\n}\n\nfunction FieldError({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"field-error\"\n role=\"alert\"\n className={cn('mz-field__error', className)}\n {...props}\n />\n )\n}\n\nexport { Field, FieldHint, FieldError }\n","'use client'\n\nimport * as React from 'react'\nimport { Select as SelectPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from '../lib/icons'\n\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = 'md',\n tone,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: 'sm' | 'md'\n tone?: Tone\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n data-tone={tone}\n className={cn(\n 'mz-select-trigger mz-focusable',\n size === 'sm' && 'mz-select-trigger--sm',\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"mz-select-trigger__icon\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = 'popper',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n 'mz-panel mz-select-content',\n position === 'popper' && 'mz-select-content--popper',\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'mz-select-viewport',\n position === 'popper' && 'mz-select-viewport--popper'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn('mz-menu-label', className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item data-slot=\"select-item\" className={cn('mz-item', className)} {...props}>\n <span className=\"mz-item__indicator\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn('mz-menu-separator', className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn('mz-select-scroll-button', className)}\n {...props}\n >\n <ChevronUpIcon width={16} height={16} />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn('mz-select-scroll-button', className)}\n {...props}\n >\n <ChevronDownIcon width={16} height={16} />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Tabs as TabsPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nfunction Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return <TabsPrimitive.Root data-slot=\"tabs\" className={cn('mz-tabs', className)} {...props} />\n}\n\nfunction TabsList({\n className,\n variant = 'default',\n tone,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> & {\n variant?: 'default' | 'line'\n tone?: Tone\n}) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n data-tone={tone}\n className={cn('mz-tabs-list', variant === 'line' && 'mz-tabs-list--line', className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn('mz-tabs-trigger mz-focusable', className)}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn('mz-tabs-content', className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\n\nfunction Card({\n className,\n interactive = false,\n onClick,\n onKeyDown,\n ...props\n}: React.ComponentProps<'div'> & { interactive?: boolean }) {\n // An interactive card looks clickable, so it has to be reachable and\n // operable from the keyboard as well. Role and tabIndex sit before the\n // spread, so a consumer can still override them.\n const clickable = interactive && Boolean(onClick)\n\n const handleKeyDown = clickable\n ? (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event)\n if (event.defaultPrevented) return\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n event.currentTarget.click()\n }\n }\n : onKeyDown\n\n return (\n <div\n data-slot=\"card\"\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n className={cn(\n 'mz-card',\n interactive && 'mz-card--interactive',\n clickable && 'mz-focusable',\n className\n )}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-header\" className={cn('mz-card-header', className)} {...props} />\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-title\" className={cn('mz-card-title', className)} {...props} />\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"card-description\" className={cn('mz-card-description', className)} {...props} />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-action\" className={cn('mz-card-action', className)} {...props} />\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-content\" className={cn('mz-card-content', className)} {...props} />\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-footer\" className={cn('mz-card-footer', className)} {...props} />\n}\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn, type Tone } from '../lib/utils'\n\nfunction Alert({\n className,\n tone = 'primary',\n ...props\n}: React.ComponentProps<'div'> & { tone?: Tone }) {\n return (\n <div\n data-slot=\"alert\"\n data-tone={tone}\n role=\"alert\"\n className={cn('mz-alert', className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"alert-title\" className={cn('mz-alert-title', className)} {...props} />\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('mz-alert-description', className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n","'use client'\n\nimport * as React from 'react'\nimport { Accordion as AccordionPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { ChevronDownIcon } from '../lib/icons'\n\nfunction Accordion({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn('mz-accordion', className)}\n {...props}\n />\n )\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('mz-accordion-item', className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"mz-accordion-header\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn('mz-accordion-trigger mz-focusable', className)}\n {...props}\n >\n {children}\n <span className=\"mz-accordion-trigger__icon\" aria-hidden=\"true\">\n <ChevronDownIcon />\n </span>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className={cn('mz-accordion-content', className)}\n {...props}\n >\n <div className=\"mz-accordion-content__inner\">{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","'use client'\n\nimport * as React from 'react'\nimport { Progress as ProgressPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nfunction Progress({\n className,\n value,\n max = 100,\n tone,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> & { tone?: Tone }) {\n // Scaled against `max` so the bar agrees with the aria-valuenow/valuemax\n // Radix emits, and clamped so an out-of-range value cannot produce a\n // malformed translate.\n const percent = max > 0 ? (Math.min(Math.max(value ?? 0, 0), max) / max) * 100 : 0\n\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n data-tone={tone}\n value={value}\n max={max}\n className={cn('mz-progress', className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"mz-progress__indicator\"\n style={{ transform: `translateX(-${100 - percent}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","'use client'\n\nimport * as React from 'react'\nimport { Avatar as AvatarPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nfunction Avatar({\n className,\n size = 'md',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & { size?: 'sm' | 'md' | 'lg' }) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'mz-avatar',\n size === 'sm' && 'mz-avatar--sm',\n size === 'lg' && 'mz-avatar--lg',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('mz-avatar__image', className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn('mz-avatar__fallback', className)}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","'use client'\n\nimport * as React from 'react'\nimport { Separator as SeparatorPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn('mz-separator', className)}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"skeleton\" className={cn('mz-skeleton', className)} {...props} />\n}\n\nexport { Skeleton }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\nimport { SpinnerIcon } from '../lib/icons'\n\ntype SpinnerProps = React.ComponentProps<'span'> & {\n /** Announced by screen readers; pass `null` for a purely decorative spinner. */\n label?: string | null\n}\n\nfunction Spinner({ className, label = 'Loading', children, ...props }: SpinnerProps) {\n return (\n <span\n data-slot=\"spinner\"\n role={label === null ? undefined : 'status'}\n aria-hidden={label === null ? true : undefined}\n className={cn('mz-spinner', className)}\n {...props}\n >\n <SpinnerIcon />\n {label === null ? null : <span className=\"mz-sr-only\">{label}</span>}\n {children}\n </span>\n )\n}\n\nexport { Spinner }\nexport type { SpinnerProps }\n","'use client'\n\nimport * as React from 'react'\nimport { Dialog as DialogPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { XIcon } from '../lib/icons'\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn('mz-dialog-overlay', className)}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n closeLabel = 'Close',\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n closeLabel?: string\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn('mz-panel mz-dialog-content', className)}\n {...props}\n >\n {children}\n {showCloseButton ? (\n <DialogPrimitive.Close data-slot=\"dialog-close\" className=\"mz-dialog-close mz-focusable\">\n <XIcon />\n <span className=\"mz-sr-only\">{closeLabel}</span>\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"dialog-header\" className={cn('mz-dialog-header', className)} {...props} />\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"dialog-footer\" className={cn('mz-dialog-footer', className)} {...props} />\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('mz-dialog-title', className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('mz-dialog-description', className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Popover as PopoverPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 6,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn('mz-panel mz-popover-content', className)}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"popover-header\" className={cn('mz-popover-header', className)} {...props} />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<'h2'>) {\n return <h2 data-slot=\"popover-title\" className={cn('mz-popover-title', className)} {...props} />\n}\n\nfunction PopoverDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"popover-description\"\n className={cn('mz-popover-description', className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { DropdownMenu as DropdownMenuPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { CheckIcon, ChevronRightIcon, DotIcon } from '../lib/icons'\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 6,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn('mz-panel mz-menu-content', className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: 'default' | 'destructive'\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n 'mz-item',\n inset ? 'mz-item--inset' : 'mz-item--plain',\n variant === 'destructive' && 'mz-item--destructive',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn('mz-item', className)}\n checked={checked}\n {...props}\n >\n <span className=\"mz-item__indicator\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return <DropdownMenuPrimitive.RadioGroup data-slot=\"dropdown-menu-radio-group\" {...props} />\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn('mz-item', className)}\n {...props}\n >\n <span className=\"mz-item__indicator\">\n <DropdownMenuPrimitive.ItemIndicator>\n <DotIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & { inset?: boolean }) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn('mz-menu-label', inset && 'mz-menu-label--inset', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn('mz-menu-separator', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn('mz-menu-shortcut', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & { inset?: boolean }) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n 'mz-item mz-menu-sub-trigger',\n inset ? 'mz-item--inset' : 'mz-item--plain',\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"mz-menu-sub-trigger__icon\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn('mz-panel mz-menu-content', className)}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Tooltip as TooltipPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\n// Radix requires a provider above every Tooltip.Root, so one is created on\n// demand — but only when the app has not supplied its own, otherwise the\n// app-level delayDuration and skipDelayDuration grouping would be shadowed.\nconst TooltipProviderPresence = React.createContext(false)\n\nfunction TooltipProvider({\n delayDuration = 200,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipProviderPresence.Provider value={true}>\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n >\n {children}\n </TooltipPrimitive.Provider>\n </TooltipProviderPresence.Provider>\n )\n}\n\nfunction Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n const hasProvider = React.useContext(TooltipProviderPresence)\n const root = <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n\n return hasProvider ? root : <TooltipProvider>{root}</TooltipProvider>\n}\n\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 6,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn('mz-tooltip-content', className)}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"mz-tooltip-arrow\" width={10} height={5} />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","'use client'\n\nimport * as React from 'react'\nimport { Dialog as SheetPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { XIcon } from '../lib/icons'\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn('mz-dialog-overlay', className)}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n closeLabel = 'Close',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left'\n showCloseButton?: boolean\n closeLabel?: string\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn('mz-sheet', className)}\n {...props}\n >\n {children}\n {showCloseButton ? (\n <SheetPrimitive.Close data-slot=\"sheet-close\" className=\"mz-dialog-close mz-focusable\">\n <XIcon />\n <span className=\"mz-sr-only\">{closeLabel}</span>\n </SheetPrimitive.Close>\n ) : null}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-header\" className={cn('mz-sheet__header', className)} {...props} />\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-footer\" className={cn('mz-sheet__footer', className)} {...props} />\n}\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('mz-dialog-title', className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('mz-dialog-description', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetPortal,\n SheetOverlay,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","'use client'\n\nimport * as React from 'react'\n\n/**\n * Viewport-width check for layout decisions that CSS cannot make on its own —\n * the sidebar swaps to an overlay sheet rather than restyling in place.\n * Returns false during SSR and the first client render, so hydration matches.\n */\nexport function useIsMobile(breakpoint = 768) {\n const [isMobile, setIsMobile] = React.useState(false)\n\n React.useEffect(() => {\n const query = window.matchMedia(`(max-width: ${breakpoint - 1}px)`)\n const update = () => setIsMobile(query.matches)\n update()\n query.addEventListener('change', update)\n return () => query.removeEventListener('change', update)\n }, [breakpoint])\n\n return isMobile\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Slot } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { ChevronLeftIcon } from '../lib/icons'\nimport { useIsMobile } from '../lib/use-is-mobile'\nimport { Input } from './input'\nimport { Separator } from './separator'\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from './sheet'\nimport { Skeleton } from './skeleton'\nimport { Tooltip, TooltipContent, TooltipTrigger } from './tooltip'\n\nconst STORAGE_KEY = 'morze-ui-sidebar'\nconst SHORTCUT = 'b'\n\ntype SidebarContextValue = {\n /** `expanded` | `collapsed` — what is painted, mobile aside. */\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) throw new Error('useSidebar must be used inside <SidebarProvider>')\n return context\n}\n\nfunction readStored(key: string | null): boolean | null {\n if (!key || typeof window === 'undefined') return null\n try {\n const raw = window.localStorage.getItem(key)\n return raw === null ? null : raw === 'true'\n } catch {\n return null\n }\n}\n\ntype SidebarProviderProps = React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n /** localStorage key for the collapsed state; `null` disables persistence. */\n storageKey?: string | null\n /** Width below which the sidebar becomes an overlay sheet. */\n mobileBreakpoint?: number\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange,\n storageKey = STORAGE_KEY,\n mobileBreakpoint = 768,\n className,\n style,\n children,\n ...props\n}: SidebarProviderProps) {\n const isMobile = useIsMobile(mobileBreakpoint)\n const [openMobile, setOpenMobile] = React.useState(false)\n // Server and first client render both start from defaultOpen; the stored\n // preference lands in an effect so hydration cannot mismatch.\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n\n React.useEffect(() => {\n const stored = readStored(storageKey)\n if (stored !== null) setInternalOpen(stored)\n }, [storageKey])\n\n const open = openProp ?? internalOpen\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (openProp === undefined) setInternalOpen(next)\n onOpenChange?.(next)\n if (!storageKey || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(storageKey, String(next))\n } catch {\n /* blocked storage — the state just does not persist */\n }\n },\n [openProp, onOpenChange, storageKey]\n )\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) setOpenMobile((current) => !current)\n else setOpen(!open)\n }, [isMobile, open, setOpen])\n\n React.useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key.toLowerCase() !== SHORTCUT || !(event.metaKey || event.ctrlKey)) return\n event.preventDefault()\n toggleSidebar()\n }\n window.addEventListener('keydown', onKeyDown)\n return () => window.removeEventListener('keydown', onKeyDown)\n }, [toggleSidebar])\n\n const value = React.useMemo<SidebarContextValue>(\n () => ({\n state: open ? 'expanded' : 'collapsed',\n open,\n setOpen,\n openMobile,\n setOpenMobile,\n isMobile,\n toggleSidebar,\n }),\n [open, setOpen, openMobile, isMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={value}>\n <div\n data-slot=\"sidebar-wrapper\"\n data-state={value.state}\n className={cn('mz-sidebar-layout', className)}\n style={style}\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n )\n}\n\ntype SidebarProps = React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n /** Announced to screen readers when the panel opens as a sheet on mobile. */\n mobileTitle?: string\n mobileDescription?: string\n /**\n * `inset` (default) leaves the navigation on the page background and raises\n * the content in a `SidebarPanel`; `sidebar` gives the navigation its own\n * surface; `floating` lifts it off the edge as a card.\n */\n variant?: 'sidebar' | 'floating' | 'inset'\n /**\n * `icon` keeps a rail of icons, `offcanvas` slides the panel away entirely,\n * `none` pins it open.\n */\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'inset',\n collapsible = 'icon',\n mobileTitle = 'Navigation',\n mobileDescription = 'Application sections',\n className,\n children,\n ...props\n}: SidebarProps) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n // On a narrow screen the sidebar is an overlay, not a column: collapsing to\n // a rail would eat the little width that is left.\n if (isMobile && collapsible !== 'none') {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile}>\n <SheetContent\n side={side}\n showCloseButton={false}\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n // Deliberately without `mz-sidebar`: that class positions a sticky\n // column and would override the sheet's fixed placement.\n className={cn('mz-sidebar--mobile', className)}\n >\n <SheetHeader className=\"mz-sr-only\">\n <SheetTitle>{mobileTitle}</SheetTitle>\n <SheetDescription>{mobileDescription}</SheetDescription>\n </SheetHeader>\n <div className=\"mz-sidebar__inner\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n data-slot=\"sidebar\"\n data-state={state}\n data-side={side}\n data-variant={variant}\n data-collapsible={collapsible === 'none' ? undefined : collapsible}\n className={cn('mz-sidebar', className)}\n {...props}\n >\n <div className=\"mz-sidebar__inner\">{children}</div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n label = 'Toggle sidebar',\n ...props\n}: React.ComponentProps<'button'> & { label?: string }) {\n const { toggleSidebar, state } = useSidebar()\n return (\n <button\n type=\"button\"\n data-slot=\"sidebar-trigger\"\n data-state={state}\n aria-label={label}\n title={label}\n className={cn('mz-sidebar__trigger mz-focusable', className)}\n onClick={(event) => {\n onClick?.(event)\n if (!event.defaultPrevented) toggleSidebar()\n }}\n {...props}\n >\n <ChevronLeftIcon />\n </button>\n )\n}\n\n/** Thin strip along the sidebar edge — click anywhere on it to toggle. */\nfunction SidebarRail({\n className,\n label = 'Toggle sidebar',\n ...props\n}: React.ComponentProps<'button'> & { label?: string }) {\n const { toggleSidebar } = useSidebar()\n return (\n <button\n type=\"button\"\n data-slot=\"sidebar-rail\"\n aria-label={label}\n tabIndex={-1}\n className={cn('mz-sidebar__rail', className)}\n onClick={toggleSidebar}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return <main data-slot=\"sidebar-inset\" className={cn('mz-sidebar-inset', className)} {...props} />\n}\n\n/**\n * The raised content surface next to the navigation. Anything that belongs on\n * the page background — a top bar, breadcrumbs — goes in `SidebarInset` above\n * it, not inside.\n */\nfunction SidebarPanel({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-panel\" className={cn('mz-sidebar-panel', className)} {...props} />\n}\n\nfunction SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return (\n <Input data-slot=\"sidebar-input\" inputSize=\"sm\" className={cn('mz-sidebar__input', className)} {...props} />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" className={cn('mz-sidebar__header', className)} {...props} />\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-footer\" className={cn('mz-sidebar__footer', className)} {...props} />\n}\n\nfunction SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n className={cn('mz-sidebar__separator', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-content\" className={cn('mz-sidebar__content', className)} {...props} />\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" className={cn('mz-sidebar__group', className)} {...props} />\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'div'\n return (\n <Comp data-slot=\"sidebar-group-label\" className={cn('mz-sidebar__group-label', className)} {...props} />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'button'\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n className={cn('mz-sidebar__group-action mz-focusable', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"sidebar-group-content\" className={cn('mz-sidebar__group-content', className)} {...props} />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" className={cn('mz-sidebar__menu', className)} {...props} />\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" className={cn('mz-sidebar__menu-item', className)} {...props} />\n}\n\ntype SidebarMenuButtonProps = React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n size?: 'sm' | 'md' | 'lg'\n /** Shown as a tooltip while the sidebar is collapsed to icons. */\n tooltip?: React.ReactNode\n}\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n size = 'md',\n tooltip,\n className,\n ...props\n}: SidebarMenuButtonProps) {\n const Comp = asChild ? Slot.Root : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-size={size}\n data-active={isActive || undefined}\n className={cn('mz-sidebar__menu-button mz-focusable', className)}\n {...props}\n />\n )\n\n // The label is clipped in the rail, so it is offered as a tooltip instead.\n if (!tooltip || state !== 'collapsed' || isMobile) return button\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\">\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean; showOnHover?: boolean }) {\n const Comp = asChild ? Slot.Root : 'button'\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-hover-only={showOnHover || undefined}\n className={cn('mz-sidebar__menu-action mz-focusable', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"sidebar-menu-badge\" className={cn('mz-sidebar__menu-badge', className)} {...props} />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & { showIcon?: boolean }) {\n // A stable pseudo-random width keeps the placeholder from re-flowing.\n const width = React.useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, [])\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n className={cn('mz-sidebar__menu-skeleton', className)}\n {...props}\n >\n {showIcon ? <Skeleton className=\"mz-sidebar__menu-skeleton-icon\" /> : null}\n <Skeleton className=\"mz-sidebar__menu-skeleton-text\" style={{ width }} />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu-sub\" className={cn('mz-sidebar__menu-sub', className)} {...props} />\n}\n\nfunction SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li data-slot=\"sidebar-menu-sub-item\" className={cn('mz-sidebar__menu-sub-item', className)} {...props} />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n isActive = false,\n size = 'md',\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n isActive?: boolean\n size?: 'sm' | 'md'\n}) {\n const Comp = asChild ? Slot.Root : 'a'\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-size={size}\n data-active={isActive || undefined}\n className={cn('mz-sidebar__menu-sub-button mz-focusable', className)}\n {...props}\n />\n )\n}\n\nexport {\n useSidebar,\n SidebarProvider,\n Sidebar,\n SidebarTrigger,\n SidebarRail,\n SidebarInset,\n SidebarPanel,\n SidebarInput,\n SidebarHeader,\n SidebarFooter,\n SidebarSeparator,\n SidebarContent,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarMenuSubButton,\n}\nexport type { SidebarProps, SidebarProviderProps, SidebarMenuButtonProps }\n","'use client'\n\nimport * as React from 'react'\n\nimport { Input } from '../input'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport type { EditableDef } from './types'\n\n/**\n * Optimistic by design: the cell shows the new value immediately and rolls\n * back if the save rejects, so a slow backend never blocks typing.\n */\nexport function CellEditor<T>({\n row,\n def,\n onDone,\n}: {\n row: T\n def: EditableDef<T>\n onDone: () => void\n}) {\n const initial = def.value(row)\n const [value, setValue] = React.useState(initial)\n const [saving, setSaving] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n\n const commit = async () => {\n if (value === initial) return onDone()\n setSaving(true)\n try {\n await def.onSave(row, value)\n onDone()\n } catch (cause) {\n setValue(initial)\n setError(cause instanceof Error ? cause.message : 'Could not save')\n setSaving(false)\n }\n }\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n void commit()\n }\n if (event.key === 'Escape') {\n event.preventDefault()\n onDone()\n }\n }\n\n if (def.type === 'select') {\n return (\n <Select\n open\n value={value}\n onValueChange={async (next) => {\n setValue(next)\n setSaving(true)\n try {\n await def.onSave(row, next)\n onDone()\n } catch {\n setValue(initial)\n setSaving(false)\n }\n }}\n onOpenChange={(open) => !open && onDone()}\n >\n <SelectTrigger size=\"sm\" className=\"mz-dt__editor\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {(def.options ?? []).map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n }\n\n return (\n <Input\n autoFocus\n inputSize=\"sm\"\n type={def.type === 'number' ? 'number' : 'text'}\n className=\"mz-dt__editor\"\n value={value}\n disabled={saving}\n aria-invalid={error ? true : undefined}\n title={error ?? undefined}\n onChange={(event) => setValue(event.target.value)}\n onKeyDown={onKeyDown}\n onBlur={() => void commit()}\n />\n )\n}\n","/**\n * Every visible string the table owns, in one place. Defaults are English;\n * pass a partial `labels` object to translate or reword any of them.\n */\nexport type DataTableLabels = {\n filter: string\n filterFor: (column: string) => string\n filterActive: string\n contains: string\n apply: string\n reset: string\n resetAll: string\n resetFilters: string\n clearFilter: string\n rangeFrom: string\n rangeTo: string\n dateFrom: string\n dateTo: string\n yes: string\n no: string\n\n columns: string\n moveUp: (column: string) => string\n moveDown: (column: string) => string\n pinning: (column: string, side: string) => string\n pinnedLeft: string\n pinnedRight: string\n notPinned: string\n show: (column: string) => string\n hide: (column: string) => string\n\n sortBy: (column: string) => string\n columnWidth: (column: string) => string\n selectPage: string\n selectRow: string\n expandRow: string\n collapseRow: string\n details: string\n\n empty: string\n retry: string\n\n rowsPerPage: string\n nothingFound: string\n of: string\n firstPage: string\n previousPage: string\n nextPage: string\n lastPage: string\n loadMore: string\n loadingMore: string\n\n selectedCount: (count: string) => string\n allMatchingSuffix: string\n selectAllMatching: (total: string) => string\n clearSelection: string\n bulkActions: string\n}\n\nexport const defaultDataTableLabels: DataTableLabels = {\n filter: 'Filter',\n filterFor: (column) => `Filter: ${column}`,\n filterActive: 'active',\n contains: 'Contains…',\n apply: 'Apply',\n reset: 'Reset',\n resetAll: 'Reset all',\n resetFilters: 'Reset filters',\n clearFilter: 'Clear filter',\n rangeFrom: 'from',\n rangeTo: 'to',\n dateFrom: 'From',\n dateTo: 'To',\n yes: 'Yes',\n no: 'No',\n\n columns: 'Columns',\n moveUp: (column) => `Move “${column}” up`,\n moveDown: (column) => `Move “${column}” down`,\n pinning: (column, side) => `Pinning for “${column}”: ${side}`,\n pinnedLeft: 'Left',\n pinnedRight: 'Right',\n notPinned: 'Not pinned',\n show: (column) => `Show “${column}”`,\n hide: (column) => `Hide “${column}”`,\n\n sortBy: (column) => `Sort by “${column}” (Shift to add to the sort)`,\n columnWidth: (column) => `Width of column “${column}”`,\n selectPage: 'Select page',\n selectRow: 'Select row',\n expandRow: 'Expand',\n collapseRow: 'Collapse',\n details: 'Details',\n\n empty: 'Nothing found',\n retry: 'Retry',\n\n rowsPerPage: 'Rows per page',\n nothingFound: 'Nothing found',\n of: 'of',\n firstPage: 'First page',\n previousPage: 'Previous page',\n nextPage: 'Next page',\n lastPage: 'Last page',\n loadMore: 'Load more',\n loadingMore: 'Loading…',\n\n selectedCount: (count) => `Selected: ${count}`,\n allMatchingSuffix: ' (all matching)',\n selectAllMatching: (total) => `Select all ${total}`,\n clearSelection: 'Clear selection',\n bulkActions: 'Actions for the selected rows',\n}\n\nexport function resolveLabels(labels?: Partial<DataTableLabels>): DataTableLabels {\n return labels ? { ...defaultDataTableLabels, ...labels } : defaultDataTableLabels\n}\n","import type { DataTableFilters, DataTableQuery, DataTableSort, FilterValue } from './types'\n\n/** A filter that carries no constraint should never reach the backend. */\nexport function isFilterActive(value: FilterValue | undefined): value is FilterValue {\n if (!value) return false\n switch (value.type) {\n case 'text':\n return value.value.trim().length > 0\n case 'select':\n return value.value.length > 0\n case 'number-range':\n return value.min !== undefined || value.max !== undefined\n case 'date-range':\n return Boolean(value.from || value.to)\n case 'boolean':\n return true\n case 'custom':\n // The shape belongs to the host widget, so activeness is structural:\n // anything that is not empty counts as a constraint.\n return !(\n value.value === undefined ||\n value.value === null ||\n value.value === '' ||\n (Array.isArray(value.value) && value.value.length === 0)\n )\n }\n}\n\nexport function activeFilters(filters: DataTableFilters): [string, FilterValue][] {\n return Object.entries(filters).filter(([, value]) => isFilterActive(value)) as [\n string,\n FilterValue,\n ][]\n}\n\nexport function setFilter(\n query: DataTableQuery,\n id: string,\n value: FilterValue | undefined\n): DataTableQuery {\n const filters = { ...query.filters }\n if (isFilterActive(value)) filters[id] = value\n else delete filters[id]\n // Any filter change invalidates the current offset.\n return { ...query, filters, page: 1 }\n}\n\n/**\n * Click cycles asc → desc → off. With `additive` (shift-click) the column joins\n * the existing sort instead of replacing it, which is how multi-sort is\n * expressed to the backend as an ordered list.\n */\nexport function toggleSort(\n query: DataTableQuery,\n id: string,\n additive = false\n): DataTableQuery {\n const existing = query.sort.find((s) => s.id === id)\n const next: DataTableSort[] = additive ? query.sort.filter((s) => s.id !== id) : []\n\n if (!existing) next.push({ id, dir: 'asc' })\n else if (existing.dir === 'asc') next.push({ id, dir: 'desc' })\n // a third click drops the column from the sort entirely\n\n return { ...query, sort: next, page: 1 }\n}\n\nexport function sortStateOf(query: DataTableQuery, id: string) {\n const index = query.sort.findIndex((s) => s.id === id)\n if (index < 0) return { dir: undefined, index: undefined }\n return { dir: query.sort[index]!.dir, index: query.sort.length > 1 ? index + 1 : undefined }\n}\n\nexport function pageCount(total: number | undefined, pageSize: number) {\n if (!total || pageSize <= 0) return 1\n return Math.max(1, Math.ceil(total / pageSize))\n}\n\n/** Compact URL form: `-date,name` → [{date desc}, {name asc}]. */\nexport function serializeSort(sort: DataTableSort[]) {\n return sort.map((s) => (s.dir === 'desc' ? `-${s.id}` : s.id)).join(',')\n}\n\nexport function parseSort(raw: string | null): DataTableSort[] {\n if (!raw) return []\n return raw\n .split(',')\n .filter(Boolean)\n .map((token) =>\n token.startsWith('-')\n ? { id: token.slice(1), dir: 'desc' as const }\n : { id: token, dir: 'asc' as const }\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../../lib/utils'\nimport { FilterIcon } from '../../lib/icons'\nimport { Button } from '../button'\nimport { Checkbox } from '../checkbox'\nimport { Input } from '../input'\nimport { Label } from '../label'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { defaultDataTableLabels, resolveLabels, type DataTableLabels } from './labels'\nimport type { ColumnFilterDef, FilterValue } from './types'\nimport { isFilterActive } from './utils'\n\ntype Props = {\n columnLabel: string\n def: ColumnFilterDef\n value: FilterValue | undefined\n onApply: (value: FilterValue | undefined) => void\n labels?: Partial<DataTableLabels>\n}\n\n/**\n * Filters are staged locally and committed on Apply. On server-driven data an\n * immediate commit would fire a request per keystroke.\n */\nexport function ColumnFilter({ columnLabel, def, value, onApply, labels: labelsProp }: Props) {\n const labels = resolveLabels(labelsProp)\n const [open, setOpen] = React.useState(false)\n const [draft, setDraft] = React.useState<FilterValue | undefined>(value)\n\n React.useEffect(() => {\n if (open) setDraft(value)\n }, [open, value])\n\n const active = isFilterActive(value)\n\n const commit = (next: FilterValue | undefined) => {\n onApply(isFilterActive(next) ? next : undefined)\n setOpen(false)\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"data-table-filter-trigger\"\n data-active={active || undefined}\n className=\"mz-dt__filter mz-focusable\"\n aria-label={`${labels.filterFor(columnLabel)}${active ? ` (${labels.filterActive})` : ''}`}\n title={labels.filterFor(columnLabel)}\n >\n <FilterIcon />\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"mz-dt__filter-panel\">\n <div className=\"mz-dt__filter-head\">{columnLabel}</div>\n <FilterBody\n def={def}\n draft={draft}\n setDraft={setDraft}\n labels={labels}\n onSubmit={() => commit(draft)}\n onCommit={commit}\n />\n {def.type === 'custom' && def.actions === false ? null : (\n <div className=\"mz-dt__filter-actions\">\n <Button size=\"sm\" variant=\"ghost\" onClick={() => commit(undefined)}>\n {labels.reset}\n </Button>\n <Button size=\"sm\" onClick={() => commit(draft)}>\n {labels.apply}\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n )\n}\n\nfunction FilterBody({\n def,\n draft,\n setDraft,\n labels,\n onSubmit,\n onCommit,\n}: {\n def: ColumnFilterDef\n draft: FilterValue | undefined\n setDraft: (value: FilterValue | undefined) => void\n labels: DataTableLabels\n onSubmit: () => void\n onCommit: (value: FilterValue | undefined) => void\n}) {\n const submitOnEnter = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n onSubmit()\n }\n }\n\n if (def.type === 'text') {\n const current = draft?.type === 'text' ? draft.value : ''\n return (\n <Input\n autoFocus\n inputSize=\"sm\"\n placeholder={def.placeholder ?? labels.contains}\n value={current}\n onKeyDown={submitOnEnter}\n onChange={(e) => setDraft({ type: 'text', value: e.target.value })}\n />\n )\n }\n\n if (def.type === 'select') {\n const current = draft?.type === 'select' ? draft.value : []\n const toggle = (option: string) => {\n if (def.multiple === false) {\n setDraft({ type: 'select', value: current.includes(option) ? [] : [option] })\n return\n }\n setDraft({\n type: 'select',\n value: current.includes(option)\n ? current.filter((v) => v !== option)\n : [...current, option],\n })\n }\n return (\n <div className=\"mz-dt__filter-options\" role=\"group\">\n {def.options.map((option) => (\n <label key={option.value} className=\"mz-dt__filter-option\">\n <Checkbox\n size=\"sm\"\n checked={current.includes(option.value)}\n onCheckedChange={() => toggle(option.value)}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n )\n }\n\n if (def.type === 'number-range') {\n const current = draft?.type === 'number-range' ? draft : { type: 'number-range' as const }\n const patch = (part: { min?: number; max?: number }) =>\n setDraft({ type: 'number-range', min: current.min, max: current.max, ...part })\n return (\n <div className=\"mz-dt__filter-range\">\n <Input\n autoFocus\n inputSize=\"sm\"\n type=\"number\"\n step={def.step}\n placeholder={labels.rangeFrom}\n value={current.min ?? ''}\n onKeyDown={submitOnEnter}\n onChange={(e) => patch({ min: e.target.value === '' ? undefined : Number(e.target.value) })}\n />\n <span className=\"mz-dt__filter-dash\">—</span>\n <Input\n inputSize=\"sm\"\n type=\"number\"\n step={def.step}\n placeholder={labels.rangeTo}\n value={current.max ?? ''}\n onKeyDown={submitOnEnter}\n onChange={(e) => patch({ max: e.target.value === '' ? undefined : Number(e.target.value) })}\n />\n </div>\n )\n }\n\n if (def.type === 'date-range') {\n const current = draft?.type === 'date-range' ? draft : { type: 'date-range' as const }\n const patch = (part: { from?: string; to?: string }) =>\n setDraft({ type: 'date-range', from: current.from, to: current.to, ...part })\n return (\n <div className=\"mz-dt__filter-range mz-dt__filter-range--stacked\">\n <Label htmlFor=\"mz-dt-from\">{labels.dateFrom}</Label>\n <Input\n id=\"mz-dt-from\"\n inputSize=\"sm\"\n type=\"date\"\n value={current.from ?? ''}\n onKeyDown={submitOnEnter}\n onChange={(e) => patch({ from: e.target.value || undefined })}\n />\n <Label htmlFor=\"mz-dt-to\">{labels.dateTo}</Label>\n <Input\n id=\"mz-dt-to\"\n inputSize=\"sm\"\n type=\"date\"\n value={current.to ?? ''}\n onKeyDown={submitOnEnter}\n onChange={(e) => patch({ to: e.target.value || undefined })}\n />\n </div>\n )\n }\n\n if (def.type === 'custom') {\n const staged = draft?.type === 'custom' ? draft : undefined\n // An undefined value is how a widget says \"no constraint\", so it maps to a\n // cleared filter rather than to an empty custom value.\n const wrap = (value: unknown, label?: string): FilterValue | undefined =>\n value === undefined ? undefined : { type: 'custom', value, label }\n return (\n <>\n {def.render({\n value: staged?.value,\n label: staged?.label,\n onChange: (value, label) => setDraft(wrap(value, label)),\n commit: (value, label) => onCommit(wrap(value, label)),\n labels,\n })}\n </>\n )\n }\n\n const current = draft?.type === 'boolean' ? draft.value : undefined\n return (\n <div className=\"mz-dt__filter-options\" role=\"radiogroup\">\n {[\n { value: true, label: def.trueLabel ?? labels.yes },\n { value: false, label: def.falseLabel ?? labels.no },\n ].map((option) => (\n <label key={String(option.value)} className=\"mz-dt__filter-option\">\n <Checkbox\n size=\"sm\"\n checked={current === option.value}\n onCheckedChange={(checked) =>\n setDraft(checked ? { type: 'boolean', value: option.value } : undefined)\n }\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n )\n}\n\nexport function FilterChip({\n label,\n onClear,\n clearLabel = defaultDataTableLabels.clearFilter,\n className,\n}: {\n label: React.ReactNode\n onClear: () => void\n clearLabel?: string\n className?: string\n}) {\n return (\n <span className={cn('mz-dt__chip', className)}>\n {label}\n <button type=\"button\" onClick={onClear} aria-label={clearLabel} className=\"mz-focusable\">\n ×\n </button>\n </span>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { ColumnsIcon, EyeIcon, EyeOffIcon, GripIcon, PinIcon } from '../../lib/icons'\nimport { Button } from '../button'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { Separator } from '../separator'\nimport { resolveLabels, type DataTableLabels } from './labels'\nimport type { ColumnLayout, DataTableColumn } from './types'\n\ntype Props<T> = {\n columns: DataTableColumn<T>[]\n layout: ColumnLayout\n onToggleHidden: (id: string) => void\n onSetPinned: (id: string, side: 'left' | 'right' | undefined) => void\n onMove: (id: string, delta: number) => void\n onMoveTo: (id: string, targetId: string) => void\n onReset: () => void\n labels?: Partial<DataTableLabels>\n}\n\n/**\n * Reordering lives here rather than on the header itself: dragging a header\n * would fight the resize handle, and a list gives keyboard users real controls\n * instead of a drag-only affordance.\n */\nexport function ColumnManager<T>({\n columns,\n layout,\n onToggleHidden,\n onSetPinned,\n onMove,\n onMoveTo,\n onReset,\n labels: labelsProp,\n}: Props<T>) {\n const labels = resolveLabels(labelsProp)\n const [dragging, setDragging] = React.useState<string | null>(null)\n const byId = React.useMemo(() => new Map(columns.map((c) => [c.id, c])), [columns])\n const ordered = layout.order\n .map((id) => byId.get(id))\n .filter((c): c is DataTableColumn<T> => Boolean(c))\n const hiddenCount = layout.hidden.length\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"secondary\" size=\"sm\">\n <ColumnsIcon />\n {labels.columns}\n {hiddenCount > 0 ? <span className=\"mz-dt__count\">{ordered.length - hiddenCount}</span> : null}\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" className=\"mz-dt__columns\">\n <div className=\"mz-dt__columns-head\">\n <span>{labels.columns}</span>\n <Button variant=\"link\" size=\"xs\" onClick={onReset}>\n {labels.reset}\n </Button>\n </div>\n <Separator />\n <ul className=\"mz-dt__columns-list\">\n {ordered.map((column, index) => {\n const hidden = layout.hidden.includes(column.id)\n const pinned = layout.pinned[column.id]\n const label = column.label ?? (typeof column.header === 'string' ? column.header : column.id)\n return (\n <li\n key={column.id}\n className=\"mz-dt__columns-item\"\n data-dragging={dragging === column.id || undefined}\n draggable\n onDragStart={() => setDragging(column.id)}\n onDragEnd={() => setDragging(null)}\n onDragOver={(event) => event.preventDefault()}\n onDrop={() => {\n if (dragging && dragging !== column.id) onMoveTo(dragging, column.id)\n setDragging(null)\n }}\n >\n <span className=\"mz-dt__columns-grip\" aria-hidden=\"true\">\n <GripIcon />\n </span>\n <span className=\"mz-dt__columns-label\">{label}</span>\n\n <div className=\"mz-dt__columns-controls\">\n {/* Arrow buttons keep reordering reachable without a pointer. */}\n <button\n type=\"button\"\n className=\"mz-dt__icon-btn mz-focusable\"\n disabled={index === 0}\n onClick={() => onMove(column.id, -1)}\n aria-label={labels.moveUp(label)}\n >\n ↑\n </button>\n <button\n type=\"button\"\n className=\"mz-dt__icon-btn mz-focusable\"\n disabled={index === ordered.length - 1}\n onClick={() => onMove(column.id, 1)}\n aria-label={labels.moveDown(label)}\n >\n ↓\n </button>\n <button\n type=\"button\"\n className=\"mz-dt__icon-btn mz-focusable\"\n data-active={pinned ? true : undefined}\n onClick={() =>\n onSetPinned(column.id, pinned === 'left' ? 'right' : pinned === 'right' ? undefined : 'left')\n }\n aria-label={labels.pinning(\n label,\n pinned === 'left'\n ? labels.pinnedLeft\n : pinned === 'right'\n ? labels.pinnedRight\n : labels.notPinned\n )}\n title={\n pinned === 'left'\n ? labels.pinnedLeft\n : pinned === 'right'\n ? labels.pinnedRight\n : labels.notPinned\n }\n >\n <PinIcon />\n </button>\n <button\n type=\"button\"\n className=\"mz-dt__icon-btn mz-focusable\"\n disabled={column.hideable === false}\n onClick={() => onToggleHidden(column.id)}\n aria-label={hidden ? labels.show(label) : labels.hide(label)}\n >\n {hidden ? <EyeOffIcon /> : <EyeIcon />}\n </button>\n </div>\n </li>\n )\n })}\n </ul>\n </PopoverContent>\n </Popover>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronsLeftIcon,\n ChevronsRightIcon,\n} from '../../lib/icons'\nimport { Button } from '../button'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport { resolveLabels, type DataTableLabels } from './labels'\nimport type { DataTableQuery } from './types'\nimport { pageCount } from './utils'\n\nexport function DataTablePagination({\n query,\n total,\n rowsOnPage,\n pageSizeOptions = [10, 25, 50, 100],\n labels: labelsProp,\n locale,\n onQueryChange,\n}: {\n query: DataTableQuery\n total?: number\n rowsOnPage: number\n /**\n * `false` — or a single option — hides the control: a host whose backend\n * fixes the page size would otherwise show a select that changes nothing.\n */\n pageSizeOptions?: number[] | false\n labels?: Partial<DataTableLabels>\n /** Number formatting locale; defaults to the browser's. */\n locale?: string\n onQueryChange: (query: DataTableQuery) => void\n}) {\n const labels = resolveLabels(labelsProp)\n const sizes = pageSizeOptions === false ? [] : pageSizeOptions\n const pages = pageCount(total, query.pageSize)\n const from = total === 0 ? 0 : (query.page - 1) * query.pageSize + 1\n const to = total === undefined ? from + rowsOnPage - 1 : Math.min(query.page * query.pageSize, total)\n const go = (page: number) => onQueryChange({ ...query, page: Math.min(Math.max(page, 1), pages) })\n\n return (\n <div className=\"mz-dt__pagination\" data-slot=\"data-table-pagination\">\n <div className=\"mz-dt__pagination-info\">\n {total === 0 ? (\n labels.nothingFound\n ) : (\n <>\n {from}–{to}\n {total !== undefined ? (\n <>\n {' '}\n {labels.of} {total.toLocaleString(locale)}\n </>\n ) : null}\n </>\n )}\n </div>\n\n {sizes.length > 1 ? (\n <div className=\"mz-dt__pagination-size\">\n <span>{labels.rowsPerPage}</span>\n <Select\n value={String(query.pageSize)}\n onValueChange={(value) =>\n onQueryChange({ ...query, pageSize: Number(value), page: 1 })\n }\n >\n <SelectTrigger size=\"sm\" className=\"mz-dt__pagination-select\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {sizes.map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n ) : null}\n\n <div className=\"mz-dt__pagination-nav\">\n <span className=\"mz-dt__pagination-page\">\n {query.page} / {pages}\n </span>\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n disabled={query.page <= 1}\n onClick={() => go(1)}\n aria-label={labels.firstPage}\n >\n <ChevronsLeftIcon />\n </Button>\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n disabled={query.page <= 1}\n onClick={() => go(query.page - 1)}\n aria-label={labels.previousPage}\n >\n <ChevronLeftIcon />\n </Button>\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n disabled={query.page >= pages}\n onClick={() => go(query.page + 1)}\n aria-label={labels.nextPage}\n >\n <ChevronRightIcon />\n </Button>\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n disabled={query.page >= pages}\n onClick={() => go(pages)}\n aria-label={labels.lastPage}\n >\n <ChevronsRightIcon />\n </Button>\n </div>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\n/**\n * Dragging writes the live width straight into a CSS custom property on the\n * table root, so a resize repaints the <col> element and nothing else — no\n * React render per pointer move, which matters once hundreds of cells are\n * mounted. State is committed once, on pointer up.\n */\nexport function useColumnResize(options: {\n rootRef: React.RefObject<HTMLElement | null>\n widthOf: (id: string) => number\n minWidthOf: (id: string) => number\n onCommit: (id: string, width: number) => void\n}) {\n const { rootRef, widthOf, minWidthOf, onCommit } = options\n const [resizing, setResizing] = React.useState<string | null>(null)\n\n const varName = (id: string) => `--mz-dt-w-${cssSafe(id)}`\n\n const start = React.useCallback(\n (event: React.PointerEvent<HTMLElement>, id: string) => {\n // Only the primary button starts a resize; let everything else through.\n if (event.button !== 0) return\n event.preventDefault()\n event.stopPropagation()\n\n const root = rootRef.current\n if (!root) return\n\n const handle = event.currentTarget\n const startX = event.clientX\n const startWidth = widthOf(id)\n const min = minWidthOf(id)\n let width = startWidth\n\n handle.setPointerCapture(event.pointerId)\n setResizing(id)\n\n const onMove = (moveEvent: PointerEvent) => {\n width = Math.max(min, Math.round(startWidth + moveEvent.clientX - startX))\n root.style.setProperty(varName(id), `${width}px`)\n }\n\n const finish = () => {\n handle.releasePointerCapture?.(event.pointerId)\n handle.removeEventListener('pointermove', onMove)\n handle.removeEventListener('pointerup', finish)\n handle.removeEventListener('pointercancel', finish)\n setResizing(null)\n if (width !== startWidth) onCommit(id, width)\n }\n\n handle.addEventListener('pointermove', onMove)\n handle.addEventListener('pointerup', finish)\n handle.addEventListener('pointercancel', finish)\n },\n [rootRef, widthOf, minWidthOf, onCommit]\n )\n\n /** Double click fits the column to its widest rendered cell. */\n const autoFit = React.useCallback(\n (id: string) => {\n const root = rootRef.current\n if (!root) return\n const cells = root.querySelectorAll<HTMLElement>(`[data-col=\"${CSS.escape(id)}\"]`)\n let widest = minWidthOf(id)\n cells.forEach((cell) => {\n const content = cell.firstElementChild as HTMLElement | null\n const padding = 26\n widest = Math.max(widest, (content?.scrollWidth ?? cell.scrollWidth) + padding)\n })\n const width = Math.min(widest, 640)\n root.style.setProperty(varName(id), `${width}px`)\n onCommit(id, width)\n },\n [rootRef, minWidthOf, onCommit]\n )\n\n /** Keyboard resizing — the handle is focusable, arrows nudge the width. */\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent, id: string) => {\n const step = event.shiftKey ? 32 : 8\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return\n event.preventDefault()\n const next = Math.max(\n minWidthOf(id),\n widthOf(id) + (event.key === 'ArrowRight' ? step : -step)\n )\n rootRef.current?.style.setProperty(varName(id), `${next}px`)\n onCommit(id, next)\n },\n [rootRef, widthOf, minWidthOf, onCommit]\n )\n\n return { start, autoFit, onKeyDown, resizing, varName }\n}\n\n/** Column ids are author-supplied, so they are sanitised for use in a var name. */\nexport function cssSafe(id: string) {\n return id.replace(/[^a-zA-Z0-9_-]/g, '_')\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport type { ColumnLayout, DataTableColumn } from './types'\n\nconst DEFAULT_WIDTH = 168\nconst DEFAULT_MIN = 72\n\nfunction readStored(key: string | null): Partial<ColumnLayout> | null {\n if (!key || typeof window === 'undefined') return null\n try {\n const raw = window.localStorage.getItem(key)\n return raw ? (JSON.parse(raw) as Partial<ColumnLayout>) : null\n } catch {\n return null\n }\n}\n\nfunction writeStored(key: string | null, layout: ColumnLayout) {\n if (!key || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(key, JSON.stringify(layout))\n } catch {\n /* blocked storage — the layout simply does not persist */\n }\n}\n\nexport type UseColumnLayoutOptions<T> = {\n columns: DataTableColumn<T>[]\n /** localStorage key for widths, order, visibility and pinning. */\n persistKey?: string | null\n layout?: Partial<ColumnLayout>\n onLayoutChange?: (layout: ColumnLayout) => void\n}\n\nexport function useColumnLayout<T>({\n columns,\n persistKey = null,\n layout: controlled,\n onLayoutChange,\n}: UseColumnLayoutOptions<T>) {\n const baseline = React.useMemo<ColumnLayout>(\n () => ({\n order: columns.map((c) => c.id),\n hidden: [],\n widths: Object.fromEntries(\n columns.map((c) => [c.id, c.width ?? DEFAULT_WIDTH])\n ) as Record<string, number>,\n pinned: Object.fromEntries(columns.map((c) => [c.id, c.pinned])) as ColumnLayout['pinned'],\n sized: [],\n }),\n [columns]\n )\n\n const [internal, setInternal] = React.useState<ColumnLayout>(baseline)\n\n // Stored layout is applied after mount so the first client render matches SSR.\n React.useEffect(() => {\n const stored = readStored(persistKey)\n if (stored) setInternal((current) => merge(current, stored, baseline))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [persistKey])\n\n // A column added or removed in code must not be stranded by a stale layout.\n React.useEffect(() => {\n setInternal((current) => merge(baseline, current, baseline))\n }, [baseline])\n\n const layout = React.useMemo(\n () => (controlled ? merge(baseline, controlled, baseline) : internal),\n [controlled, internal, baseline]\n )\n\n // Kept current after every commit, so `update` — and the `fitTo` the table\n // hands to a ResizeObserver as an effect dependency — keep a stable identity\n // even when the host passes a fresh callback on every render.\n const onLayoutChangeRef = React.useRef(onLayoutChange)\n React.useEffect(() => {\n onLayoutChangeRef.current = onLayoutChange\n })\n\n // Mirrors the committed layout so the next one can be derived outside the\n // state updater. Assigned eagerly in `update` too, so two calls in the same\n // tick still build on each other rather than on a stale snapshot.\n const internalRef = React.useRef(internal)\n React.useEffect(() => {\n internalRef.current = internal\n }, [internal])\n\n const update = React.useCallback(\n (patch: (current: ColumnLayout) => ColumnLayout, options?: { persist?: boolean }) => {\n const base = controlled ? merge(baseline, controlled, baseline) : internalRef.current\n const next = patch(base)\n if (next === base) return\n internalRef.current = next\n setInternal(next)\n // Storage and the host callback are effects of the change, not part of\n // computing it. React may run a state updater more than once for a single\n // commit — under StrictMode it always does — which wrote the layout twice\n // and reported one user action to the host twice.\n // Auto-fit is derived from the container, so it is never stored:\n // otherwise the saved widths would depend on the last viewport used.\n if (options?.persist !== false) {\n writeStored(persistKey, next)\n onLayoutChangeRef.current?.(next)\n }\n },\n [controlled, baseline, persistKey]\n )\n\n const byId = React.useMemo(\n () => new Map(columns.map((c) => [c.id, c])),\n [columns]\n )\n\n /** Visible columns in display order, pinned edges first and last. */\n const visible = React.useMemo(() => {\n const ordered = layout.order\n .map((id) => byId.get(id))\n .filter((c): c is DataTableColumn<T> => Boolean(c) && !layout.hidden.includes(c!.id))\n const side = (id: string) => layout.pinned[id]\n return [\n ...ordered.filter((c) => side(c.id) === 'left'),\n ...ordered.filter((c) => !side(c.id)),\n ...ordered.filter((c) => side(c.id) === 'right'),\n ]\n }, [layout, byId])\n\n const widthOf = React.useCallback(\n (id: string) => layout.widths[id] ?? byId.get(id)?.width ?? DEFAULT_WIDTH,\n [layout.widths, byId]\n )\n\n const minWidthOf = React.useCallback(\n (id: string) => byId.get(id)?.minWidth ?? DEFAULT_MIN,\n [byId]\n )\n\n /**\n * Stretches the flexible columns so the row fills `available` exactly — no\n * gap at the right edge on a wide screen. When even the minimum widths do\n * not fit, nothing is touched and the table scrolls sideways instead.\n * Memoised: the DataTable observes the container with it as an effect dep.\n */\n /**\n * Stretches the flexible columns so the row fills `available` exactly — no\n * dead space at the right edge on a wide screen. Widths are always derived\n * from the declared ones rather than the current ones, so the result depends\n * only on the container: growing and shrinking the window returns to the\n * same layout instead of drifting. When even the declared widths do not fit,\n * they are used as-is and the table scrolls sideways.\n * Memoised — the DataTable observes the container with it as an effect dep.\n */\n const fitTo = React.useCallback(\n (available: number) =>\n update(\n (current) => {\n const shown = current.order\n .map((id) => byId.get(id))\n .filter((c): c is DataTableColumn<T> => Boolean(c) && !current.hidden.includes(c!.id))\n if (!shown.length || available <= 0) return current\n\n const baseOf = (c: DataTableColumn<T>) => c.width ?? DEFAULT_WIDTH\n const isFlexible = (c: DataTableColumn<T>) =>\n c.flex !== false && !current.sized.includes(c.id)\n\n const flexible = shown.filter(isFlexible)\n if (!flexible.length) return current\n\n const fixedTotal = shown\n .filter((c) => !isFlexible(c))\n .reduce((sum, c) => sum + (current.widths[c.id] ?? baseOf(c)), 0)\n const flexBaseTotal = flexible.reduce((sum, c) => sum + baseOf(c), 0)\n const target = available - fixedTotal\n\n const next: Record<string, number> = { ...current.widths }\n\n // Not enough room even at the declared widths — fall back to them and\n // let the scroller do its job.\n if (target <= flexBaseTotal) {\n for (const column of flexible) {\n next[column.id] = Math.max(baseOf(column), column.minWidth ?? DEFAULT_MIN)\n }\n } else {\n let remaining = target\n let pool = flexBaseTotal\n const growing = [...flexible]\n\n // Columns pinned by min/max hand their surplus back, so the row\n // still adds up to `available` once the bounds are honoured.\n for (let pass = 0; pass < 3 && growing.length; pass += 1) {\n const scale = remaining / pool\n const clamped: DataTableColumn<T>[] = []\n for (const column of growing) {\n const min = column.minWidth ?? DEFAULT_MIN\n const max = column.maxWidth ?? Infinity\n const scaled = baseOf(column) * scale\n const bounded = Math.min(Math.max(scaled, min), max)\n if (bounded !== scaled) {\n next[column.id] = Math.round(bounded)\n remaining -= bounded\n pool -= baseOf(column)\n clamped.push(column)\n }\n }\n if (!clamped.length) break\n growing.splice(0, growing.length, ...growing.filter((c) => !clamped.includes(c)))\n }\n\n if (growing.length) {\n const scale = remaining / pool\n let used = 0\n growing.forEach((column, index) => {\n if (index === growing.length - 1) {\n // Last column swallows the rounding error so the sum is exact.\n next[column.id] = Math.round(remaining - used)\n } else {\n const width = Math.round(baseOf(column) * scale)\n next[column.id] = width\n used += width\n }\n })\n }\n }\n\n const changed = shown.some(\n (c) => Math.abs((next[c.id] ?? 0) - (current.widths[c.id] ?? baseOf(c))) > 0.5\n )\n return changed ? { ...current, widths: next } : current\n },\n { persist: false }\n ),\n [update, byId]\n )\n\n return {\n layout,\n visible,\n widthOf,\n minWidthOf,\n setWidth: (id: string, width: number) =>\n update((c) => ({\n ...c,\n widths: { ...c.widths, [id]: width },\n sized: c.sized.includes(id) ? c.sized : [...c.sized, id],\n })),\n\n fitTo,\n\n toggleHidden: (id: string) =>\n update((c) => ({\n ...c,\n hidden: c.hidden.includes(id) ? c.hidden.filter((h) => h !== id) : [...c.hidden, id],\n })),\n setPinned: (id: string, side: 'left' | 'right' | undefined) =>\n update((c) => ({ ...c, pinned: { ...c.pinned, [id]: side } })),\n move: (id: string, delta: number) =>\n update((c) => {\n const order = [...c.order]\n const from = order.indexOf(id)\n const to = Math.min(Math.max(from + delta, 0), order.length - 1)\n if (from < 0 || from === to) return c\n order.splice(to, 0, ...order.splice(from, 1))\n return { ...c, order }\n }),\n moveTo: (id: string, targetId: string) =>\n update((c) => {\n const order = [...c.order]\n const from = order.indexOf(id)\n const to = order.indexOf(targetId)\n if (from < 0 || to < 0 || from === to) return c\n order.splice(to, 0, ...order.splice(from, 1))\n return { ...c, order }\n }),\n reset: () => update(() => baseline),\n }\n}\n\nfunction merge(base: ColumnLayout, patch: Partial<ColumnLayout>, fallback: ColumnLayout): ColumnLayout {\n const known = new Set(fallback.order)\n const order = [\n ...(patch.order ?? base.order).filter((id) => known.has(id)),\n ...fallback.order.filter((id) => !(patch.order ?? base.order).includes(id)),\n ]\n return {\n order,\n hidden: (patch.hidden ?? base.hidden).filter((id) => known.has(id)),\n widths: { ...fallback.widths, ...base.widths, ...patch.widths },\n pinned: { ...fallback.pinned, ...base.pinned, ...patch.pinned },\n sized: (patch.sized ?? base.sized ?? []).filter((id) => known.has(id)),\n }\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport type { RowSelectionState } from './types'\n\n/**\n * Selection is controlled from the outside so bulk actions can live anywhere,\n * but the shift-range anchor is local UI state.\n */\nexport function useRowSelection(options: {\n value: RowSelectionState\n onChange: (next: RowSelectionState) => void\n pageKeys: string[]\n}) {\n const { value, onChange, pageKeys } = options\n const anchor = React.useRef<string | null>(null)\n const selected = React.useMemo(() => new Set(value.keys), [value.keys])\n\n const setKeys = (keys: string[], allMatching = false) => onChange({ keys, allMatching })\n\n const toggle = (key: string, event?: { shiftKey?: boolean }) => {\n // Shift extends from the last clicked row, matching file-manager behaviour.\n if (event?.shiftKey && anchor.current) {\n const from = pageKeys.indexOf(anchor.current)\n const to = pageKeys.indexOf(key)\n if (from >= 0 && to >= 0) {\n const range = pageKeys.slice(Math.min(from, to), Math.max(from, to) + 1)\n const next = new Set(selected)\n const turningOn = !selected.has(key)\n range.forEach((id) => (turningOn ? next.add(id) : next.delete(id)))\n setKeys([...next])\n return\n }\n }\n anchor.current = key\n const next = new Set(selected)\n if (next.has(key)) next.delete(key)\n else next.add(key)\n setKeys([...next])\n }\n\n const pageSelected = pageKeys.length > 0 && pageKeys.every((key) => selected.has(key))\n const pagePartial = !pageSelected && pageKeys.some((key) => selected.has(key))\n\n const togglePage = () => {\n const next = new Set(selected)\n if (pageSelected) pageKeys.forEach((key) => next.delete(key))\n else pageKeys.forEach((key) => next.add(key))\n setKeys([...next])\n }\n\n return {\n selected,\n count: value.allMatching ? undefined : value.keys.length,\n allMatching: value.allMatching,\n pageSelected,\n pagePartial,\n toggle,\n togglePage,\n /** Escalates from \"this page\" to \"everything the filter matches\". */\n selectAllMatching: () => onChange({ keys: value.keys, allMatching: true }),\n clear: () => {\n anchor.current = null\n onChange({ keys: [], allMatching: false })\n },\n }\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../../lib/utils'\nimport {\n AlertIcon,\n ArrowDownIcon,\n ArrowUpIcon,\n ChevronRightIcon,\n InboxIcon,\n SortIcon,\n} from '../../lib/icons'\nimport { Button } from '../button'\nimport { Checkbox } from '../checkbox'\nimport { Skeleton } from '../skeleton'\nimport { CellEditor } from './cell-editor'\nimport { ColumnFilter, FilterChip } from './column-filter'\nimport { ColumnManager } from './column-manager'\nimport { DataTablePagination } from './data-table-pagination'\nimport type {\n ColumnLayout,\n DataTableColumn,\n DataTableQuery,\n RowAttributes,\n RowSelectionState,\n} from './types'\nimport { resolveLabels, type DataTableLabels } from './labels'\nimport { activeFilters, setFilter, sortStateOf, toggleSort } from './utils'\nimport { cssSafe, useColumnResize } from './use-column-resize'\nimport { useColumnLayout } from './use-column-layout'\nimport { useRowSelection } from './use-row-selection'\n\nexport type DataTableProps<T> = {\n columns: DataTableColumn<T>[]\n data: T[]\n rowKey: (row: T) => string\n /** Total matching rows on the server; drives the pager. */\n total?: number\n loading?: boolean\n error?: React.ReactNode\n onRetry?: () => void\n\n query: DataTableQuery\n onQueryChange: (query: DataTableQuery) => void\n\n /** Shift-click extends the range; `allMatching` covers unfetched rows. */\n selection?: RowSelectionState\n onSelectionChange?: (selection: RowSelectionState) => void\n bulkActions?: (selection: RowSelectionState) => React.ReactNode\n\n renderExpanded?: (row: T) => React.ReactNode\n onRowClick?: (row: T) => void\n /** Per-row class name — tinting a row by record state, marking it stale. */\n rowClassName?: (row: T, context: { rowIndex: number }) => string | undefined\n /**\n * Extra attributes for the row element: `data-*`, `title`, `aria-*`, a\n * handler of your own. The table's own attributes win, so this cannot break\n * selection, expansion or the pinned-column seam; a `className` here is\n * merged, and an `onClick` runs before `onRowClick`.\n */\n rowProps?: (row: T, context: { rowIndex: number }) => RowAttributes\n\n layout?: Partial<ColumnLayout>\n onLayoutChange?: (layout: ColumnLayout) => void\n /** localStorage key for widths, order, visibility and pinning. */\n persistKey?: string | null\n\n toolbar?: React.ReactNode\n /**\n * Stretches the columns to fill the container on mount and on container\n * resize, so there is no dead space at the right edge. Columns the user\n * resized by hand keep their width. `false` uses the declared widths as-is.\n */\n autoFit?: boolean\n density?: 'compact' | 'normal' | 'relaxed'\n stickyHeader?: boolean\n emptyState?: React.ReactNode\n /** `false` — or a single option — hides the rows-per-page select. */\n pageSizeOptions?: number[] | false\n /** Renders the pager. Defaults to `false` once `onLoadMore` is given. */\n pagination?: boolean\n /**\n * Appends the next page instead of replacing the current one. Passing it\n * puts a footer inside the table's own scroller — the element an infinite\n * scroll needs to watch, which a host cannot add from the outside.\n */\n onLoadMore?: () => void\n /** Whether anything is left to load. Defaults to `data.length < total`. */\n hasMore?: boolean\n /** `false` waits for a click instead of loading as the footer scrolls in. */\n autoLoadMore?: boolean\n /** Overrides for any of the table's own strings. Defaults are English. */\n labels?: Partial<DataTableLabels>\n /** Locale for number formatting; defaults to the browser's. */\n locale?: string\n caption?: string\n className?: string\n}\n\nconst SELECT_WIDTH = 44\nconst EXPAND_WIDTH = 40\n/** How long a fitted width keeps blocking a re-fit to that same width. */\nconst FIT_CYCLE_MS = 250\n\nexport function DataTable<T>({\n columns,\n data,\n rowKey,\n total,\n loading = false,\n error,\n onRetry,\n query,\n onQueryChange,\n selection,\n onSelectionChange,\n bulkActions,\n renderExpanded,\n onRowClick,\n rowClassName,\n rowProps,\n layout: controlledLayout,\n onLayoutChange,\n persistKey = null,\n toolbar,\n autoFit = true,\n density = 'normal',\n stickyHeader = true,\n emptyState,\n pageSizeOptions,\n pagination,\n onLoadMore,\n hasMore,\n autoLoadMore = true,\n labels: labelsProp,\n locale,\n caption,\n className,\n}: DataTableProps<T>) {\n const labels = resolveLabels(labelsProp)\n const rootRef = React.useRef<HTMLDivElement>(null)\n const scrollerRef = React.useRef<HTMLDivElement>(null)\n const [scrolled, setScrolled] = React.useState({ left: false, right: false })\n const [expanded, setExpanded] = React.useState<Set<string>>(new Set())\n const [editing, setEditing] = React.useState<{ key: string; col: string } | null>(null)\n\n const {\n layout,\n visible,\n widthOf,\n minWidthOf,\n setWidth,\n toggleHidden,\n setPinned,\n move,\n moveTo,\n reset,\n fitTo,\n } = useColumnLayout({ columns, persistKey, layout: controlledLayout, onLayoutChange })\n\n const resize = useColumnResize({ rootRef, widthOf, minWidthOf, onCommit: setWidth })\n\n const selectable = Boolean(selection && onSelectionChange)\n const pageKeys = React.useMemo(() => data.map(rowKey), [data, rowKey])\n const rows = useRowSelection({\n value: selection ?? { keys: [], allMatching: false },\n onChange: onSelectionChange ?? (() => {}),\n pageKeys,\n })\n\n // Fill the row on mount and on container resize.\n //\n // The widths this effect has recently fitted to. A single \"last width\" is not\n // enough: fitting to A can make a scrollbar appear, which makes the next\n // measurement B, and fitting to B makes it disappear again. Both steps differ\n // from the one immediately before, so a last-width guard waves the whole cycle\n // through and the observer keeps re-fitting for as long as the table is shown.\n // Entries expire, so a genuine resize back to an earlier width still fits.\n const recentFits = React.useRef<{ width: number; at: number }[]>([])\n // Hidden and order are compared by value: `merge` hands back fresh arrays on\n // every layout change, and re-subscribing on a width change would clear the\n // cycle history that width change is supposed to be caught by.\n const hiddenKey = layout.hidden.join('\\u0000')\n const orderKey = layout.order.join('\\u0000')\n React.useEffect(() => {\n const scroller = scrollerRef.current\n if (!scroller || !autoFit) return\n const controls = (selectable ? SELECT_WIDTH : 0) + (renderExpanded ? EXPAND_WIDTH : 0)\n // A column hidden, shown or moved has to redistribute into the same width,\n // so the history cannot outlive the layout it was collected for.\n recentFits.current = []\n const run = () => {\n const available = scroller.clientWidth - controls - 2\n const now = Date.now()\n const recent = recentFits.current.filter((entry) => now - entry.at < FIT_CYCLE_MS)\n recentFits.current = recent\n if (recent.some((entry) => Math.abs(available - entry.width) < 1)) return\n recent.push({ width: available, at: now })\n fitTo(available)\n }\n run()\n const observer = new ResizeObserver(run)\n observer.observe(scroller)\n return () => observer.disconnect()\n }, [autoFit, fitTo, selectable, renderExpanded, hiddenKey, orderKey])\n\n // Edge shadows tell the reader there is more table beyond the viewport.\n React.useEffect(() => {\n const scroller = scrollerRef.current\n if (!scroller) return\n const update = () => {\n const max = scroller.scrollWidth - scroller.clientWidth\n const left = scroller.scrollLeft > 1\n const right = scroller.scrollLeft < max - 1\n // A fresh object here would be a new state on every observer tick, and any\n // cell whose content reflows during that render feeds the observer again —\n // the two then re-render each other until the tab locks up.\n setScrolled((current) =>\n current.left === left && current.right === right ? current : { left, right }\n )\n }\n update()\n scroller.addEventListener('scroll', update, { passive: true })\n const observer = new ResizeObserver(update)\n observer.observe(scroller)\n return () => {\n scroller.removeEventListener('scroll', update)\n observer.disconnect()\n }\n }, [visible.length, data.length])\n\n /* ------------------------------ Load more ------------------------------\n The footer lives inside the scroller, because that is the element an\n observer has to be rooted at; a host cannot reach in from the outside. */\n const moreRef = React.useRef<HTMLDivElement>(null)\n const onLoadMoreRef = React.useRef(onLoadMore)\n // Kept current after every commit, so the observer below never has to be\n // re-subscribed just because the host passed a fresh closure.\n React.useEffect(() => {\n onLoadMoreRef.current = onLoadMore\n })\n // The row count the last request was made at. One request per batch of rows:\n // a host that answers with nothing new would otherwise be asked forever.\n const askedAt = React.useRef(-1)\n\n const canLoadMore =\n Boolean(onLoadMore) && (hasMore ?? (total === undefined || data.length < total))\n const showLoadMore = canLoadMore && !error && data.length > 0\n const showPager = pagination ?? !onLoadMore\n\n const askForMore = () => {\n if (askedAt.current === data.length) return\n askedAt.current = data.length\n onLoadMoreRef.current?.()\n }\n\n React.useEffect(() => {\n const sentinel = moreRef.current\n const scroller = scrollerRef.current\n if (!sentinel || !scroller || !showLoadMore || !autoLoadMore || loading) return\n if (typeof IntersectionObserver === 'undefined') return\n // Nothing here may touch state: a re-render that reflows a cell feeds the\n // scroller's own observer, and the two can then drive each other (FIXES.md).\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries.some((entry) => entry.isIntersecting)) askForMore()\n },\n { root: scroller, rootMargin: '120px' }\n )\n observer.observe(sentinel)\n // Re-observing on every batch is what keeps an endless scroll going: the\n // fresh observer reports the footer again if it is still in view.\n return () => observer.disconnect()\n }, [showLoadMore, autoLoadMore, loading, data.length])\n\n // Sticky offsets are expressed as a calc() over the width variables, so they\n // stay correct while a column is being resized.\n const offsets = React.useMemo(() => {\n const result = new Map<string, string>()\n let leftParts: string[] = selectable ? [`${SELECT_WIDTH}px`] : []\n if (renderExpanded) leftParts = [...leftParts, `${EXPAND_WIDTH}px`]\n for (const column of visible) {\n if (layout.pinned[column.id] !== 'left') continue\n result.set(column.id, leftParts.length ? `calc(${leftParts.join(' + ')})` : '0px')\n leftParts.push(`var(--mz-dt-w-${cssSafe(column.id)}, ${widthOf(column.id)}px)`)\n }\n const rightParts: string[] = []\n for (const column of [...visible].reverse()) {\n if (layout.pinned[column.id] !== 'right') continue\n result.set(column.id, rightParts.length ? `calc(${rightParts.join(' + ')})` : '0px')\n rightParts.push(`var(--mz-dt-w-${cssSafe(column.id)}, ${widthOf(column.id)}px)`)\n }\n return result\n }, [visible, layout.pinned, widthOf, selectable, renderExpanded])\n\n const widthVars = React.useMemo(() => {\n const style: Record<string, string> = {}\n for (const column of visible) {\n style[`--mz-dt-w-${cssSafe(column.id)}`] = `${widthOf(column.id)}px`\n }\n return style as React.CSSProperties\n }, [visible, widthOf])\n\n // Only the cell on the seam gets the edge shadow, so the cue reads as one\n // boundary rather than a shadow under every pinned column.\n const leftPinned = visible.filter((c) => layout.pinned[c.id] === 'left')\n const rightPinned = visible.filter((c) => layout.pinned[c.id] === 'right')\n const lastLeftPinned = leftPinned[leftPinned.length - 1]?.id\n const firstRightPinned = rightPinned[0]?.id\n const pinEdgeOf = (id: string) =>\n id === lastLeftPinned ? 'left' : id === firstRightPinned ? 'right' : undefined\n // With no pinned data column the control column carries the seam instead.\n const controlPinEdge = leftPinned.length === 0 ? 'left' : undefined\n\n const chips = activeFilters(query.filters)\n const columnById = React.useMemo(() => new Map(columns.map((c) => [c.id, c])), [columns])\n const labelOf = (id: string) => {\n const column = columnById.get(id)\n return column?.label ?? (typeof column?.header === 'string' ? column.header : id)\n }\n\n const toggleExpanded = (key: string) =>\n setExpanded((current) => {\n const next = new Set(current)\n if (next.has(key)) next.delete(key)\n else next.add(key)\n return next\n })\n\n const fillerIndex = visible.length - rightPinned.length\n // +1 for the filler column, so full-width rows really span the table.\n const colSpan = visible.length + 1 + (selectable ? 1 : 0) + (renderExpanded ? 1 : 0)\n const selectionCount = rows.allMatching ? total : rows.count\n\n /* Cells are rendered through helpers so the filler column can be spliced in\n between the scrolling columns and the right-pinned group. */\n const renderHeaderCells = (list: DataTableColumn<T>[]) =>\n list.map((column) => {\n const { dir, index } = sortStateOf(query, column.id)\n const pinned = layout.pinned[column.id]\n const label = labelOf(column.id)\n return (\n <th\n key={column.id}\n data-col={column.id}\n data-pinned={pinned}\n data-pin-edge={pinEdgeOf(column.id)}\n data-align={column.align}\n aria-sort={dir === 'asc' ? 'ascending' : dir === 'desc' ? 'descending' : 'none'}\n className=\"mz-dt__th\"\n style={\n pinned\n ? ({ [pinned]: offsets.get(column.id) } as React.CSSProperties)\n : undefined\n }\n >\n <div className=\"mz-dt__th-inner\">\n {column.sortable ? (\n <button\n type=\"button\"\n className=\"mz-dt__sort mz-focusable\"\n title={labels.sortBy(label)}\n onClick={(event) =>\n onQueryChange(toggleSort(query, column.id, event.shiftKey))\n }\n >\n <span className=\"mz-dt__th-label\">{column.header}</span>\n <span className=\"mz-dt__sort-icon\" data-active={dir ? true : undefined}>\n {dir === 'asc' ? (\n <ArrowUpIcon />\n ) : dir === 'desc' ? (\n <ArrowDownIcon />\n ) : (\n <SortIcon />\n )}\n {index ? <b>{index}</b> : null}\n </span>\n </button>\n ) : (\n <span className=\"mz-dt__th-label\" title={column.headerTitle}>\n {column.header}\n </span>\n )}\n\n {column.filter ? (\n <ColumnFilter\n columnLabel={label}\n def={column.filter}\n value={query.filters[column.id]}\n onApply={(value) => onQueryChange(setFilter(query, column.id, value))}\n />\n ) : null}\n </div>\n\n {column.resizable === false ? null : (\n <span\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={labels.columnWidth(label)}\n tabIndex={0}\n className=\"mz-dt__resizer mz-focusable\"\n data-resizing={resize.resizing === column.id || undefined}\n onPointerDown={(event) => resize.start(event, column.id)}\n onDoubleClick={() => resize.autoFit(column.id)}\n onKeyDown={(event) => resize.onKeyDown(event, column.id)}\n />\n )}\n </th>\n )\n })\n\n const renderBodyCells = (row: T, rowIndex: number, list: DataTableColumn<T>[]) => {\n const key = rowKey(row)\n return list.map((column) => {\n const pinned = layout.pinned[column.id]\n const isEditing = editing?.key === key && editing.col === column.id\n return (\n <td\n key={column.id}\n data-col={column.id}\n data-pinned={pinned}\n data-pin-edge={pinEdgeOf(column.id)}\n data-align={column.align}\n data-editable={column.editable ? true : undefined}\n className=\"mz-dt__td\"\n style={\n pinned\n ? ({ [pinned]: offsets.get(column.id) } as React.CSSProperties)\n : undefined\n }\n onDoubleClick={\n column.editable\n ? (event) => {\n event.stopPropagation()\n setEditing({ key, col: column.id })\n }\n : undefined\n }\n >\n {isEditing && column.editable ? (\n <CellEditor\n row={row}\n def={column.editable}\n onDone={() => setEditing(null)}\n />\n ) : (\n <div className=\"mz-dt__cell\">\n {column.cell\n ? column.cell(row, { rowIndex })\n : column.accessor?.(row)}\n </div>\n )}\n </td>\n )\n })\n }\n\n return (\n <div\n ref={rootRef}\n data-slot=\"data-table\"\n data-density={density}\n className={cn('mz-dt', className)}\n style={widthVars}\n >\n {(toolbar || chips.length > 0 || columns.some((c) => c.hideable !== false)) && (\n <div className=\"mz-dt__toolbar\">\n <div className=\"mz-dt__toolbar-main\">{toolbar}</div>\n <div className=\"mz-dt__toolbar-side\">\n <ColumnManager\n columns={columns}\n layout={layout}\n labels={labelsProp}\n onToggleHidden={toggleHidden}\n onSetPinned={setPinned}\n onMove={move}\n onMoveTo={moveTo}\n onReset={reset}\n />\n </div>\n </div>\n )}\n\n {chips.length > 0 && (\n <div className=\"mz-dt__chips\">\n {chips.map(([id, value]) => (\n <FilterChip\n key={id}\n label={\n <>\n <b>{labelOf(id)}</b>\n {describeFilter(value, columnById.get(id)?.filter, labels)}\n </>\n }\n clearLabel={labels.clearFilter}\n onClear={() => onQueryChange(setFilter(query, id, undefined))}\n />\n ))}\n <Button\n variant=\"link\"\n size=\"xs\"\n onClick={() => onQueryChange({ ...query, filters: {}, page: 1 })}\n >\n {labels.resetAll}\n </Button>\n </div>\n )}\n\n <div\n ref={scrollerRef}\n className=\"mz-dt__scroller\"\n data-scrolled-left={scrolled.left || undefined}\n data-scrolled-right={scrolled.right || undefined}\n >\n <table className=\"mz-dt__table\" data-sticky={stickyHeader || undefined}>\n {caption ? <caption className=\"mz-sr-only\">{caption}</caption> : null}\n {/* A trailing auto-width column absorbs whatever space is left over.\n Without it `table-layout: fixed` spreads the slack across every\n column, so dragging one would visibly squeeze its neighbours. */}\n <colgroup>\n {selectable ? <col style={{ width: SELECT_WIDTH }} /> : null}\n {renderExpanded ? <col style={{ width: EXPAND_WIDTH }} /> : null}\n {visible.slice(0, fillerIndex).map((column) => (\n <col\n key={column.id}\n style={{ width: `var(--mz-dt-w-${cssSafe(column.id)}, ${widthOf(column.id)}px)` }}\n />\n ))}\n <col className=\"mz-dt__col-filler\" />\n {visible.slice(fillerIndex).map((column) => (\n <col\n key={column.id}\n style={{ width: `var(--mz-dt-w-${cssSafe(column.id)}, ${widthOf(column.id)}px)` }}\n />\n ))}\n </colgroup>\n\n <thead>\n <tr>\n {selectable ? (\n <th\n className=\"mz-dt__th mz-dt__th--control\"\n data-pinned=\"left\"\n data-pin-edge={renderExpanded ? undefined : controlPinEdge}\n style={{ left: 0 }}\n >\n <Checkbox\n size=\"sm\"\n aria-label={labels.selectPage}\n checked={rows.pageSelected ? true : rows.pagePartial ? 'indeterminate' : false}\n onCheckedChange={rows.togglePage}\n />\n </th>\n ) : null}\n {renderExpanded ? (\n <th\n className=\"mz-dt__th mz-dt__th--control\"\n data-pinned=\"left\"\n data-pin-edge={controlPinEdge}\n style={{ left: selectable ? SELECT_WIDTH : 0 }}\n >\n <span className=\"mz-sr-only\">{labels.details}</span>\n </th>\n ) : null}\n\n {renderHeaderCells(visible.slice(0, fillerIndex))}\n <th className=\"mz-dt__th mz-dt__th--filler\" aria-hidden=\"true\" />\n {renderHeaderCells(visible.slice(fillerIndex))}\n </tr>\n </thead>\n\n <tbody>\n {loading && data.length === 0\n ? Array.from({ length: Math.min(query.pageSize, 8) }, (_, index) => (\n <tr key={`skeleton-${index}`} className=\"mz-dt__row\">\n <td className=\"mz-dt__td\" colSpan={colSpan}>\n <Skeleton style={{ height: 14, width: `${60 + ((index * 13) % 35)}%` }} />\n </td>\n </tr>\n ))\n : data.map((row, rowIndex) => {\n const key = rowKey(row)\n const isOpen = expanded.has(key)\n const context = { rowIndex }\n const hostClass = rowClassName?.(row, context)\n const hostProps = rowProps?.(row, context)\n return (\n <React.Fragment key={key}>\n <tr\n {...hostProps}\n className={cn('mz-dt__row', hostClass, hostProps?.className)}\n data-selected={rows.selected.has(key) || rows.allMatching || undefined}\n data-clickable={onRowClick ? true : undefined}\n onClick={\n onRowClick || hostProps?.onClick\n ? (event) => {\n hostProps?.onClick?.(event)\n onRowClick?.(row)\n }\n : undefined\n }\n >\n {selectable ? (\n <td\n className=\"mz-dt__td mz-dt__td--control\"\n data-pinned=\"left\"\n data-pin-edge={renderExpanded ? undefined : controlPinEdge}\n style={{ left: 0 }}\n onClick={(event) => event.stopPropagation()}\n >\n <Checkbox\n size=\"sm\"\n aria-label={labels.selectRow}\n checked={rows.selected.has(key) || rows.allMatching}\n onClick={(event) =>\n rows.toggle(key, { shiftKey: (event as React.MouseEvent).shiftKey })\n }\n />\n </td>\n ) : null}\n\n {renderExpanded ? (\n <td\n className=\"mz-dt__td mz-dt__td--control\"\n data-pinned=\"left\"\n data-pin-edge={controlPinEdge}\n style={{ left: selectable ? SELECT_WIDTH : 0 }}\n onClick={(event) => event.stopPropagation()}\n >\n <button\n type=\"button\"\n className=\"mz-dt__expand mz-focusable\"\n data-open={isOpen || undefined}\n aria-expanded={isOpen}\n aria-label={isOpen ? labels.collapseRow : labels.expandRow}\n onClick={() => toggleExpanded(key)}\n >\n <ChevronRightIcon />\n </button>\n </td>\n ) : null}\n\n {renderBodyCells(row, rowIndex, visible.slice(0, fillerIndex))}\n <td className=\"mz-dt__td mz-dt__td--filler\" aria-hidden=\"true\" />\n {renderBodyCells(row, rowIndex, visible.slice(fillerIndex))}\n </tr>\n\n {isOpen && renderExpanded ? (\n // The detail panel belongs to the same record, so a row\n // tint carries onto it; the attributes do not.\n <tr className={cn('mz-dt__row mz-dt__row--expanded', hostClass)}>\n <td className=\"mz-dt__td mz-dt__td--expanded\" colSpan={colSpan}>\n {renderExpanded(row)}\n </td>\n </tr>\n ) : null}\n </React.Fragment>\n )\n })}\n </tbody>\n </table>\n\n {!loading && !error && data.length === 0 ? (\n <div className=\"mz-dt__state\">\n {emptyState ?? (\n <>\n <InboxIcon />\n <p>{labels.empty}</p>\n {chips.length > 0 ? (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={() => onQueryChange({ ...query, filters: {}, page: 1 })}\n >\n {labels.resetFilters}\n </Button>\n ) : null}\n </>\n )}\n </div>\n ) : null}\n\n {error ? (\n <div className=\"mz-dt__state\" data-tone=\"danger\">\n <AlertIcon />\n <p>{error}</p>\n {onRetry ? (\n <Button size=\"sm\" variant=\"secondary\" onClick={onRetry}>\n {labels.retry}\n </Button>\n ) : null}\n </div>\n ) : null}\n\n {showLoadMore ? (\n <div ref={moreRef} className=\"mz-dt__more\" data-slot=\"data-table-load-more\">\n <Button variant=\"secondary\" size=\"sm\" disabled={loading} onClick={askForMore}>\n {loading ? labels.loadingMore : labels.loadMore}\n </Button>\n </div>\n ) : null}\n\n {loading && data.length > 0 ? <div className=\"mz-dt__loading-bar\" aria-hidden=\"true\" /> : null}\n </div>\n\n {showPager ? (\n <DataTablePagination\n query={query}\n total={total}\n rowsOnPage={data.length}\n pageSizeOptions={pageSizeOptions}\n labels={labelsProp}\n locale={locale}\n onQueryChange={onQueryChange}\n />\n ) : null}\n\n {selectable && (rows.count ?? 0) > 0 ? (\n <div className=\"mz-dt__bulkbar\" role=\"region\" aria-label={labels.bulkActions}>\n <span className=\"mz-dt__bulkbar-count\">\n {labels.selectedCount(\n selectionCount?.toLocaleString(locale) ?? String(rows.count ?? 0)\n )}\n {rows.allMatching ? labels.allMatchingSuffix : null}\n </span>\n {!rows.allMatching && total !== undefined && rows.pageSelected && total > data.length ? (\n <Button variant=\"link\" size=\"xs\" onClick={rows.selectAllMatching}>\n {labels.selectAllMatching(total.toLocaleString(locale))}\n </Button>\n ) : null}\n <div className=\"mz-dt__bulkbar-actions\">\n {bulkActions?.(selection ?? { keys: [], allMatching: false })}\n <Button variant=\"ghost\" size=\"sm\" onClick={rows.clear}>\n {labels.clearSelection}\n </Button>\n </div>\n </div>\n ) : null}\n </div>\n )\n}\n\nfunction describeFilter(\n value: import('./types').FilterValue,\n def: import('./types').ColumnFilterDef | undefined,\n labels: DataTableLabels\n): string {\n switch (value.type) {\n case 'text':\n return `: “${value.value}”`\n case 'select': {\n // Show what the user picked in the menu, not the raw wire value.\n const options = def?.type === 'select' ? def.options : []\n const labels = value.value.map(\n (v) => options.find((option) => option.value === v)?.label ?? v\n )\n return `: ${labels.join(', ')}`\n }\n case 'number-range':\n return `: ${value.min ?? '…'}–${value.max ?? '…'}`\n case 'date-range':\n return `: ${value.from ?? '…'} – ${value.to ?? '…'}`\n case 'boolean':\n return `: ${value.value ? labels.yes.toLowerCase() : labels.no.toLowerCase()}`\n case 'custom': {\n // Only the host can put a custom value into words.\n const text = (def?.type === 'custom' ? def.describe?.(value.value) : undefined) ?? value.label\n return text ? `: ${text}` : ''\n }\n }\n}\n","import type * as React from 'react'\n\nimport type { DataTableLabels } from './labels'\n\n/* ==========================================================================\n The table is fully controlled: it never sorts, filters or paginates data\n itself. Every interaction produces a new DataTableQuery, and the consumer\n turns that into one request. On server-driven data any client-side\n processing would disagree with what the backend actually returned.\n ========================================================================== */\n\nexport type SortDir = 'asc' | 'desc'\nexport type DataTableSort = { id: string; dir: SortDir }\n\nexport type FilterValue =\n | { type: 'text'; value: string }\n | { type: 'select'; value: string[] }\n | { type: 'number-range'; min?: number; max?: number }\n | { type: 'date-range'; from?: string; to?: string }\n | { type: 'boolean'; value: boolean }\n /**\n * Whatever a host's own filter widget produces. The value travels into\n * `query.filters` untouched — its shape is the host's business — and `label`\n * is what the chip above the table shows.\n */\n | { type: 'custom'; value: unknown; label?: string }\n\nexport type DataTableFilters = Record<string, FilterValue>\n\nexport type DataTableQuery = {\n sort: DataTableSort[]\n filters: DataTableFilters\n page: number\n pageSize: number\n}\n\nexport type SelectOptionDef = { value: string; label: string }\n\n/** What a `custom` filter's `render` gets to work with. */\nexport type CustomFilterContext = {\n /** The staged value — the popover's draft, not what the query carries yet. */\n value: unknown\n label?: string\n /** Stages a value; it reaches the query when Apply is pressed. */\n onChange: (value: unknown, label?: string) => void\n /** Stages and applies in one step, then closes the popover. */\n commit: (value: unknown, label?: string) => void\n /** The table's resolved strings, so a host widget stays translated with it. */\n labels: DataTableLabels\n}\n\n/** Declares which control the header popover shows and what it sends back. */\nexport type ColumnFilterDef =\n | { type: 'text'; placeholder?: string }\n | { type: 'select'; options: SelectOptionDef[]; multiple?: boolean }\n | { type: 'number-range'; step?: number; unit?: string }\n | { type: 'date-range' }\n | { type: 'boolean'; trueLabel?: string; falseLabel?: string }\n /**\n * A host-supplied control — async multiselect, range slider, presence\n * toggle — rendered inside the kit's popover so it looks like the built-in\n * filters and, unlike a widget smuggled into `column.header`, takes part in\n * `query.filters`.\n */\n | {\n type: 'custom'\n render: (context: CustomFilterContext) => React.ReactNode\n /** Chip text for a value; falls back to the label the widget supplied. */\n describe?: (value: unknown) => string\n /** `false` drops the Apply/Reset footer — for a widget that commits itself. */\n actions?: boolean\n }\n\nexport type EditableDef<T> = {\n type: 'text' | 'number' | 'select'\n options?: SelectOptionDef[]\n /** Resolves the current editable value out of the row. */\n value: (row: T) => string\n /** Rejected promises roll the cell back and surface the message. */\n onSave: (row: T, value: string) => void | Promise<void>\n}\n\nexport type DataTableColumn<T> = {\n id: string\n header: React.ReactNode\n /** Short label used where the header may be a node — column manager, cards. */\n label?: string\n /** Plain value renderer. Ignored when `cell` is given. */\n accessor?: (row: T) => React.ReactNode\n cell?: (row: T, context: { rowIndex: number }) => React.ReactNode\n width?: number\n minWidth?: number\n maxWidth?: number\n align?: 'left' | 'center' | 'right'\n sortable?: boolean\n filter?: ColumnFilterDef\n /** Sticks the column to an edge while the body scrolls sideways. */\n pinned?: 'left' | 'right'\n resizable?: boolean\n /**\n * `false` keeps the column at exactly `width` when the table stretches its\n * columns to fill the container — for icon or action columns.\n */\n flex?: boolean\n /** `false` keeps the column out of the visibility menu (and always visible). */\n hideable?: boolean\n editable?: EditableDef<T>\n headerTitle?: string\n}\n\n/** Anything valid on a `<tr>`, plus `data-*` — the row-level escape hatch. */\nexport type RowAttributes = React.ComponentPropsWithoutRef<'tr'> & {\n [key: `data-${string}`]: string | number | boolean | undefined\n}\n\n/** Column layout is UI state, not query state — it never reaches the backend. */\nexport type ColumnLayout = {\n order: string[]\n hidden: string[]\n widths: Record<string, number>\n pinned: Record<string, 'left' | 'right' | undefined>\n /** Columns the user resized by hand; auto-fit leaves these alone. */\n sized: string[]\n}\n\nexport type SavedView = {\n id: string\n name: string\n query: DataTableQuery\n layout?: Partial<ColumnLayout>\n}\n\nexport type RowSelectionState = {\n /** Explicitly ticked row keys on the current page. */\n keys: string[]\n /**\n * \"Everything the current filter matches\", including rows never fetched.\n * Bulk actions must send the query instead of the key list in this mode.\n */\n allMatching: boolean\n}\n\nexport const emptyQuery: DataTableQuery = {\n sort: [],\n filters: {},\n page: 1,\n pageSize: 25,\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport type { DataTableFilters, DataTableQuery, SavedView } from './types'\nimport { emptyQuery } from './types'\nimport { parseSort, serializeSort } from './utils'\n\n/* --------------------------------------------------------------------------\n Query state, optionally mirrored into the URL so a filtered table survives\n a reload and can be shared as a link.\n -------------------------------------------------------------------------- */\n\nfunction encode(query: DataTableQuery, prefix: string) {\n const params = new URLSearchParams(window.location.search)\n const set = (key: string, value: string | undefined) => {\n if (value) params.set(prefix + key, value)\n else params.delete(prefix + key)\n }\n set('sort', serializeSort(query.sort) || undefined)\n set('page', query.page > 1 ? String(query.page) : undefined)\n set('size', String(query.pageSize))\n set('f', Object.keys(query.filters).length ? JSON.stringify(query.filters) : undefined)\n return params\n}\n\nfunction decode(prefix: string, fallback: DataTableQuery): DataTableQuery {\n const params = new URLSearchParams(window.location.search)\n const get = (key: string) => params.get(prefix + key)\n let filters: DataTableFilters = fallback.filters\n const rawFilters = get('f')\n if (rawFilters) {\n try {\n filters = JSON.parse(rawFilters) as DataTableFilters\n } catch {\n filters = {}\n }\n }\n return {\n sort: get('sort') ? parseSort(get('sort')) : fallback.sort,\n filters,\n page: Number(get('page') ?? fallback.page) || 1,\n pageSize: Number(get('size') ?? fallback.pageSize) || fallback.pageSize,\n }\n}\n\nexport type UseTableQueryOptions = {\n initial?: Partial<DataTableQuery>\n /** Mirrors the query into the query-string under this prefix. */\n urlKey?: string | null\n /** `replace` keeps table interactions out of the back-button history. */\n history?: 'replace' | 'push'\n}\n\nexport function useTableQuery({\n initial,\n urlKey = null,\n history = 'replace',\n}: UseTableQueryOptions = {}) {\n const base = React.useMemo<DataTableQuery>(() => ({ ...emptyQuery, ...initial }), [initial])\n // The URL is read after mount, so server and first client render agree.\n const [query, setQuery] = React.useState<DataTableQuery>(base)\n\n React.useEffect(() => {\n if (urlKey === null || typeof window === 'undefined') return\n setQuery(decode(urlKey, base))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [urlKey])\n\n React.useEffect(() => {\n if (urlKey === null || typeof window === 'undefined') return\n const params = encode(query, urlKey)\n const search = params.toString()\n const next = `${window.location.pathname}${search ? `?${search}` : ''}${window.location.hash}`\n if (next === `${window.location.pathname}${window.location.search}${window.location.hash}`) return\n window.history[history === 'push' ? 'pushState' : 'replaceState'](null, '', next)\n }, [query, urlKey, history])\n\n // Back/forward must move the table, not just the address bar.\n React.useEffect(() => {\n if (urlKey === null || typeof window === 'undefined') return\n const onPop = () => setQuery(decode(urlKey, base))\n window.addEventListener('popstate', onPop)\n return () => window.removeEventListener('popstate', onPop)\n }, [urlKey, base])\n\n const reset = React.useCallback(() => setQuery(base), [base])\n\n return { query, setQuery, reset }\n}\n\n/* --------------------------------------------------------------------------\n Saved views — a named query (and optionally a column layout) the user can\n come back to. Stored locally unless the host passes its own list.\n -------------------------------------------------------------------------- */\n\nexport type UseSavedViewsOptions = {\n storageKey?: string | null\n views?: SavedView[]\n onViewsChange?: (views: SavedView[]) => void\n}\n\nexport function useSavedViews({\n storageKey = null,\n views: controlled,\n onViewsChange,\n}: UseSavedViewsOptions = {}) {\n const [internal, setInternal] = React.useState<SavedView[]>([])\n\n React.useEffect(() => {\n if (!storageKey || typeof window === 'undefined') return\n try {\n const raw = window.localStorage.getItem(storageKey)\n if (raw) setInternal(JSON.parse(raw) as SavedView[])\n } catch {\n /* blocked storage — views just do not persist */\n }\n }, [storageKey])\n\n const views = controlled ?? internal\n\n const persist = React.useCallback(\n (next: SavedView[]) => {\n setInternal(next)\n onViewsChange?.(next)\n if (!storageKey || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(next))\n } catch {\n /* ignore */\n }\n },\n [storageKey, onViewsChange]\n )\n\n return {\n views,\n save: (view: SavedView) => persist([...views.filter((v) => v.id !== view.id), view]),\n remove: (id: string) => persist(views.filter((v) => v.id !== id)),\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/theme-provider.tsx","../src/lib/icons.tsx","../src/components/button.tsx","../src/components/badge.tsx","../src/components/toggle.tsx","../src/components/toggle-group.tsx","../src/components/checkbox.tsx","../src/components/radio-group.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/input.tsx","../src/components/textarea.tsx","../src/components/label.tsx","../src/components/field.tsx","../src/components/select.tsx","../src/components/tabs.tsx","../src/components/card.tsx","../src/components/alert.tsx","../src/components/accordion.tsx","../src/components/progress.tsx","../src/components/avatar.tsx","../src/components/separator.tsx","../src/components/skeleton.tsx","../src/components/spinner.tsx","../src/components/dialog.tsx","../src/components/popover.tsx","../src/components/dropdown-menu.tsx","../src/components/tooltip.tsx","../src/components/sheet.tsx","../src/lib/use-is-mobile.ts","../src/components/sidebar.tsx","../src/components/data-table/cell-editor.tsx","../src/components/data-table/labels.ts","../src/components/data-table/utils.ts","../src/components/data-table/column-filter.tsx","../src/components/data-table/column-manager.tsx","../src/components/data-table/data-table-pagination.tsx","../src/components/data-table/use-column-resize.ts","../src/components/data-table/use-column-layout.ts","../src/components/data-table/use-row-selection.ts","../src/components/data-table/data-table.tsx","../src/components/data-table/types.ts","../src/components/data-table/use-table-query.ts"],"names":["React","jsx","jsxs","Fragment","React3","cva","Slot","TogglePrimitive","React6","ToggleGroupPrimitive","CheckboxPrimitive","RadioGroupPrimitive","SwitchPrimitive","React10","SliderPrimitive","LabelPrimitive","SelectPrimitive","TabsPrimitive","AccordionPrimitive","ProgressPrimitive","AvatarPrimitive","SeparatorPrimitive","DialogPrimitive","PopoverPrimitive","DropdownMenuPrimitive","React28","TooltipPrimitive","SheetPrimitive","React30","React31","readStored","React32","React33","current","React34","React36","writeStored","React37","React38","next","labels","React40"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx'\n\n/**\n * Class name joiner. Morze UI ships plain, prefixed CSS rather than utility\n * classes, so there is nothing to merge — clsx is enough.\n */\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs)\n}\n\nexport type Tone = 'primary' | 'accent' | 'danger' | 'warning' | 'info' | 'success'\n","'use client'\n\nimport * as React from 'react'\n\nexport type MorzeTheme = 'dark' | 'light' | 'system'\n\ntype ThemeContextValue = {\n /** What was requested — may be `system`. */\n theme: MorzeTheme\n /** What is actually painted — never `system`. */\n resolvedTheme: 'dark' | 'light'\n setTheme: (theme: MorzeTheme) => void\n}\n\nconst ThemeContext = React.createContext<ThemeContextValue | null>(null)\n\n/** Storage can throw outright when site data is blocked, so every access is guarded. */\nfunction readStored(key: string | null): MorzeTheme | null {\n if (!key || typeof window === 'undefined') return null\n try {\n const stored = window.localStorage.getItem(key)\n return stored === 'dark' || stored === 'light' || stored === 'system' ? stored : null\n } catch {\n return null\n }\n}\n\nfunction writeStored(key: string | null, theme: MorzeTheme) {\n if (!key || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(key, theme)\n } catch {\n /* private mode, blocked site data — the theme just does not persist */\n }\n}\n\nfunction systemTheme(): 'dark' | 'light' {\n if (typeof window === 'undefined' || !window.matchMedia) return 'dark'\n return window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'\n}\n\ntype MorzeThemeProviderProps = {\n children: React.ReactNode\n /** Initial theme. Defaults to the Morze dark palette. */\n defaultTheme?: MorzeTheme\n /** localStorage key; pass `null` to disable persistence. */\n storageKey?: string | null\n /**\n * Where `data-mz-theme` is written. `html` themes the whole document (and is\n * what you want when portalled dialogs and menus should follow the theme);\n * `element` scopes the theme to the wrapper this provider renders.\n */\n target?: 'html' | 'element'\n className?: string\n}\n\nfunction MorzeThemeProvider({\n children,\n defaultTheme = 'dark',\n storageKey = 'morze-ui-theme',\n target = 'html',\n className,\n}: MorzeThemeProviderProps) {\n // Both the server and the first client render start from defaultTheme; the\n // stored/system preference is applied after mount. Reading storage during\n // render would make the markup disagree with the server and break hydration.\n const [theme, setThemeState] = React.useState<MorzeTheme>(defaultTheme)\n const [resolved, setResolved] = React.useState<'dark' | 'light'>(\n defaultTheme === 'system' ? 'dark' : defaultTheme\n )\n\n React.useEffect(() => {\n const stored = readStored(storageKey)\n if (stored) setThemeState(stored)\n }, [storageKey])\n\n React.useEffect(() => {\n if (theme !== 'system') {\n setResolved(theme)\n return\n }\n setResolved(systemTheme())\n const mql = window.matchMedia('(prefers-color-scheme: light)')\n const onChange = () => setResolved(systemTheme())\n mql.addEventListener('change', onChange)\n return () => mql.removeEventListener('change', onChange)\n }, [theme])\n\n React.useEffect(() => {\n if (target !== 'html' || typeof document === 'undefined') return\n document.documentElement.setAttribute('data-mz-theme', resolved)\n }, [resolved, target])\n\n const setTheme = React.useCallback(\n (next: MorzeTheme) => {\n setThemeState(next)\n writeStored(storageKey, next)\n },\n [storageKey]\n )\n\n const value = React.useMemo(\n () => ({ theme, resolvedTheme: resolved, setTheme }),\n [theme, resolved, setTheme]\n )\n\n return (\n <ThemeContext.Provider value={value}>\n <div\n data-slot=\"morze-root\"\n data-mz-theme={target === 'element' ? resolved : undefined}\n className={['mz-root', className].filter(Boolean).join(' ')}\n >\n {children}\n </div>\n </ThemeContext.Provider>\n )\n}\n\nfunction useMorzeTheme() {\n const context = React.useContext(ThemeContext)\n if (!context) {\n throw new Error('useMorzeTheme must be used inside <MorzeThemeProvider>')\n }\n return context\n}\n\nexport { MorzeThemeProvider, useMorzeTheme }\nexport type { MorzeThemeProviderProps }\n","import * as React from 'react'\n\n/**\n * Inline icons so the package has no icon dependency. Each one inherits\n * currentColor and is sized by CSS, matching lucide's 24x24 grid.\n */\ntype IconProps = React.SVGProps<SVGSVGElement>\n\nfunction icon(path: React.ReactNode, extra?: Partial<IconProps>) {\n return function Icon(props: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...extra}\n {...props}\n >\n {path}\n </svg>\n )\n }\n}\n\nexport const CheckIcon = icon(<path d=\"M20 6 9 17l-5-5\" />)\nexport const MinusIcon = icon(<path d=\"M5 12h14\" />)\nexport const XIcon = icon(<path d=\"M18 6 6 18M6 6l12 12\" />)\nexport const ChevronDownIcon = icon(<path d=\"m6 9 6 6 6-6\" />)\nexport const ChevronUpIcon = icon(<path d=\"m18 15-6-6-6 6\" />)\nexport const ChevronRightIcon = icon(<path d=\"m9 18 6-6-6-6\" />)\nexport const CircleIcon = icon(<circle cx=\"12\" cy=\"12\" r=\"10\" />)\nexport const DotIcon = icon(<circle cx=\"12\" cy=\"12\" r=\"4\" fill=\"currentColor\" />)\n\nexport const SpinnerIcon = icon(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"9\" opacity=\"0.25\" />\n <path d=\"M21 12a9 9 0 0 0-9-9\" />\n </>\n)\n\nexport const ChevronLeftIcon = icon(<path d=\"m15 18-6-6 6-6\" />)\nexport const ChevronsLeftIcon = icon(\n <>\n <path d=\"m11 17-5-5 5-5\" />\n <path d=\"m18 17-5-5 5-5\" />\n </>\n)\nexport const ChevronsRightIcon = icon(\n <>\n <path d=\"m13 17 5-5-5-5\" />\n <path d=\"m6 17 5-5-5-5\" />\n </>\n)\nexport const ArrowUpIcon = icon(<path d=\"M12 19V5m-7 7 7-7 7 7\" />)\nexport const ArrowDownIcon = icon(<path d=\"M12 5v14m7-7-7 7-7-7\" />)\nexport const SortIcon = icon(\n <>\n <path d=\"m7 15 3 3 3-3\" opacity=\"0.9\" />\n <path d=\"m7 9 3-3 3 3\" opacity=\"0.9\" />\n </>\n)\nexport const FilterIcon = icon(<path d=\"M4 5h16l-6.5 7.5V19l-3 2v-8.5L4 5Z\" />)\nexport const ColumnsIcon = icon(\n <>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M9 4v16M15 4v16\" />\n </>\n)\nexport const GripIcon = icon(\n <>\n <circle cx=\"9\" cy=\"7\" r=\"1.4\" fill=\"currentColor\" />\n <circle cx=\"9\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" />\n <circle cx=\"9\" cy=\"17\" r=\"1.4\" fill=\"currentColor\" />\n <circle cx=\"15\" cy=\"7\" r=\"1.4\" fill=\"currentColor\" />\n <circle cx=\"15\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" />\n <circle cx=\"15\" cy=\"17\" r=\"1.4\" fill=\"currentColor\" />\n </>\n)\nexport const PinIcon = icon(<path d=\"M15 3 21 9l-4 1-4 4-1 5-6-6 5-1 4-4 1-4Z\" />)\nexport const EyeIcon = icon(\n <>\n <path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </>\n)\nexport const EyeOffIcon = icon(\n <>\n <path d=\"M10.6 5.2A9.8 9.8 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-3 3.9M6.2 6.2A17 17 0 0 0 2 12s3.5 7 10 7c1.9 0 3.5-.6 4.9-1.4\" />\n <path d=\"m3 3 18 18\" />\n </>\n)\nexport const SearchIcon = icon(\n <>\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m20 20-3.5-3.5\" />\n </>\n)\nexport const PlusIcon = icon(<path d=\"M12 5v14M5 12h14\" />)\nexport const TrashIcon = icon(\n <>\n <path d=\"M4 7h16M10 11v6M14 11v6\" />\n <path d=\"M6 7l1 12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-12M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2\" />\n </>\n)\nexport const InboxIcon = icon(\n <>\n <path d=\"M3 12h5l2 3h4l2-3h5\" />\n <path d=\"M5.5 5h13l2.5 7v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5l2.5-7Z\" />\n </>\n)\nexport const AlertIcon = icon(\n <>\n <path d=\"M12 9v4M12 17h.01\" />\n <path d=\"M10.3 3.9 2.6 17a2 2 0 0 0 1.7 3h15.4a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z\" />\n </>\n)\nexport const SaveIcon = icon(\n <>\n <path d=\"M5 4h11l4 4v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z\" />\n <path d=\"M8 4v5h7M8 21v-6h8v6\" />\n </>\n)\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Slot } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\nimport { SpinnerIcon } from '../lib/icons'\n\n// mz-focusable belongs to the base string so buttonVariants() carries the focus\n// ring onto elements that are styled as buttons without being one.\nconst buttonVariants = cva('mz-btn mz-focusable', {\n variants: {\n variant: {\n primary: 'mz-btn--primary',\n secondary: 'mz-btn--secondary',\n outline: 'mz-btn--outline',\n ghost: 'mz-btn--ghost',\n destructive: 'mz-btn--destructive',\n link: 'mz-btn--link',\n },\n size: {\n xs: 'mz-btn--xs',\n sm: 'mz-btn--sm',\n md: 'mz-btn--md',\n lg: 'mz-btn--lg',\n 'icon-xs': 'mz-btn--icon-xs',\n 'icon-sm': 'mz-btn--icon-sm',\n icon: 'mz-btn--icon',\n 'icon-lg': 'mz-btn--icon-lg',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n})\n\ntype ButtonProps = React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n /** Re-points the convex gradient, glow and focus ring to another tone. */\n tone?: Tone\n /** Swaps the label for a spinner and blocks interaction. */\n loading?: boolean\n }\n\nfunction Button({\n className,\n variant = 'primary',\n size = 'md',\n asChild = false,\n tone,\n loading = false,\n disabled,\n children,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot.Root : 'button'\n const isDisabled = disabled || loading\n\n const decorate = (label: React.ReactNode) => (\n <>\n {label}\n {loading ? (\n <span className=\"mz-btn__spinner\" aria-hidden=\"true\">\n <SpinnerIcon />\n </span>\n ) : null}\n </>\n )\n\n // Slot takes exactly one child, so the decorations are grafted inside it\n // rather than rendered as siblings — otherwise `loading` would blank the\n // label with no spinner to replace it.\n let content: React.ReactNode\n if (asChild) {\n const child = React.Children.only(children) as React.ReactElement<{\n children?: React.ReactNode\n }>\n content = React.cloneElement(child, undefined, decorate(child.props.children))\n } else {\n content = decorate(children)\n }\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n data-tone={tone}\n data-loading={loading || undefined}\n className={cn(buttonVariants({ variant, size }), className)}\n // A slotted element may not support `disabled` (a link, for one), so the\n // state is also expressed through aria, which the CSS honours.\n disabled={asChild ? undefined : isDisabled}\n aria-disabled={asChild && isDisabled ? true : undefined}\n aria-busy={loading || undefined}\n {...props}\n >\n {content}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\nexport type { ButtonProps }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Slot } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nconst badgeVariants = cva('mz-badge', {\n variants: {\n variant: {\n solid: 'mz-badge--solid',\n soft: 'mz-badge--soft',\n outline: 'mz-badge--outline',\n },\n },\n defaultVariants: {\n variant: 'solid',\n },\n})\n\nfunction Badge({\n className,\n variant = 'solid',\n tone,\n asChild = false,\n children,\n ...props\n}: React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & {\n asChild?: boolean\n tone?: Tone\n }) {\n const Comp = asChild ? Slot.Root : 'span'\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n data-tone={tone}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n >\n {children}\n </Comp>\n )\n}\n\nexport { Badge, badgeVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Toggle as TogglePrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nconst toggleVariants = cva('mz-toggle', {\n variants: {\n variant: {\n default: '',\n outline: 'mz-toggle--outline',\n },\n size: {\n sm: 'mz-toggle--sm',\n md: 'mz-toggle--md',\n lg: 'mz-toggle--lg',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n})\n\nfunction Toggle({\n className,\n variant = 'default',\n size = 'md',\n tone,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants> & { tone?: Tone }) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n data-variant={variant}\n data-size={size}\n data-tone={tone}\n className={cn(toggleVariants({ variant, size }), 'mz-focusable', className)}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { type VariantProps } from 'class-variance-authority'\nimport { ToggleGroup as ToggleGroupPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\nimport { toggleVariants } from './toggle'\n\ntype ToggleGroupContextValue = VariantProps<typeof toggleVariants> & { tone?: Tone }\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue>({\n size: 'md',\n variant: 'default',\n})\n\ntype ToggleGroupProps = React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n tone?: Tone\n /**\n * `segmented` — items sit in one sunken well and the active one pops out.\n * `joined` — items share edges as a single convex bar.\n * `spaced` — free-standing toggles with a gap.\n */\n appearance?: 'segmented' | 'joined' | 'spaced'\n }\n\nfunction ToggleGroup({\n className,\n variant = 'default',\n size = 'md',\n tone,\n appearance = 'segmented',\n style,\n children,\n ...props\n}: ToggleGroupProps) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-tone={tone}\n data-appearance={appearance}\n className={cn(\n 'mz-toggle-group',\n appearance === 'segmented' && 'mz-toggle-group--segmented',\n appearance === 'joined' && 'mz-toggle-group--joined',\n className\n )}\n style={\n appearance === 'spaced'\n ? ({ '--mz-toggle-group-gap': '8px', ...style } as React.CSSProperties)\n : style\n }\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, tone }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n // The item's own props win; the group only supplies the default. The other\n // way round the context defaults would always short-circuit and per-item\n // variant/size would be silently dropped.\n const context = React.useContext(ToggleGroupContext)\n const resolvedVariant = variant ?? context.variant\n const resolvedSize = size ?? context.size\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={resolvedVariant}\n data-size={resolvedSize}\n // Each item declares its own tone default, so the group's tone is\n // forwarded explicitly rather than left to inheritance.\n data-tone={context.tone}\n className={cn(\n toggleVariants({ variant: resolvedVariant, size: resolvedSize }),\n 'mz-focusable',\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","'use client'\n\nimport * as React from 'react'\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\nimport { CheckIcon, MinusIcon } from '../lib/icons'\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive.Root> & {\n size?: 'sm' | 'md' | 'lg'\n tone?: Tone\n}\n\nfunction Checkbox({ className, size = 'md', tone, ...props }: CheckboxProps) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n data-size={size}\n data-tone={tone}\n className={cn(\n 'mz-checkbox mz-focusable',\n size === 'sm' && 'mz-checkbox--sm',\n size === 'lg' && 'mz-checkbox--lg',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\" className=\"mz-checkbox__indicator\">\n {/* Both glyphs ship; CSS picks one off the root's data-state, which is\n the only source that is right for uncontrolled checkboxes too. */}\n <CheckIcon className=\"mz-checkbox__check\" />\n <MinusIcon className=\"mz-checkbox__dash\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\nexport type { CheckboxProps }\n","'use client'\n\nimport * as React from 'react'\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('mz-radio-group', className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n tone,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & { tone?: Tone }) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n data-tone={tone}\n className={cn('mz-radio mz-focusable', className)}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"mz-radio__indicator\"\n />\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","'use client'\n\nimport * as React from 'react'\nimport { Switch as SwitchPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\ntype SwitchProps = React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'md' | 'lg'\n tone?: Tone\n}\n\nfunction Switch({ className, size = 'md', tone, ...props }: SwitchProps) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n data-tone={tone}\n className={cn(\n 'mz-switch mz-focusable',\n size === 'sm' && 'mz-switch--sm',\n size === 'lg' && 'mz-switch--lg',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb data-slot=\"switch-thumb\" className=\"mz-switch__thumb\" />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\nexport type { SwitchProps }\n","'use client'\n\nimport * as React from 'react'\nimport { Slider as SliderPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n tone,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root> & { tone?: Tone }) {\n // Radix's uncontrolled state defaults to a single value, so the thumb count\n // has to fall back to one — [min, max] would render an extra thumb that\n // tracks nothing.\n const values = React.useMemo(\n () =>\n Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min],\n [value, defaultValue, min]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n data-tone={tone}\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn('mz-slider', className)}\n {...props}\n >\n <SliderPrimitive.Track data-slot=\"slider-track\" className=\"mz-slider__track\">\n <SliderPrimitive.Range data-slot=\"slider-range\" className=\"mz-slider__range\" />\n </SliderPrimitive.Track>\n {Array.from({ length: values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"mz-slider__thumb mz-focusable\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\n\ntype InputProps = React.ComponentProps<'input'> & {\n inputSize?: 'sm' | 'md' | 'lg'\n}\n\nfunction Input({ className, type, inputSize = 'md', ...props }: InputProps) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n data-size={inputSize}\n className={cn(\n 'mz-input',\n inputSize === 'sm' && 'mz-input--sm',\n inputSize === 'lg' && 'mz-input--lg',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\nexport type { InputProps }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\n\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return <textarea data-slot=\"textarea\" className={cn('mz-textarea', className)} {...props} />\n}\n\nexport { Textarea }\n","'use client'\n\nimport * as React from 'react'\nimport { Label as LabelPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nfunction Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return <LabelPrimitive.Root data-slot=\"label\" className={cn('mz-label', className)} {...props} />\n}\n\nexport { Label }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\n\n/** Vertical label + control + hint/error stack. */\nfunction Field({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"field\" className={cn('mz-field', className)} {...props} />\n}\n\nfunction FieldHint({ className, ...props }: React.ComponentProps<'p'>) {\n return <p data-slot=\"field-hint\" className={cn('mz-field__hint', className)} {...props} />\n}\n\nfunction FieldError({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"field-error\"\n role=\"alert\"\n className={cn('mz-field__error', className)}\n {...props}\n />\n )\n}\n\nexport { Field, FieldHint, FieldError }\n","'use client'\n\nimport * as React from 'react'\nimport { Select as SelectPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from '../lib/icons'\n\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = 'md',\n tone,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: 'sm' | 'md'\n tone?: Tone\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n data-tone={tone}\n className={cn(\n 'mz-select-trigger mz-focusable',\n size === 'sm' && 'mz-select-trigger--sm',\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"mz-select-trigger__icon\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = 'popper',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n 'mz-panel mz-select-content',\n position === 'popper' && 'mz-select-content--popper',\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'mz-select-viewport',\n position === 'popper' && 'mz-select-viewport--popper'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn('mz-menu-label', className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item data-slot=\"select-item\" className={cn('mz-item', className)} {...props}>\n <span className=\"mz-item__indicator\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn('mz-menu-separator', className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn('mz-select-scroll-button', className)}\n {...props}\n >\n <ChevronUpIcon width={16} height={16} />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn('mz-select-scroll-button', className)}\n {...props}\n >\n <ChevronDownIcon width={16} height={16} />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Tabs as TabsPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nfunction Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return <TabsPrimitive.Root data-slot=\"tabs\" className={cn('mz-tabs', className)} {...props} />\n}\n\nfunction TabsList({\n className,\n variant = 'default',\n tone,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> & {\n variant?: 'default' | 'line'\n tone?: Tone\n}) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n data-tone={tone}\n className={cn('mz-tabs-list', variant === 'line' && 'mz-tabs-list--line', className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn('mz-tabs-trigger mz-focusable', className)}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn('mz-tabs-content', className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\n\nfunction Card({\n className,\n interactive = false,\n onClick,\n onKeyDown,\n ...props\n}: React.ComponentProps<'div'> & { interactive?: boolean }) {\n // An interactive card looks clickable, so it has to be reachable and\n // operable from the keyboard as well. Role and tabIndex sit before the\n // spread, so a consumer can still override them.\n const clickable = interactive && Boolean(onClick)\n\n const handleKeyDown = clickable\n ? (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event)\n if (event.defaultPrevented) return\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n event.currentTarget.click()\n }\n }\n : onKeyDown\n\n return (\n <div\n data-slot=\"card\"\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n className={cn(\n 'mz-card',\n interactive && 'mz-card--interactive',\n clickable && 'mz-focusable',\n className\n )}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-header\" className={cn('mz-card-header', className)} {...props} />\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-title\" className={cn('mz-card-title', className)} {...props} />\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"card-description\" className={cn('mz-card-description', className)} {...props} />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-action\" className={cn('mz-card-action', className)} {...props} />\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-content\" className={cn('mz-card-content', className)} {...props} />\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-footer\" className={cn('mz-card-footer', className)} {...props} />\n}\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn, type Tone } from '../lib/utils'\n\nfunction Alert({\n className,\n tone = 'primary',\n ...props\n}: React.ComponentProps<'div'> & { tone?: Tone }) {\n return (\n <div\n data-slot=\"alert\"\n data-tone={tone}\n role=\"alert\"\n className={cn('mz-alert', className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"alert-title\" className={cn('mz-alert-title', className)} {...props} />\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('mz-alert-description', className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n","'use client'\n\nimport * as React from 'react'\nimport { Accordion as AccordionPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { ChevronDownIcon } from '../lib/icons'\n\nfunction Accordion({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn('mz-accordion', className)}\n {...props}\n />\n )\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('mz-accordion-item', className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"mz-accordion-header\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn('mz-accordion-trigger mz-focusable', className)}\n {...props}\n >\n {children}\n <span className=\"mz-accordion-trigger__icon\" aria-hidden=\"true\">\n <ChevronDownIcon />\n </span>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className={cn('mz-accordion-content', className)}\n {...props}\n >\n <div className=\"mz-accordion-content__inner\">{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","'use client'\n\nimport * as React from 'react'\nimport { Progress as ProgressPrimitive } from 'radix-ui'\n\nimport { cn, type Tone } from '../lib/utils'\n\nfunction Progress({\n className,\n value,\n max = 100,\n tone,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> & { tone?: Tone }) {\n // Scaled against `max` so the bar agrees with the aria-valuenow/valuemax\n // Radix emits, and clamped so an out-of-range value cannot produce a\n // malformed translate.\n const percent = max > 0 ? (Math.min(Math.max(value ?? 0, 0), max) / max) * 100 : 0\n\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n data-tone={tone}\n value={value}\n max={max}\n className={cn('mz-progress', className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"mz-progress__indicator\"\n style={{ transform: `translateX(-${100 - percent}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","'use client'\n\nimport * as React from 'react'\nimport { Avatar as AvatarPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nfunction Avatar({\n className,\n size = 'md',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & { size?: 'sm' | 'md' | 'lg' }) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'mz-avatar',\n size === 'sm' && 'mz-avatar--sm',\n size === 'lg' && 'mz-avatar--lg',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('mz-avatar__image', className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn('mz-avatar__fallback', className)}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","'use client'\n\nimport * as React from 'react'\nimport { Separator as SeparatorPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn('mz-separator', className)}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"skeleton\" className={cn('mz-skeleton', className)} {...props} />\n}\n\nexport { Skeleton }\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../lib/utils'\nimport { SpinnerIcon } from '../lib/icons'\n\ntype SpinnerProps = React.ComponentProps<'span'> & {\n /** Announced by screen readers; pass `null` for a purely decorative spinner. */\n label?: string | null\n}\n\nfunction Spinner({ className, label = 'Loading', children, ...props }: SpinnerProps) {\n return (\n <span\n data-slot=\"spinner\"\n role={label === null ? undefined : 'status'}\n aria-hidden={label === null ? true : undefined}\n className={cn('mz-spinner', className)}\n {...props}\n >\n <SpinnerIcon />\n {label === null ? null : <span className=\"mz-sr-only\">{label}</span>}\n {children}\n </span>\n )\n}\n\nexport { Spinner }\nexport type { SpinnerProps }\n","'use client'\n\nimport * as React from 'react'\nimport { Dialog as DialogPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { XIcon } from '../lib/icons'\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn('mz-dialog-overlay', className)}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n closeLabel = 'Close',\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n closeLabel?: string\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn('mz-panel mz-dialog-content', className)}\n {...props}\n >\n {children}\n {showCloseButton ? (\n <DialogPrimitive.Close data-slot=\"dialog-close\" className=\"mz-dialog-close mz-focusable\">\n <XIcon />\n <span className=\"mz-sr-only\">{closeLabel}</span>\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"dialog-header\" className={cn('mz-dialog-header', className)} {...props} />\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"dialog-footer\" className={cn('mz-dialog-footer', className)} {...props} />\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('mz-dialog-title', className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('mz-dialog-description', className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Popover as PopoverPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 6,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn('mz-panel mz-popover-content', className)}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"popover-header\" className={cn('mz-popover-header', className)} {...props} />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<'h2'>) {\n return <h2 data-slot=\"popover-title\" className={cn('mz-popover-title', className)} {...props} />\n}\n\nfunction PopoverDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"popover-description\"\n className={cn('mz-popover-description', className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { DropdownMenu as DropdownMenuPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { CheckIcon, ChevronRightIcon, DotIcon } from '../lib/icons'\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 6,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn('mz-panel mz-menu-content', className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: 'default' | 'destructive'\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n 'mz-item',\n inset ? 'mz-item--inset' : 'mz-item--plain',\n variant === 'destructive' && 'mz-item--destructive',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn('mz-item', className)}\n checked={checked}\n {...props}\n >\n <span className=\"mz-item__indicator\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return <DropdownMenuPrimitive.RadioGroup data-slot=\"dropdown-menu-radio-group\" {...props} />\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn('mz-item', className)}\n {...props}\n >\n <span className=\"mz-item__indicator\">\n <DropdownMenuPrimitive.ItemIndicator>\n <DotIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & { inset?: boolean }) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn('mz-menu-label', inset && 'mz-menu-label--inset', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn('mz-menu-separator', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn('mz-menu-shortcut', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & { inset?: boolean }) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n 'mz-item mz-menu-sub-trigger',\n inset ? 'mz-item--inset' : 'mz-item--plain',\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"mz-menu-sub-trigger__icon\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn('mz-panel mz-menu-content', className)}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Tooltip as TooltipPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\n// Radix requires a provider above every Tooltip.Root, so one is created on\n// demand — but only when the app has not supplied its own, otherwise the\n// app-level delayDuration and skipDelayDuration grouping would be shadowed.\nconst TooltipProviderPresence = React.createContext(false)\n\nfunction TooltipProvider({\n delayDuration = 200,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipProviderPresence.Provider value={true}>\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n >\n {children}\n </TooltipPrimitive.Provider>\n </TooltipProviderPresence.Provider>\n )\n}\n\nfunction Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n const hasProvider = React.useContext(TooltipProviderPresence)\n const root = <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n\n return hasProvider ? root : <TooltipProvider>{root}</TooltipProvider>\n}\n\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 6,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn('mz-tooltip-content', className)}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"mz-tooltip-arrow\" width={10} height={5} />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","'use client'\n\nimport * as React from 'react'\nimport { Dialog as SheetPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { XIcon } from '../lib/icons'\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn('mz-dialog-overlay', className)}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n closeLabel = 'Close',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left'\n showCloseButton?: boolean\n closeLabel?: string\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn('mz-sheet', className)}\n {...props}\n >\n {children}\n {showCloseButton ? (\n <SheetPrimitive.Close data-slot=\"sheet-close\" className=\"mz-dialog-close mz-focusable\">\n <XIcon />\n <span className=\"mz-sr-only\">{closeLabel}</span>\n </SheetPrimitive.Close>\n ) : null}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-header\" className={cn('mz-sheet__header', className)} {...props} />\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-footer\" className={cn('mz-sheet__footer', className)} {...props} />\n}\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('mz-dialog-title', className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('mz-dialog-description', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetPortal,\n SheetOverlay,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","'use client'\n\nimport * as React from 'react'\n\n/**\n * Viewport-width check for layout decisions that CSS cannot make on its own —\n * the sidebar swaps to an overlay sheet rather than restyling in place.\n * Returns false during SSR and the first client render, so hydration matches.\n */\nexport function useIsMobile(breakpoint = 768) {\n const [isMobile, setIsMobile] = React.useState(false)\n\n React.useEffect(() => {\n const query = window.matchMedia(`(max-width: ${breakpoint - 1}px)`)\n const update = () => setIsMobile(query.matches)\n update()\n query.addEventListener('change', update)\n return () => query.removeEventListener('change', update)\n }, [breakpoint])\n\n return isMobile\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Slot } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { ChevronLeftIcon } from '../lib/icons'\nimport { useIsMobile } from '../lib/use-is-mobile'\nimport { Input } from './input'\nimport { Separator } from './separator'\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from './sheet'\nimport { Skeleton } from './skeleton'\nimport { Tooltip, TooltipContent, TooltipTrigger } from './tooltip'\n\nconst STORAGE_KEY = 'morze-ui-sidebar'\nconst SHORTCUT = 'b'\n\ntype SidebarContextValue = {\n /** `expanded` | `collapsed` — what is painted, mobile aside. */\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) throw new Error('useSidebar must be used inside <SidebarProvider>')\n return context\n}\n\nfunction readStored(key: string | null): boolean | null {\n if (!key || typeof window === 'undefined') return null\n try {\n const raw = window.localStorage.getItem(key)\n return raw === null ? null : raw === 'true'\n } catch {\n return null\n }\n}\n\ntype SidebarProviderProps = React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n /** localStorage key for the collapsed state; `null` disables persistence. */\n storageKey?: string | null\n /** Width below which the sidebar becomes an overlay sheet. */\n mobileBreakpoint?: number\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange,\n storageKey = STORAGE_KEY,\n mobileBreakpoint = 768,\n className,\n style,\n children,\n ...props\n}: SidebarProviderProps) {\n const isMobile = useIsMobile(mobileBreakpoint)\n const [openMobile, setOpenMobile] = React.useState(false)\n // Server and first client render both start from defaultOpen; the stored\n // preference lands in an effect so hydration cannot mismatch.\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n\n React.useEffect(() => {\n const stored = readStored(storageKey)\n if (stored !== null) setInternalOpen(stored)\n }, [storageKey])\n\n const open = openProp ?? internalOpen\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (openProp === undefined) setInternalOpen(next)\n onOpenChange?.(next)\n if (!storageKey || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(storageKey, String(next))\n } catch {\n /* blocked storage — the state just does not persist */\n }\n },\n [openProp, onOpenChange, storageKey]\n )\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) setOpenMobile((current) => !current)\n else setOpen(!open)\n }, [isMobile, open, setOpen])\n\n React.useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key.toLowerCase() !== SHORTCUT || !(event.metaKey || event.ctrlKey)) return\n event.preventDefault()\n toggleSidebar()\n }\n window.addEventListener('keydown', onKeyDown)\n return () => window.removeEventListener('keydown', onKeyDown)\n }, [toggleSidebar])\n\n const value = React.useMemo<SidebarContextValue>(\n () => ({\n state: open ? 'expanded' : 'collapsed',\n open,\n setOpen,\n openMobile,\n setOpenMobile,\n isMobile,\n toggleSidebar,\n }),\n [open, setOpen, openMobile, isMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={value}>\n <div\n data-slot=\"sidebar-wrapper\"\n data-state={value.state}\n className={cn('mz-sidebar-layout', className)}\n style={style}\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n )\n}\n\ntype SidebarProps = React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n /** Announced to screen readers when the panel opens as a sheet on mobile. */\n mobileTitle?: string\n mobileDescription?: string\n /**\n * `inset` (default) leaves the navigation on the page background and raises\n * the content in a `SidebarPanel`; `sidebar` gives the navigation its own\n * surface; `floating` lifts it off the edge as a card.\n */\n variant?: 'sidebar' | 'floating' | 'inset'\n /**\n * `icon` keeps a rail of icons, `offcanvas` slides the panel away entirely,\n * `none` pins it open.\n */\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'inset',\n collapsible = 'icon',\n mobileTitle = 'Navigation',\n mobileDescription = 'Application sections',\n className,\n children,\n ...props\n}: SidebarProps) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n // On a narrow screen the sidebar is an overlay, not a column: collapsing to\n // a rail would eat the little width that is left.\n if (isMobile && collapsible !== 'none') {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile}>\n <SheetContent\n side={side}\n showCloseButton={false}\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n // Deliberately without `mz-sidebar`: that class positions a sticky\n // column and would override the sheet's fixed placement.\n className={cn('mz-sidebar--mobile', className)}\n >\n <SheetHeader className=\"mz-sr-only\">\n <SheetTitle>{mobileTitle}</SheetTitle>\n <SheetDescription>{mobileDescription}</SheetDescription>\n </SheetHeader>\n <div className=\"mz-sidebar__inner\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n data-slot=\"sidebar\"\n data-state={state}\n data-side={side}\n data-variant={variant}\n data-collapsible={collapsible === 'none' ? undefined : collapsible}\n className={cn('mz-sidebar', className)}\n {...props}\n >\n <div className=\"mz-sidebar__inner\">{children}</div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n label = 'Toggle sidebar',\n ...props\n}: React.ComponentProps<'button'> & { label?: string }) {\n const { toggleSidebar, state } = useSidebar()\n return (\n <button\n type=\"button\"\n data-slot=\"sidebar-trigger\"\n data-state={state}\n aria-label={label}\n title={label}\n className={cn('mz-sidebar__trigger mz-focusable', className)}\n onClick={(event) => {\n onClick?.(event)\n if (!event.defaultPrevented) toggleSidebar()\n }}\n {...props}\n >\n <ChevronLeftIcon />\n </button>\n )\n}\n\n/** Thin strip along the sidebar edge — click anywhere on it to toggle. */\nfunction SidebarRail({\n className,\n label = 'Toggle sidebar',\n ...props\n}: React.ComponentProps<'button'> & { label?: string }) {\n const { toggleSidebar } = useSidebar()\n return (\n <button\n type=\"button\"\n data-slot=\"sidebar-rail\"\n aria-label={label}\n tabIndex={-1}\n className={cn('mz-sidebar__rail', className)}\n onClick={toggleSidebar}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return <main data-slot=\"sidebar-inset\" className={cn('mz-sidebar-inset', className)} {...props} />\n}\n\n/**\n * The raised content surface next to the navigation. Anything that belongs on\n * the page background — a top bar, breadcrumbs — goes in `SidebarInset` above\n * it, not inside.\n */\nfunction SidebarPanel({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-panel\" className={cn('mz-sidebar-panel', className)} {...props} />\n}\n\nfunction SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return (\n <Input data-slot=\"sidebar-input\" inputSize=\"sm\" className={cn('mz-sidebar__input', className)} {...props} />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" className={cn('mz-sidebar__header', className)} {...props} />\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-footer\" className={cn('mz-sidebar__footer', className)} {...props} />\n}\n\nfunction SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n className={cn('mz-sidebar__separator', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-content\" className={cn('mz-sidebar__content', className)} {...props} />\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" className={cn('mz-sidebar__group', className)} {...props} />\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'div'\n return (\n <Comp data-slot=\"sidebar-group-label\" className={cn('mz-sidebar__group-label', className)} {...props} />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'button'\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n className={cn('mz-sidebar__group-action mz-focusable', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"sidebar-group-content\" className={cn('mz-sidebar__group-content', className)} {...props} />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" className={cn('mz-sidebar__menu', className)} {...props} />\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" className={cn('mz-sidebar__menu-item', className)} {...props} />\n}\n\ntype SidebarMenuButtonProps = React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n size?: 'sm' | 'md' | 'lg'\n /** Shown as a tooltip while the sidebar is collapsed to icons. */\n tooltip?: React.ReactNode\n}\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n size = 'md',\n tooltip,\n className,\n ...props\n}: SidebarMenuButtonProps) {\n const Comp = asChild ? Slot.Root : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-size={size}\n data-active={isActive || undefined}\n className={cn('mz-sidebar__menu-button mz-focusable', className)}\n {...props}\n />\n )\n\n // The label is clipped in the rail, so it is offered as a tooltip instead.\n if (!tooltip || state !== 'collapsed' || isMobile) return button\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\">\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean; showOnHover?: boolean }) {\n const Comp = asChild ? Slot.Root : 'button'\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-hover-only={showOnHover || undefined}\n className={cn('mz-sidebar__menu-action mz-focusable', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"sidebar-menu-badge\" className={cn('mz-sidebar__menu-badge', className)} {...props} />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & { showIcon?: boolean }) {\n // A stable pseudo-random width keeps the placeholder from re-flowing.\n const width = React.useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, [])\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n className={cn('mz-sidebar__menu-skeleton', className)}\n {...props}\n >\n {showIcon ? <Skeleton className=\"mz-sidebar__menu-skeleton-icon\" /> : null}\n <Skeleton className=\"mz-sidebar__menu-skeleton-text\" style={{ width }} />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu-sub\" className={cn('mz-sidebar__menu-sub', className)} {...props} />\n}\n\nfunction SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li data-slot=\"sidebar-menu-sub-item\" className={cn('mz-sidebar__menu-sub-item', className)} {...props} />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n isActive = false,\n size = 'md',\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n isActive?: boolean\n size?: 'sm' | 'md'\n}) {\n const Comp = asChild ? Slot.Root : 'a'\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-size={size}\n data-active={isActive || undefined}\n className={cn('mz-sidebar__menu-sub-button mz-focusable', className)}\n {...props}\n />\n )\n}\n\nexport {\n useSidebar,\n SidebarProvider,\n Sidebar,\n SidebarTrigger,\n SidebarRail,\n SidebarInset,\n SidebarPanel,\n SidebarInput,\n SidebarHeader,\n SidebarFooter,\n SidebarSeparator,\n SidebarContent,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarMenuSubButton,\n}\nexport type { SidebarProps, SidebarProviderProps, SidebarMenuButtonProps }\n","'use client'\n\nimport * as React from 'react'\n\nimport { Input } from '../input'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport type { EditableDef } from './types'\n\n/**\n * Optimistic by design: the cell shows the new value immediately and rolls\n * back if the save rejects, so a slow backend never blocks typing.\n */\nexport function CellEditor<T>({\n row,\n def,\n onDone,\n}: {\n row: T\n def: EditableDef<T>\n onDone: () => void\n}) {\n const initial = def.value(row)\n const [value, setValue] = React.useState(initial)\n const [saving, setSaving] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n\n const commit = async () => {\n if (value === initial) return onDone()\n setSaving(true)\n try {\n await def.onSave(row, value)\n onDone()\n } catch (cause) {\n setValue(initial)\n setError(cause instanceof Error ? cause.message : 'Could not save')\n setSaving(false)\n }\n }\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n void commit()\n }\n if (event.key === 'Escape') {\n event.preventDefault()\n onDone()\n }\n }\n\n if (def.type === 'select') {\n return (\n <Select\n open\n value={value}\n onValueChange={async (next) => {\n setValue(next)\n setSaving(true)\n try {\n await def.onSave(row, next)\n onDone()\n } catch {\n setValue(initial)\n setSaving(false)\n }\n }}\n onOpenChange={(open) => !open && onDone()}\n >\n <SelectTrigger size=\"sm\" className=\"mz-dt__editor\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {(def.options ?? []).map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n }\n\n return (\n <Input\n autoFocus\n inputSize=\"sm\"\n type={def.type === 'number' ? 'number' : 'text'}\n className=\"mz-dt__editor\"\n value={value}\n disabled={saving}\n aria-invalid={error ? true : undefined}\n title={error ?? undefined}\n onChange={(event) => setValue(event.target.value)}\n onKeyDown={onKeyDown}\n onBlur={() => void commit()}\n />\n )\n}\n","/**\n * Every visible string the table owns, in one place. Defaults are English;\n * pass a partial `labels` object to translate or reword any of them.\n */\nexport type DataTableLabels = {\n filter: string\n filterFor: (column: string) => string\n filterActive: string\n contains: string\n apply: string\n reset: string\n resetAll: string\n resetFilters: string\n clearFilter: string\n rangeFrom: string\n rangeTo: string\n dateFrom: string\n dateTo: string\n yes: string\n no: string\n\n columns: string\n moveUp: (column: string) => string\n moveDown: (column: string) => string\n pinning: (column: string, side: string) => string\n pinnedLeft: string\n pinnedRight: string\n notPinned: string\n show: (column: string) => string\n hide: (column: string) => string\n\n sortBy: (column: string) => string\n columnWidth: (column: string) => string\n selectPage: string\n selectRow: string\n expandRow: string\n collapseRow: string\n details: string\n\n empty: string\n retry: string\n\n rowsPerPage: string\n nothingFound: string\n of: string\n firstPage: string\n previousPage: string\n nextPage: string\n lastPage: string\n loadMore: string\n loadingMore: string\n\n selectedCount: (count: string) => string\n allMatchingSuffix: string\n selectAllMatching: (total: string) => string\n clearSelection: string\n bulkActions: string\n}\n\nexport const defaultDataTableLabels: DataTableLabels = {\n filter: 'Filter',\n filterFor: (column) => `Filter: ${column}`,\n filterActive: 'active',\n contains: 'Contains…',\n apply: 'Apply',\n reset: 'Reset',\n resetAll: 'Reset all',\n resetFilters: 'Reset filters',\n clearFilter: 'Clear filter',\n rangeFrom: 'from',\n rangeTo: 'to',\n dateFrom: 'From',\n dateTo: 'To',\n yes: 'Yes',\n no: 'No',\n\n columns: 'Columns',\n moveUp: (column) => `Move “${column}” up`,\n moveDown: (column) => `Move “${column}” down`,\n pinning: (column, side) => `Pinning for “${column}”: ${side}`,\n pinnedLeft: 'Left',\n pinnedRight: 'Right',\n notPinned: 'Not pinned',\n show: (column) => `Show “${column}”`,\n hide: (column) => `Hide “${column}”`,\n\n sortBy: (column) => `Sort by “${column}” (Shift to add to the sort)`,\n columnWidth: (column) => `Width of column “${column}”`,\n selectPage: 'Select page',\n selectRow: 'Select row',\n expandRow: 'Expand',\n collapseRow: 'Collapse',\n details: 'Details',\n\n empty: 'Nothing found',\n retry: 'Retry',\n\n rowsPerPage: 'Rows per page',\n nothingFound: 'Nothing found',\n of: 'of',\n firstPage: 'First page',\n previousPage: 'Previous page',\n nextPage: 'Next page',\n lastPage: 'Last page',\n loadMore: 'Load more',\n loadingMore: 'Loading…',\n\n selectedCount: (count) => `Selected: ${count}`,\n allMatchingSuffix: ' (all matching)',\n selectAllMatching: (total) => `Select all ${total}`,\n clearSelection: 'Clear selection',\n bulkActions: 'Actions for the selected rows',\n}\n\nexport function resolveLabels(labels?: Partial<DataTableLabels>): DataTableLabels {\n return labels ? { ...defaultDataTableLabels, ...labels } : defaultDataTableLabels\n}\n","import type { DataTableFilters, DataTableQuery, DataTableSort, FilterValue } from './types'\n\n/** A filter that carries no constraint should never reach the backend. */\nexport function isFilterActive(value: FilterValue | undefined): value is FilterValue {\n if (!value) return false\n switch (value.type) {\n case 'text':\n return value.value.trim().length > 0\n case 'select':\n return value.value.length > 0\n case 'number-range':\n return value.min !== undefined || value.max !== undefined\n case 'date-range':\n return Boolean(value.from || value.to)\n case 'boolean':\n return true\n case 'custom':\n // The shape belongs to the host widget, so activeness is structural:\n // anything that is not empty counts as a constraint.\n return !(\n value.value === undefined ||\n value.value === null ||\n value.value === '' ||\n (Array.isArray(value.value) && value.value.length === 0)\n )\n }\n}\n\nexport function activeFilters(filters: DataTableFilters): [string, FilterValue][] {\n return Object.entries(filters).filter(([, value]) => isFilterActive(value)) as [\n string,\n FilterValue,\n ][]\n}\n\nexport function setFilter(\n query: DataTableQuery,\n id: string,\n value: FilterValue | undefined\n): DataTableQuery {\n const filters = { ...query.filters }\n if (isFilterActive(value)) filters[id] = value\n else delete filters[id]\n // Any filter change invalidates the current offset.\n return { ...query, filters, page: 1 }\n}\n\n/**\n * Click cycles asc → desc → off. With `additive` (shift-click) the column joins\n * the existing sort instead of replacing it, which is how multi-sort is\n * expressed to the backend as an ordered list.\n */\nexport function toggleSort(\n query: DataTableQuery,\n id: string,\n additive = false\n): DataTableQuery {\n const existing = query.sort.find((s) => s.id === id)\n const next: DataTableSort[] = additive ? query.sort.filter((s) => s.id !== id) : []\n\n if (!existing) next.push({ id, dir: 'asc' })\n else if (existing.dir === 'asc') next.push({ id, dir: 'desc' })\n // a third click drops the column from the sort entirely\n\n return { ...query, sort: next, page: 1 }\n}\n\nexport function sortStateOf(query: DataTableQuery, id: string) {\n const index = query.sort.findIndex((s) => s.id === id)\n if (index < 0) return { dir: undefined, index: undefined }\n return { dir: query.sort[index]!.dir, index: query.sort.length > 1 ? index + 1 : undefined }\n}\n\nexport function pageCount(total: number | undefined, pageSize: number) {\n if (!total || pageSize <= 0) return 1\n return Math.max(1, Math.ceil(total / pageSize))\n}\n\n/** Compact URL form: `-date,name` → [{date desc}, {name asc}]. */\nexport function serializeSort(sort: DataTableSort[]) {\n return sort.map((s) => (s.dir === 'desc' ? `-${s.id}` : s.id)).join(',')\n}\n\nexport function parseSort(raw: string | null): DataTableSort[] {\n if (!raw) return []\n return raw\n .split(',')\n .filter(Boolean)\n .map((token) =>\n token.startsWith('-')\n ? { id: token.slice(1), dir: 'desc' as const }\n : { id: token, dir: 'asc' as const }\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../../lib/utils'\nimport { FilterIcon } from '../../lib/icons'\nimport { Button } from '../button'\nimport { Checkbox } from '../checkbox'\nimport { Input } from '../input'\nimport { Label } from '../label'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { defaultDataTableLabels, resolveLabels, type DataTableLabels } from './labels'\nimport type { ColumnFilterDef, FilterValue } from './types'\nimport { isFilterActive } from './utils'\n\ntype Props = {\n columnLabel: string\n def: ColumnFilterDef\n value: FilterValue | undefined\n onApply: (value: FilterValue | undefined) => void\n labels?: Partial<DataTableLabels>\n}\n\n/**\n * Filters are staged locally and committed on Apply. On server-driven data an\n * immediate commit would fire a request per keystroke.\n */\nexport function ColumnFilter({ columnLabel, def, value, onApply, labels: labelsProp }: Props) {\n const labels = resolveLabels(labelsProp)\n const [open, setOpen] = React.useState(false)\n const [draft, setDraft] = React.useState<FilterValue | undefined>(value)\n\n React.useEffect(() => {\n if (open) setDraft(value)\n }, [open, value])\n\n const active = isFilterActive(value)\n\n const commit = (next: FilterValue | undefined) => {\n onApply(isFilterActive(next) ? next : undefined)\n setOpen(false)\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"data-table-filter-trigger\"\n data-active={active || undefined}\n className=\"mz-dt__filter mz-focusable\"\n aria-label={`${labels.filterFor(columnLabel)}${active ? ` (${labels.filterActive})` : ''}`}\n title={labels.filterFor(columnLabel)}\n >\n <FilterIcon />\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"mz-dt__filter-panel\">\n <div className=\"mz-dt__filter-head\">{columnLabel}</div>\n <FilterBody\n def={def}\n draft={draft}\n setDraft={setDraft}\n labels={labels}\n onSubmit={() => commit(draft)}\n onCommit={commit}\n />\n {def.type === 'custom' && def.actions === false ? null : (\n <div className=\"mz-dt__filter-actions\">\n <Button size=\"sm\" variant=\"ghost\" onClick={() => commit(undefined)}>\n {labels.reset}\n </Button>\n <Button size=\"sm\" onClick={() => commit(draft)}>\n {labels.apply}\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n )\n}\n\nfunction FilterBody({\n def,\n draft,\n setDraft,\n labels,\n onSubmit,\n onCommit,\n}: {\n def: ColumnFilterDef\n draft: FilterValue | undefined\n setDraft: (value: FilterValue | undefined) => void\n labels: DataTableLabels\n onSubmit: () => void\n onCommit: (value: FilterValue | undefined) => void\n}) {\n const submitOnEnter = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n onSubmit()\n }\n }\n\n if (def.type === 'text') {\n const current = draft?.type === 'text' ? draft.value : ''\n return (\n <Input\n autoFocus\n inputSize=\"sm\"\n placeholder={def.placeholder ?? labels.contains}\n value={current}\n onKeyDown={submitOnEnter}\n onChange={(e) => setDraft({ type: 'text', value: e.target.value })}\n />\n )\n }\n\n if (def.type === 'select') {\n const current = draft?.type === 'select' ? draft.value : []\n const toggle = (option: string) => {\n if (def.multiple === false) {\n setDraft({ type: 'select', value: current.includes(option) ? [] : [option] })\n return\n }\n setDraft({\n type: 'select',\n value: current.includes(option)\n ? current.filter((v) => v !== option)\n : [...current, option],\n })\n }\n return (\n <div className=\"mz-dt__filter-options\" role=\"group\">\n {def.options.map((option) => (\n <label key={option.value} className=\"mz-dt__filter-option\">\n <Checkbox\n size=\"sm\"\n checked={current.includes(option.value)}\n onCheckedChange={() => toggle(option.value)}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n )\n }\n\n if (def.type === 'number-range') {\n const current = draft?.type === 'number-range' ? draft : { type: 'number-range' as const }\n const patch = (part: { min?: number; max?: number }) =>\n setDraft({ type: 'number-range', min: current.min, max: current.max, ...part })\n return (\n <div className=\"mz-dt__filter-range\">\n <Input\n autoFocus\n inputSize=\"sm\"\n type=\"number\"\n step={def.step}\n placeholder={labels.rangeFrom}\n value={current.min ?? ''}\n onKeyDown={submitOnEnter}\n onChange={(e) => patch({ min: e.target.value === '' ? undefined : Number(e.target.value) })}\n />\n <span className=\"mz-dt__filter-dash\">—</span>\n <Input\n inputSize=\"sm\"\n type=\"number\"\n step={def.step}\n placeholder={labels.rangeTo}\n value={current.max ?? ''}\n onKeyDown={submitOnEnter}\n onChange={(e) => patch({ max: e.target.value === '' ? undefined : Number(e.target.value) })}\n />\n </div>\n )\n }\n\n if (def.type === 'date-range') {\n const current = draft?.type === 'date-range' ? draft : { type: 'date-range' as const }\n const patch = (part: { from?: string; to?: string }) =>\n setDraft({ type: 'date-range', from: current.from, to: current.to, ...part })\n return (\n <div className=\"mz-dt__filter-range mz-dt__filter-range--stacked\">\n <Label htmlFor=\"mz-dt-from\">{labels.dateFrom}</Label>\n <Input\n id=\"mz-dt-from\"\n inputSize=\"sm\"\n type=\"date\"\n value={current.from ?? ''}\n onKeyDown={submitOnEnter}\n onChange={(e) => patch({ from: e.target.value || undefined })}\n />\n <Label htmlFor=\"mz-dt-to\">{labels.dateTo}</Label>\n <Input\n id=\"mz-dt-to\"\n inputSize=\"sm\"\n type=\"date\"\n value={current.to ?? ''}\n onKeyDown={submitOnEnter}\n onChange={(e) => patch({ to: e.target.value || undefined })}\n />\n </div>\n )\n }\n\n if (def.type === 'custom') {\n const staged = draft?.type === 'custom' ? draft : undefined\n // An undefined value is how a widget says \"no constraint\", so it maps to a\n // cleared filter rather than to an empty custom value.\n const wrap = (value: unknown, label?: string): FilterValue | undefined =>\n value === undefined ? undefined : { type: 'custom', value, label }\n return (\n <>\n {def.render({\n value: staged?.value,\n label: staged?.label,\n onChange: (value, label) => setDraft(wrap(value, label)),\n commit: (value, label) => onCommit(wrap(value, label)),\n labels,\n })}\n </>\n )\n }\n\n const current = draft?.type === 'boolean' ? draft.value : undefined\n return (\n <div className=\"mz-dt__filter-options\" role=\"radiogroup\">\n {[\n { value: true, label: def.trueLabel ?? labels.yes },\n { value: false, label: def.falseLabel ?? labels.no },\n ].map((option) => (\n <label key={String(option.value)} className=\"mz-dt__filter-option\">\n <Checkbox\n size=\"sm\"\n checked={current === option.value}\n onCheckedChange={(checked) =>\n setDraft(checked ? { type: 'boolean', value: option.value } : undefined)\n }\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n )\n}\n\nexport function FilterChip({\n label,\n onClear,\n clearLabel = defaultDataTableLabels.clearFilter,\n className,\n}: {\n label: React.ReactNode\n onClear: () => void\n clearLabel?: string\n className?: string\n}) {\n return (\n <span className={cn('mz-dt__chip', className)}>\n {label}\n <button type=\"button\" onClick={onClear} aria-label={clearLabel} className=\"mz-focusable\">\n ×\n </button>\n </span>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { ColumnsIcon, EyeIcon, EyeOffIcon, GripIcon, PinIcon } from '../../lib/icons'\nimport { Button } from '../button'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { Separator } from '../separator'\nimport { resolveLabels, type DataTableLabels } from './labels'\nimport type { ColumnLayout, DataTableColumn } from './types'\n\ntype Props<T> = {\n columns: DataTableColumn<T>[]\n layout: ColumnLayout\n onToggleHidden: (id: string) => void\n onSetPinned: (id: string, side: 'left' | 'right' | undefined) => void\n onMove: (id: string, delta: number) => void\n onMoveTo: (id: string, targetId: string) => void\n onReset: () => void\n labels?: Partial<DataTableLabels>\n}\n\n/**\n * Reordering lives here rather than on the header itself: dragging a header\n * would fight the resize handle, and a list gives keyboard users real controls\n * instead of a drag-only affordance.\n */\nexport function ColumnManager<T>({\n columns,\n layout,\n onToggleHidden,\n onSetPinned,\n onMove,\n onMoveTo,\n onReset,\n labels: labelsProp,\n}: Props<T>) {\n const labels = resolveLabels(labelsProp)\n const [dragging, setDragging] = React.useState<string | null>(null)\n const byId = React.useMemo(() => new Map(columns.map((c) => [c.id, c])), [columns])\n const ordered = layout.order\n .map((id) => byId.get(id))\n .filter((c): c is DataTableColumn<T> => Boolean(c))\n const hiddenCount = layout.hidden.length\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"secondary\" size=\"sm\">\n <ColumnsIcon />\n {labels.columns}\n {hiddenCount > 0 ? <span className=\"mz-dt__count\">{ordered.length - hiddenCount}</span> : null}\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" className=\"mz-dt__columns\">\n <div className=\"mz-dt__columns-head\">\n <span>{labels.columns}</span>\n <Button variant=\"link\" size=\"xs\" onClick={onReset}>\n {labels.reset}\n </Button>\n </div>\n <Separator />\n <ul className=\"mz-dt__columns-list\">\n {ordered.map((column, index) => {\n const hidden = layout.hidden.includes(column.id)\n const pinned = layout.pinned[column.id]\n const label = column.label ?? (typeof column.header === 'string' ? column.header : column.id)\n return (\n <li\n key={column.id}\n className=\"mz-dt__columns-item\"\n data-dragging={dragging === column.id || undefined}\n draggable\n onDragStart={() => setDragging(column.id)}\n onDragEnd={() => setDragging(null)}\n onDragOver={(event) => event.preventDefault()}\n onDrop={() => {\n if (dragging && dragging !== column.id) onMoveTo(dragging, column.id)\n setDragging(null)\n }}\n >\n <span className=\"mz-dt__columns-grip\" aria-hidden=\"true\">\n <GripIcon />\n </span>\n <span className=\"mz-dt__columns-label\">{label}</span>\n\n <div className=\"mz-dt__columns-controls\">\n {/* Arrow buttons keep reordering reachable without a pointer. */}\n <button\n type=\"button\"\n className=\"mz-dt__icon-btn mz-focusable\"\n disabled={index === 0}\n onClick={() => onMove(column.id, -1)}\n aria-label={labels.moveUp(label)}\n >\n ↑\n </button>\n <button\n type=\"button\"\n className=\"mz-dt__icon-btn mz-focusable\"\n disabled={index === ordered.length - 1}\n onClick={() => onMove(column.id, 1)}\n aria-label={labels.moveDown(label)}\n >\n ↓\n </button>\n <button\n type=\"button\"\n className=\"mz-dt__icon-btn mz-focusable\"\n data-active={pinned ? true : undefined}\n onClick={() =>\n onSetPinned(column.id, pinned === 'left' ? 'right' : pinned === 'right' ? undefined : 'left')\n }\n aria-label={labels.pinning(\n label,\n pinned === 'left'\n ? labels.pinnedLeft\n : pinned === 'right'\n ? labels.pinnedRight\n : labels.notPinned\n )}\n title={\n pinned === 'left'\n ? labels.pinnedLeft\n : pinned === 'right'\n ? labels.pinnedRight\n : labels.notPinned\n }\n >\n <PinIcon />\n </button>\n <button\n type=\"button\"\n className=\"mz-dt__icon-btn mz-focusable\"\n disabled={column.hideable === false}\n onClick={() => onToggleHidden(column.id)}\n aria-label={hidden ? labels.show(label) : labels.hide(label)}\n >\n {hidden ? <EyeOffIcon /> : <EyeIcon />}\n </button>\n </div>\n </li>\n )\n })}\n </ul>\n </PopoverContent>\n </Popover>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronsLeftIcon,\n ChevronsRightIcon,\n} from '../../lib/icons'\nimport { Button } from '../button'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport { resolveLabels, type DataTableLabels } from './labels'\nimport type { DataTableQuery } from './types'\nimport { pageCount } from './utils'\n\nexport function DataTablePagination({\n query,\n total,\n rowsOnPage,\n pageSizeOptions = [10, 25, 50, 100],\n labels: labelsProp,\n locale,\n onQueryChange,\n}: {\n query: DataTableQuery\n total?: number\n rowsOnPage: number\n /**\n * `false` — or a single option — hides the control: a host whose backend\n * fixes the page size would otherwise show a select that changes nothing.\n */\n pageSizeOptions?: number[] | false\n labels?: Partial<DataTableLabels>\n /** Number formatting locale; defaults to the browser's. */\n locale?: string\n onQueryChange: (query: DataTableQuery) => void\n}) {\n const labels = resolveLabels(labelsProp)\n const sizes = pageSizeOptions === false ? [] : pageSizeOptions\n const pages = pageCount(total, query.pageSize)\n const from = total === 0 ? 0 : (query.page - 1) * query.pageSize + 1\n const to = total === undefined ? from + rowsOnPage - 1 : Math.min(query.page * query.pageSize, total)\n const go = (page: number) => onQueryChange({ ...query, page: Math.min(Math.max(page, 1), pages) })\n\n return (\n <div className=\"mz-dt__pagination\" data-slot=\"data-table-pagination\">\n <div className=\"mz-dt__pagination-info\">\n {total === 0 ? (\n labels.nothingFound\n ) : (\n <>\n {from}–{to}\n {total !== undefined ? (\n <>\n {' '}\n {labels.of} {total.toLocaleString(locale)}\n </>\n ) : null}\n </>\n )}\n </div>\n\n {sizes.length > 1 ? (\n <div className=\"mz-dt__pagination-size\">\n <span>{labels.rowsPerPage}</span>\n <Select\n value={String(query.pageSize)}\n onValueChange={(value) =>\n onQueryChange({ ...query, pageSize: Number(value), page: 1 })\n }\n >\n <SelectTrigger size=\"sm\" className=\"mz-dt__pagination-select\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {sizes.map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n ) : null}\n\n <div className=\"mz-dt__pagination-nav\">\n <span className=\"mz-dt__pagination-page\">\n {query.page} / {pages}\n </span>\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n disabled={query.page <= 1}\n onClick={() => go(1)}\n aria-label={labels.firstPage}\n >\n <ChevronsLeftIcon />\n </Button>\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n disabled={query.page <= 1}\n onClick={() => go(query.page - 1)}\n aria-label={labels.previousPage}\n >\n <ChevronLeftIcon />\n </Button>\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n disabled={query.page >= pages}\n onClick={() => go(query.page + 1)}\n aria-label={labels.nextPage}\n >\n <ChevronRightIcon />\n </Button>\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n disabled={query.page >= pages}\n onClick={() => go(pages)}\n aria-label={labels.lastPage}\n >\n <ChevronsRightIcon />\n </Button>\n </div>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\n/**\n * Dragging writes the live width straight into a CSS custom property on the\n * table root, so a resize repaints the <col> element and nothing else — no\n * React render per pointer move, which matters once hundreds of cells are\n * mounted. State is committed once, on pointer up.\n */\nexport function useColumnResize(options: {\n rootRef: React.RefObject<HTMLElement | null>\n widthOf: (id: string) => number\n minWidthOf: (id: string) => number\n onCommit: (id: string, width: number) => void\n}) {\n const { rootRef, widthOf, minWidthOf, onCommit } = options\n const [resizing, setResizing] = React.useState<string | null>(null)\n\n const varName = (id: string) => `--mz-dt-w-${cssSafe(id)}`\n\n const start = React.useCallback(\n (event: React.PointerEvent<HTMLElement>, id: string) => {\n // Only the primary button starts a resize; let everything else through.\n if (event.button !== 0) return\n event.preventDefault()\n event.stopPropagation()\n\n const root = rootRef.current\n if (!root) return\n\n const handle = event.currentTarget\n const startX = event.clientX\n const startWidth = widthOf(id)\n const min = minWidthOf(id)\n let width = startWidth\n\n handle.setPointerCapture(event.pointerId)\n setResizing(id)\n\n const onMove = (moveEvent: PointerEvent) => {\n width = Math.max(min, Math.round(startWidth + moveEvent.clientX - startX))\n root.style.setProperty(varName(id), `${width}px`)\n }\n\n const finish = () => {\n handle.releasePointerCapture?.(event.pointerId)\n handle.removeEventListener('pointermove', onMove)\n handle.removeEventListener('pointerup', finish)\n handle.removeEventListener('pointercancel', finish)\n setResizing(null)\n if (width !== startWidth) onCommit(id, width)\n }\n\n handle.addEventListener('pointermove', onMove)\n handle.addEventListener('pointerup', finish)\n handle.addEventListener('pointercancel', finish)\n },\n [rootRef, widthOf, minWidthOf, onCommit]\n )\n\n /** Double click fits the column to its widest rendered cell. */\n const autoFit = React.useCallback(\n (id: string) => {\n const root = rootRef.current\n if (!root) return\n const cells = root.querySelectorAll<HTMLElement>(`[data-col=\"${CSS.escape(id)}\"]`)\n let widest = minWidthOf(id)\n cells.forEach((cell) => {\n const content = cell.firstElementChild as HTMLElement | null\n const padding = 26\n widest = Math.max(widest, (content?.scrollWidth ?? cell.scrollWidth) + padding)\n })\n const width = Math.min(widest, 640)\n root.style.setProperty(varName(id), `${width}px`)\n onCommit(id, width)\n },\n [rootRef, minWidthOf, onCommit]\n )\n\n /** Keyboard resizing — the handle is focusable, arrows nudge the width. */\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent, id: string) => {\n const step = event.shiftKey ? 32 : 8\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return\n event.preventDefault()\n const next = Math.max(\n minWidthOf(id),\n widthOf(id) + (event.key === 'ArrowRight' ? step : -step)\n )\n rootRef.current?.style.setProperty(varName(id), `${next}px`)\n onCommit(id, next)\n },\n [rootRef, widthOf, minWidthOf, onCommit]\n )\n\n return { start, autoFit, onKeyDown, resizing, varName }\n}\n\n/** Column ids are author-supplied, so they are sanitised for use in a var name. */\nexport function cssSafe(id: string) {\n return id.replace(/[^a-zA-Z0-9_-]/g, '_')\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport type { ColumnLayout, DataTableColumn } from './types'\n\nconst DEFAULT_WIDTH = 168\nconst DEFAULT_MIN = 72\n\nfunction readStored(key: string | null): Partial<ColumnLayout> | null {\n if (!key || typeof window === 'undefined') return null\n try {\n const raw = window.localStorage.getItem(key)\n return raw ? (JSON.parse(raw) as Partial<ColumnLayout>) : null\n } catch {\n return null\n }\n}\n\nfunction writeStored(key: string | null, layout: ColumnLayout) {\n if (!key || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(key, JSON.stringify(layout))\n } catch {\n /* blocked storage — the layout simply does not persist */\n }\n}\n\nexport type UseColumnLayoutOptions<T> = {\n columns: DataTableColumn<T>[]\n /** localStorage key for widths, order, visibility and pinning. */\n persistKey?: string | null\n layout?: Partial<ColumnLayout>\n onLayoutChange?: (layout: ColumnLayout) => void\n}\n\nexport function useColumnLayout<T>({\n columns,\n persistKey = null,\n layout: controlled,\n onLayoutChange,\n}: UseColumnLayoutOptions<T>) {\n const baseline = React.useMemo<ColumnLayout>(\n () => ({\n order: columns.map((c) => c.id),\n hidden: [],\n widths: Object.fromEntries(\n columns.map((c) => [c.id, c.width ?? DEFAULT_WIDTH])\n ) as Record<string, number>,\n pinned: Object.fromEntries(columns.map((c) => [c.id, c.pinned])) as ColumnLayout['pinned'],\n sized: [],\n }),\n [columns]\n )\n\n const [internal, setInternal] = React.useState<ColumnLayout>(baseline)\n\n // Stored layout is applied after mount so the first client render matches SSR.\n React.useEffect(() => {\n const stored = readStored(persistKey)\n if (stored) setInternal((current) => merge(current, stored, baseline))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [persistKey])\n\n // A column added or removed in code must not be stranded by a stale layout.\n React.useEffect(() => {\n setInternal((current) => merge(baseline, current, baseline))\n }, [baseline])\n\n const layout = React.useMemo(\n () => (controlled ? merge(baseline, controlled, baseline) : internal),\n [controlled, internal, baseline]\n )\n\n // Kept current after every commit, so `update` — and the `fitTo` the table\n // hands to a ResizeObserver as an effect dependency — keep a stable identity\n // even when the host passes a fresh callback on every render.\n const onLayoutChangeRef = React.useRef(onLayoutChange)\n React.useEffect(() => {\n onLayoutChangeRef.current = onLayoutChange\n })\n\n // Mirrors the committed layout so the next one can be derived outside the\n // state updater. Assigned eagerly in `update` too, so two calls in the same\n // tick still build on each other rather than on a stale snapshot.\n const internalRef = React.useRef(internal)\n React.useEffect(() => {\n internalRef.current = internal\n }, [internal])\n\n const update = React.useCallback(\n (patch: (current: ColumnLayout) => ColumnLayout, options?: { persist?: boolean }) => {\n const base = controlled ? merge(baseline, controlled, baseline) : internalRef.current\n const next = patch(base)\n if (next === base) return\n internalRef.current = next\n setInternal(next)\n // Storage and the host callback are effects of the change, not part of\n // computing it. React may run a state updater more than once for a single\n // commit — under StrictMode it always does — which wrote the layout twice\n // and reported one user action to the host twice.\n // Auto-fit is derived from the container, so it is never stored:\n // otherwise the saved widths would depend on the last viewport used.\n if (options?.persist !== false) {\n writeStored(persistKey, next)\n onLayoutChangeRef.current?.(next)\n }\n },\n [controlled, baseline, persistKey]\n )\n\n const byId = React.useMemo(\n () => new Map(columns.map((c) => [c.id, c])),\n [columns]\n )\n\n /** Visible columns in display order, pinned edges first and last. */\n const visible = React.useMemo(() => {\n const ordered = layout.order\n .map((id) => byId.get(id))\n .filter((c): c is DataTableColumn<T> => Boolean(c) && !layout.hidden.includes(c!.id))\n const side = (id: string) => layout.pinned[id]\n return [\n ...ordered.filter((c) => side(c.id) === 'left'),\n ...ordered.filter((c) => !side(c.id)),\n ...ordered.filter((c) => side(c.id) === 'right'),\n ]\n }, [layout, byId])\n\n const widthOf = React.useCallback(\n (id: string) => layout.widths[id] ?? byId.get(id)?.width ?? DEFAULT_WIDTH,\n [layout.widths, byId]\n )\n\n const minWidthOf = React.useCallback(\n (id: string) => byId.get(id)?.minWidth ?? DEFAULT_MIN,\n [byId]\n )\n\n /**\n * Stretches the flexible columns so the row fills `available` exactly — no\n * gap at the right edge on a wide screen. When even the minimum widths do\n * not fit, nothing is touched and the table scrolls sideways instead.\n * Memoised: the DataTable observes the container with it as an effect dep.\n */\n /**\n * Stretches the flexible columns so the row fills `available` exactly — no\n * dead space at the right edge on a wide screen. Widths are always derived\n * from the declared ones rather than the current ones, so the result depends\n * only on the container: growing and shrinking the window returns to the\n * same layout instead of drifting. When even the declared widths do not fit,\n * they are used as-is and the table scrolls sideways.\n * Memoised — the DataTable observes the container with it as an effect dep.\n */\n const fitTo = React.useCallback(\n (available: number) =>\n update(\n (current) => {\n const shown = current.order\n .map((id) => byId.get(id))\n .filter((c): c is DataTableColumn<T> => Boolean(c) && !current.hidden.includes(c!.id))\n if (!shown.length || available <= 0) return current\n\n const baseOf = (c: DataTableColumn<T>) => c.width ?? DEFAULT_WIDTH\n const isFlexible = (c: DataTableColumn<T>) =>\n c.flex !== false && !current.sized.includes(c.id)\n\n const flexible = shown.filter(isFlexible)\n if (!flexible.length) return current\n\n const fixedTotal = shown\n .filter((c) => !isFlexible(c))\n .reduce((sum, c) => sum + (current.widths[c.id] ?? baseOf(c)), 0)\n const flexBaseTotal = flexible.reduce((sum, c) => sum + baseOf(c), 0)\n const target = available - fixedTotal\n\n const next: Record<string, number> = { ...current.widths }\n\n // Not enough room even at the declared widths — fall back to them and\n // let the scroller do its job.\n if (target <= flexBaseTotal) {\n for (const column of flexible) {\n next[column.id] = Math.max(baseOf(column), column.minWidth ?? DEFAULT_MIN)\n }\n } else {\n let remaining = target\n let pool = flexBaseTotal\n const growing = [...flexible]\n\n // Columns pinned by min/max hand their surplus back, so the row\n // still adds up to `available` once the bounds are honoured.\n for (let pass = 0; pass < 3 && growing.length; pass += 1) {\n const scale = remaining / pool\n const clamped: DataTableColumn<T>[] = []\n for (const column of growing) {\n const min = column.minWidth ?? DEFAULT_MIN\n const max = column.maxWidth ?? Infinity\n const scaled = baseOf(column) * scale\n const bounded = Math.min(Math.max(scaled, min), max)\n if (bounded !== scaled) {\n next[column.id] = Math.round(bounded)\n remaining -= bounded\n pool -= baseOf(column)\n clamped.push(column)\n }\n }\n if (!clamped.length) break\n growing.splice(0, growing.length, ...growing.filter((c) => !clamped.includes(c)))\n }\n\n if (growing.length) {\n const scale = remaining / pool\n let used = 0\n growing.forEach((column, index) => {\n if (index === growing.length - 1) {\n // Last column swallows the rounding error so the sum is exact.\n next[column.id] = Math.round(remaining - used)\n } else {\n const width = Math.round(baseOf(column) * scale)\n next[column.id] = width\n used += width\n }\n })\n }\n }\n\n const changed = shown.some(\n (c) => Math.abs((next[c.id] ?? 0) - (current.widths[c.id] ?? baseOf(c))) > 0.5\n )\n return changed ? { ...current, widths: next } : current\n },\n { persist: false }\n ),\n [update, byId]\n )\n\n return {\n layout,\n visible,\n widthOf,\n minWidthOf,\n setWidth: (id: string, width: number) =>\n update((c) => ({\n ...c,\n widths: { ...c.widths, [id]: width },\n sized: c.sized.includes(id) ? c.sized : [...c.sized, id],\n })),\n\n fitTo,\n\n toggleHidden: (id: string) =>\n update((c) => ({\n ...c,\n hidden: c.hidden.includes(id) ? c.hidden.filter((h) => h !== id) : [...c.hidden, id],\n })),\n setPinned: (id: string, side: 'left' | 'right' | undefined) =>\n update((c) => ({ ...c, pinned: { ...c.pinned, [id]: side } })),\n move: (id: string, delta: number) =>\n update((c) => {\n const order = [...c.order]\n const from = order.indexOf(id)\n const to = Math.min(Math.max(from + delta, 0), order.length - 1)\n if (from < 0 || from === to) return c\n order.splice(to, 0, ...order.splice(from, 1))\n return { ...c, order }\n }),\n moveTo: (id: string, targetId: string) =>\n update((c) => {\n const order = [...c.order]\n const from = order.indexOf(id)\n const to = order.indexOf(targetId)\n if (from < 0 || to < 0 || from === to) return c\n order.splice(to, 0, ...order.splice(from, 1))\n return { ...c, order }\n }),\n reset: () => update(() => baseline),\n }\n}\n\nfunction merge(base: ColumnLayout, patch: Partial<ColumnLayout>, fallback: ColumnLayout): ColumnLayout {\n const known = new Set(fallback.order)\n const order = [\n ...(patch.order ?? base.order).filter((id) => known.has(id)),\n ...fallback.order.filter((id) => !(patch.order ?? base.order).includes(id)),\n ]\n return {\n order,\n hidden: (patch.hidden ?? base.hidden).filter((id) => known.has(id)),\n widths: { ...fallback.widths, ...base.widths, ...patch.widths },\n pinned: { ...fallback.pinned, ...base.pinned, ...patch.pinned },\n sized: (patch.sized ?? base.sized ?? []).filter((id) => known.has(id)),\n }\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport type { RowSelectionState } from './types'\n\n/**\n * Selection is controlled from the outside so bulk actions can live anywhere,\n * but the shift-range anchor is local UI state.\n */\nexport function useRowSelection(options: {\n value: RowSelectionState\n onChange: (next: RowSelectionState) => void\n pageKeys: string[]\n}) {\n const { value, onChange, pageKeys } = options\n const anchor = React.useRef<string | null>(null)\n const selected = React.useMemo(() => new Set(value.keys), [value.keys])\n\n const setKeys = (keys: string[], allMatching = false) => onChange({ keys, allMatching })\n\n const toggle = (key: string, event?: { shiftKey?: boolean }) => {\n // Shift extends from the last clicked row, matching file-manager behaviour.\n if (event?.shiftKey && anchor.current) {\n const from = pageKeys.indexOf(anchor.current)\n const to = pageKeys.indexOf(key)\n if (from >= 0 && to >= 0) {\n const range = pageKeys.slice(Math.min(from, to), Math.max(from, to) + 1)\n const next = new Set(selected)\n const turningOn = !selected.has(key)\n range.forEach((id) => (turningOn ? next.add(id) : next.delete(id)))\n setKeys([...next])\n return\n }\n }\n anchor.current = key\n const next = new Set(selected)\n if (next.has(key)) next.delete(key)\n else next.add(key)\n setKeys([...next])\n }\n\n const pageSelected = pageKeys.length > 0 && pageKeys.every((key) => selected.has(key))\n const pagePartial = !pageSelected && pageKeys.some((key) => selected.has(key))\n\n const togglePage = () => {\n const next = new Set(selected)\n if (pageSelected) pageKeys.forEach((key) => next.delete(key))\n else pageKeys.forEach((key) => next.add(key))\n setKeys([...next])\n }\n\n return {\n selected,\n count: value.allMatching ? undefined : value.keys.length,\n allMatching: value.allMatching,\n pageSelected,\n pagePartial,\n toggle,\n togglePage,\n /** Escalates from \"this page\" to \"everything the filter matches\". */\n selectAllMatching: () => onChange({ keys: value.keys, allMatching: true }),\n clear: () => {\n anchor.current = null\n onChange({ keys: [], allMatching: false })\n },\n }\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../../lib/utils'\nimport {\n AlertIcon,\n ArrowDownIcon,\n ArrowUpIcon,\n ChevronRightIcon,\n InboxIcon,\n SortIcon,\n} from '../../lib/icons'\nimport { Button } from '../button'\nimport { Checkbox } from '../checkbox'\nimport { Skeleton } from '../skeleton'\nimport { CellEditor } from './cell-editor'\nimport { ColumnFilter, FilterChip } from './column-filter'\nimport { ColumnManager } from './column-manager'\nimport { DataTablePagination } from './data-table-pagination'\nimport type {\n ColumnLayout,\n DataTableColumn,\n DataTableQuery,\n RowAttributes,\n RowSelectionState,\n} from './types'\nimport { resolveLabels, type DataTableLabels } from './labels'\nimport { activeFilters, setFilter, sortStateOf, toggleSort } from './utils'\nimport { cssSafe, useColumnResize } from './use-column-resize'\nimport { useColumnLayout } from './use-column-layout'\nimport { useRowSelection } from './use-row-selection'\n\nexport type DataTableProps<T> = {\n columns: DataTableColumn<T>[]\n data: T[]\n rowKey: (row: T) => string\n /** Total matching rows on the server; drives the pager. */\n total?: number\n loading?: boolean\n error?: React.ReactNode\n onRetry?: () => void\n\n query: DataTableQuery\n onQueryChange: (query: DataTableQuery) => void\n\n /** Shift-click extends the range; `allMatching` covers unfetched rows. */\n selection?: RowSelectionState\n onSelectionChange?: (selection: RowSelectionState) => void\n bulkActions?: (selection: RowSelectionState) => React.ReactNode\n\n renderExpanded?: (row: T) => React.ReactNode\n onRowClick?: (row: T) => void\n /** Per-row class name — tinting a row by record state, marking it stale. */\n rowClassName?: (row: T, context: { rowIndex: number }) => string | undefined\n /**\n * Extra attributes for the row element: `data-*`, `title`, `aria-*`, a\n * handler of your own. The table's own attributes win, so this cannot break\n * selection, expansion or the pinned-column seam; a `className` here is\n * merged, and an `onClick` runs before `onRowClick`.\n */\n rowProps?: (row: T, context: { rowIndex: number }) => RowAttributes\n\n layout?: Partial<ColumnLayout>\n onLayoutChange?: (layout: ColumnLayout) => void\n /** localStorage key for widths, order, visibility and pinning. */\n persistKey?: string | null\n\n toolbar?: React.ReactNode\n /**\n * Stretches the columns to fill the container on mount and on container\n * resize, so there is no dead space at the right edge. Columns the user\n * resized by hand keep their width. `false` uses the declared widths as-is.\n */\n autoFit?: boolean\n density?: 'compact' | 'normal' | 'relaxed'\n stickyHeader?: boolean\n emptyState?: React.ReactNode\n /** `false` — or a single option — hides the rows-per-page select. */\n pageSizeOptions?: number[] | false\n /** Renders the pager. Defaults to `false` once `onLoadMore` is given. */\n pagination?: boolean\n /**\n * Appends the next page instead of replacing the current one. Passing it\n * puts a footer inside the table's own scroller — the element an infinite\n * scroll needs to watch, which a host cannot add from the outside.\n */\n onLoadMore?: () => void\n /** Whether anything is left to load. Defaults to `data.length < total`. */\n hasMore?: boolean\n /** `false` waits for a click instead of loading as the footer scrolls in. */\n autoLoadMore?: boolean\n /** Overrides for any of the table's own strings. Defaults are English. */\n labels?: Partial<DataTableLabels>\n /** Locale for number formatting; defaults to the browser's. */\n locale?: string\n caption?: string\n className?: string\n}\n\nconst SELECT_WIDTH = 44\nconst EXPAND_WIDTH = 40\n/** How long a fitted width keeps blocking a re-fit to that same width. */\nconst FIT_CYCLE_MS = 250\n\nexport function DataTable<T>({\n columns,\n data,\n rowKey,\n total,\n loading = false,\n error,\n onRetry,\n query,\n onQueryChange,\n selection,\n onSelectionChange,\n bulkActions,\n renderExpanded,\n onRowClick,\n rowClassName,\n rowProps,\n layout: controlledLayout,\n onLayoutChange,\n persistKey = null,\n toolbar,\n autoFit = true,\n density = 'normal',\n stickyHeader = true,\n emptyState,\n pageSizeOptions,\n pagination,\n onLoadMore,\n hasMore,\n autoLoadMore = true,\n labels: labelsProp,\n locale,\n caption,\n className,\n}: DataTableProps<T>) {\n const labels = resolveLabels(labelsProp)\n const rootRef = React.useRef<HTMLDivElement>(null)\n const scrollerRef = React.useRef<HTMLDivElement>(null)\n const [scrolled, setScrolled] = React.useState({ left: false, right: false })\n const [expanded, setExpanded] = React.useState<Set<string>>(new Set())\n const [editing, setEditing] = React.useState<{ key: string; col: string } | null>(null)\n\n const {\n layout,\n visible,\n widthOf,\n minWidthOf,\n setWidth,\n toggleHidden,\n setPinned,\n move,\n moveTo,\n reset,\n fitTo,\n } = useColumnLayout({ columns, persistKey, layout: controlledLayout, onLayoutChange })\n\n const resize = useColumnResize({ rootRef, widthOf, minWidthOf, onCommit: setWidth })\n\n const selectable = Boolean(selection && onSelectionChange)\n const pageKeys = React.useMemo(() => data.map(rowKey), [data, rowKey])\n const rows = useRowSelection({\n value: selection ?? { keys: [], allMatching: false },\n onChange: onSelectionChange ?? (() => {}),\n pageKeys,\n })\n\n // Fill the row on mount and on container resize.\n //\n // The widths this effect has recently fitted to. A single \"last width\" is not\n // enough: fitting to A can make a scrollbar appear, which makes the next\n // measurement B, and fitting to B makes it disappear again. Both steps differ\n // from the one immediately before, so a last-width guard waves the whole cycle\n // through and the observer keeps re-fitting for as long as the table is shown.\n // Entries expire, so a genuine resize back to an earlier width still fits.\n const recentFits = React.useRef<{ width: number; at: number }[]>([])\n // Hidden and order are compared by value: `merge` hands back fresh arrays on\n // every layout change, and re-subscribing on a width change would clear the\n // cycle history that width change is supposed to be caught by.\n const hiddenKey = layout.hidden.join('\\u0000')\n const orderKey = layout.order.join('\\u0000')\n React.useEffect(() => {\n const scroller = scrollerRef.current\n if (!scroller || !autoFit) return\n const controls = (selectable ? SELECT_WIDTH : 0) + (renderExpanded ? EXPAND_WIDTH : 0)\n // A column hidden, shown or moved has to redistribute into the same width,\n // so the history cannot outlive the layout it was collected for.\n recentFits.current = []\n const run = () => {\n const available = scroller.clientWidth - controls - 2\n const now = Date.now()\n const recent = recentFits.current.filter((entry) => now - entry.at < FIT_CYCLE_MS)\n recentFits.current = recent\n if (recent.some((entry) => Math.abs(available - entry.width) < 1)) return\n recent.push({ width: available, at: now })\n fitTo(available)\n }\n run()\n const observer = new ResizeObserver(run)\n observer.observe(scroller)\n return () => observer.disconnect()\n }, [autoFit, fitTo, selectable, renderExpanded, hiddenKey, orderKey])\n\n // Edge shadows tell the reader there is more table beyond the viewport.\n React.useEffect(() => {\n const scroller = scrollerRef.current\n if (!scroller) return\n const update = () => {\n const max = scroller.scrollWidth - scroller.clientWidth\n const left = scroller.scrollLeft > 1\n const right = scroller.scrollLeft < max - 1\n // A fresh object here would be a new state on every observer tick, and any\n // cell whose content reflows during that render feeds the observer again —\n // the two then re-render each other until the tab locks up.\n setScrolled((current) =>\n current.left === left && current.right === right ? current : { left, right }\n )\n }\n update()\n scroller.addEventListener('scroll', update, { passive: true })\n const observer = new ResizeObserver(update)\n observer.observe(scroller)\n return () => {\n scroller.removeEventListener('scroll', update)\n observer.disconnect()\n }\n }, [visible.length, data.length])\n\n /* ------------------------------ Load more ------------------------------\n The footer lives inside the scroller, because that is the element an\n observer has to be rooted at; a host cannot reach in from the outside. */\n const moreRef = React.useRef<HTMLDivElement>(null)\n const onLoadMoreRef = React.useRef(onLoadMore)\n // Kept current after every commit, so the observer below never has to be\n // re-subscribed just because the host passed a fresh closure.\n React.useEffect(() => {\n onLoadMoreRef.current = onLoadMore\n })\n // The row count the last request was made at. One request per batch of rows:\n // a host that answers with nothing new would otherwise be asked forever.\n const askedAt = React.useRef(-1)\n\n const canLoadMore =\n Boolean(onLoadMore) && (hasMore ?? (total === undefined || data.length < total))\n const showLoadMore = canLoadMore && !error && data.length > 0\n const showPager = pagination ?? !onLoadMore\n\n const askForMore = () => {\n if (askedAt.current === data.length) return\n askedAt.current = data.length\n onLoadMoreRef.current?.()\n }\n\n React.useEffect(() => {\n const sentinel = moreRef.current\n const scroller = scrollerRef.current\n if (!sentinel || !scroller || !showLoadMore || !autoLoadMore || loading) return\n if (typeof IntersectionObserver === 'undefined') return\n // Nothing here may touch state: a re-render that reflows a cell feeds the\n // scroller's own observer, and the two can then drive each other (FIXES.md).\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries.some((entry) => entry.isIntersecting)) askForMore()\n },\n { root: scroller, rootMargin: '120px' }\n )\n observer.observe(sentinel)\n // Re-observing on every batch is what keeps an endless scroll going: the\n // fresh observer reports the footer again if it is still in view.\n return () => observer.disconnect()\n }, [showLoadMore, autoLoadMore, loading, data.length])\n\n // Sticky offsets are expressed as a calc() over the width variables, so they\n // stay correct while a column is being resized.\n const offsets = React.useMemo(() => {\n const result = new Map<string, string>()\n let leftParts: string[] = selectable ? [`${SELECT_WIDTH}px`] : []\n if (renderExpanded) leftParts = [...leftParts, `${EXPAND_WIDTH}px`]\n for (const column of visible) {\n if (layout.pinned[column.id] !== 'left') continue\n result.set(column.id, leftParts.length ? `calc(${leftParts.join(' + ')})` : '0px')\n leftParts.push(`var(--mz-dt-w-${cssSafe(column.id)}, ${widthOf(column.id)}px)`)\n }\n const rightParts: string[] = []\n for (const column of [...visible].reverse()) {\n if (layout.pinned[column.id] !== 'right') continue\n result.set(column.id, rightParts.length ? `calc(${rightParts.join(' + ')})` : '0px')\n rightParts.push(`var(--mz-dt-w-${cssSafe(column.id)}, ${widthOf(column.id)}px)`)\n }\n return result\n }, [visible, layout.pinned, widthOf, selectable, renderExpanded])\n\n const widthVars = React.useMemo(() => {\n const style: Record<string, string> = {}\n for (const column of visible) {\n style[`--mz-dt-w-${cssSafe(column.id)}`] = `${widthOf(column.id)}px`\n }\n return style as React.CSSProperties\n }, [visible, widthOf])\n\n // Only the cell on the seam gets the edge shadow, so the cue reads as one\n // boundary rather than a shadow under every pinned column.\n const leftPinned = visible.filter((c) => layout.pinned[c.id] === 'left')\n const rightPinned = visible.filter((c) => layout.pinned[c.id] === 'right')\n const lastLeftPinned = leftPinned[leftPinned.length - 1]?.id\n const firstRightPinned = rightPinned[0]?.id\n const pinEdgeOf = (id: string) =>\n id === lastLeftPinned ? 'left' : id === firstRightPinned ? 'right' : undefined\n // With no pinned data column the control column carries the seam instead.\n const controlPinEdge = leftPinned.length === 0 ? 'left' : undefined\n\n const chips = activeFilters(query.filters)\n const columnById = React.useMemo(() => new Map(columns.map((c) => [c.id, c])), [columns])\n const labelOf = (id: string) => {\n const column = columnById.get(id)\n return column?.label ?? (typeof column?.header === 'string' ? column.header : id)\n }\n\n const toggleExpanded = (key: string) =>\n setExpanded((current) => {\n const next = new Set(current)\n if (next.has(key)) next.delete(key)\n else next.add(key)\n return next\n })\n\n const fillerIndex = visible.length - rightPinned.length\n // +1 for the filler column, so full-width rows really span the table.\n const colSpan = visible.length + 1 + (selectable ? 1 : 0) + (renderExpanded ? 1 : 0)\n const selectionCount = rows.allMatching ? total : rows.count\n\n /* Cells are rendered through helpers so the filler column can be spliced in\n between the scrolling columns and the right-pinned group. */\n const renderHeaderCells = (list: DataTableColumn<T>[]) =>\n list.map((column) => {\n const { dir, index } = sortStateOf(query, column.id)\n const pinned = layout.pinned[column.id]\n const label = labelOf(column.id)\n return (\n <th\n key={column.id}\n data-col={column.id}\n data-pinned={pinned}\n data-pin-edge={pinEdgeOf(column.id)}\n data-align={column.align}\n aria-sort={dir === 'asc' ? 'ascending' : dir === 'desc' ? 'descending' : 'none'}\n className=\"mz-dt__th\"\n style={\n pinned\n ? ({ [pinned]: offsets.get(column.id) } as React.CSSProperties)\n : undefined\n }\n >\n <div className=\"mz-dt__th-inner\">\n {column.sortable ? (\n <button\n type=\"button\"\n className=\"mz-dt__sort mz-focusable\"\n title={labels.sortBy(label)}\n onClick={(event) =>\n onQueryChange(toggleSort(query, column.id, event.shiftKey))\n }\n >\n <span className=\"mz-dt__th-label\">{column.header}</span>\n <span className=\"mz-dt__sort-icon\" data-active={dir ? true : undefined}>\n {dir === 'asc' ? (\n <ArrowUpIcon />\n ) : dir === 'desc' ? (\n <ArrowDownIcon />\n ) : (\n <SortIcon />\n )}\n {index ? <b>{index}</b> : null}\n </span>\n </button>\n ) : (\n <span className=\"mz-dt__th-label\" title={column.headerTitle}>\n {column.header}\n </span>\n )}\n\n {column.filter ? (\n <ColumnFilter\n columnLabel={label}\n def={column.filter}\n value={query.filters[column.id]}\n labels={labelsProp}\n onApply={(value) => onQueryChange(setFilter(query, column.id, value))}\n />\n ) : null}\n </div>\n\n {column.resizable === false ? null : (\n <span\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={labels.columnWidth(label)}\n tabIndex={0}\n className=\"mz-dt__resizer mz-focusable\"\n data-resizing={resize.resizing === column.id || undefined}\n onPointerDown={(event) => resize.start(event, column.id)}\n onDoubleClick={() => resize.autoFit(column.id)}\n onKeyDown={(event) => resize.onKeyDown(event, column.id)}\n />\n )}\n </th>\n )\n })\n\n const renderBodyCells = (row: T, rowIndex: number, list: DataTableColumn<T>[]) => {\n const key = rowKey(row)\n return list.map((column) => {\n const pinned = layout.pinned[column.id]\n const isEditing = editing?.key === key && editing.col === column.id\n return (\n <td\n key={column.id}\n data-col={column.id}\n data-pinned={pinned}\n data-pin-edge={pinEdgeOf(column.id)}\n data-align={column.align}\n data-editable={column.editable ? true : undefined}\n className=\"mz-dt__td\"\n style={\n pinned\n ? ({ [pinned]: offsets.get(column.id) } as React.CSSProperties)\n : undefined\n }\n onDoubleClick={\n column.editable\n ? (event) => {\n event.stopPropagation()\n setEditing({ key, col: column.id })\n }\n : undefined\n }\n >\n {isEditing && column.editable ? (\n <CellEditor\n row={row}\n def={column.editable}\n onDone={() => setEditing(null)}\n />\n ) : (\n <div className=\"mz-dt__cell\">\n {column.cell\n ? column.cell(row, { rowIndex })\n : column.accessor?.(row)}\n </div>\n )}\n </td>\n )\n })\n }\n\n return (\n <div\n ref={rootRef}\n data-slot=\"data-table\"\n data-density={density}\n className={cn('mz-dt', className)}\n style={widthVars}\n >\n {(toolbar || chips.length > 0 || columns.some((c) => c.hideable !== false)) && (\n <div className=\"mz-dt__toolbar\">\n <div className=\"mz-dt__toolbar-main\">{toolbar}</div>\n <div className=\"mz-dt__toolbar-side\">\n <ColumnManager\n columns={columns}\n layout={layout}\n labels={labelsProp}\n onToggleHidden={toggleHidden}\n onSetPinned={setPinned}\n onMove={move}\n onMoveTo={moveTo}\n onReset={reset}\n />\n </div>\n </div>\n )}\n\n {chips.length > 0 && (\n <div className=\"mz-dt__chips\">\n {chips.map(([id, value]) => (\n <FilterChip\n key={id}\n label={\n <>\n <b>{labelOf(id)}</b>\n {describeFilter(value, columnById.get(id)?.filter, labels)}\n </>\n }\n clearLabel={labels.clearFilter}\n onClear={() => onQueryChange(setFilter(query, id, undefined))}\n />\n ))}\n <Button\n variant=\"link\"\n size=\"xs\"\n onClick={() => onQueryChange({ ...query, filters: {}, page: 1 })}\n >\n {labels.resetAll}\n </Button>\n </div>\n )}\n\n <div\n ref={scrollerRef}\n className=\"mz-dt__scroller\"\n data-scrolled-left={scrolled.left || undefined}\n data-scrolled-right={scrolled.right || undefined}\n >\n <table className=\"mz-dt__table\" data-sticky={stickyHeader || undefined}>\n {caption ? <caption className=\"mz-sr-only\">{caption}</caption> : null}\n {/* A trailing auto-width column absorbs whatever space is left over.\n Without it `table-layout: fixed` spreads the slack across every\n column, so dragging one would visibly squeeze its neighbours. */}\n <colgroup>\n {selectable ? <col style={{ width: SELECT_WIDTH }} /> : null}\n {renderExpanded ? <col style={{ width: EXPAND_WIDTH }} /> : null}\n {visible.slice(0, fillerIndex).map((column) => (\n <col\n key={column.id}\n style={{ width: `var(--mz-dt-w-${cssSafe(column.id)}, ${widthOf(column.id)}px)` }}\n />\n ))}\n <col className=\"mz-dt__col-filler\" />\n {visible.slice(fillerIndex).map((column) => (\n <col\n key={column.id}\n style={{ width: `var(--mz-dt-w-${cssSafe(column.id)}, ${widthOf(column.id)}px)` }}\n />\n ))}\n </colgroup>\n\n <thead>\n <tr>\n {selectable ? (\n <th\n className=\"mz-dt__th mz-dt__th--control\"\n data-pinned=\"left\"\n data-pin-edge={renderExpanded ? undefined : controlPinEdge}\n style={{ left: 0 }}\n >\n <Checkbox\n size=\"sm\"\n aria-label={labels.selectPage}\n checked={rows.pageSelected ? true : rows.pagePartial ? 'indeterminate' : false}\n onCheckedChange={rows.togglePage}\n />\n </th>\n ) : null}\n {renderExpanded ? (\n <th\n className=\"mz-dt__th mz-dt__th--control\"\n data-pinned=\"left\"\n data-pin-edge={controlPinEdge}\n style={{ left: selectable ? SELECT_WIDTH : 0 }}\n >\n <span className=\"mz-sr-only\">{labels.details}</span>\n </th>\n ) : null}\n\n {renderHeaderCells(visible.slice(0, fillerIndex))}\n <th className=\"mz-dt__th mz-dt__th--filler\" aria-hidden=\"true\" />\n {renderHeaderCells(visible.slice(fillerIndex))}\n </tr>\n </thead>\n\n <tbody>\n {loading && data.length === 0\n ? Array.from({ length: Math.min(query.pageSize, 8) }, (_, index) => (\n <tr key={`skeleton-${index}`} className=\"mz-dt__row\">\n <td className=\"mz-dt__td\" colSpan={colSpan}>\n <Skeleton style={{ height: 14, width: `${60 + ((index * 13) % 35)}%` }} />\n </td>\n </tr>\n ))\n : data.map((row, rowIndex) => {\n const key = rowKey(row)\n const isOpen = expanded.has(key)\n const context = { rowIndex }\n const hostClass = rowClassName?.(row, context)\n const hostProps = rowProps?.(row, context)\n return (\n <React.Fragment key={key}>\n <tr\n {...hostProps}\n className={cn('mz-dt__row', hostClass, hostProps?.className)}\n data-selected={rows.selected.has(key) || rows.allMatching || undefined}\n data-clickable={onRowClick ? true : undefined}\n onClick={\n onRowClick || hostProps?.onClick\n ? (event) => {\n hostProps?.onClick?.(event)\n onRowClick?.(row)\n }\n : undefined\n }\n >\n {selectable ? (\n <td\n className=\"mz-dt__td mz-dt__td--control\"\n data-pinned=\"left\"\n data-pin-edge={renderExpanded ? undefined : controlPinEdge}\n style={{ left: 0 }}\n onClick={(event) => event.stopPropagation()}\n >\n <Checkbox\n size=\"sm\"\n aria-label={labels.selectRow}\n checked={rows.selected.has(key) || rows.allMatching}\n onClick={(event) =>\n rows.toggle(key, { shiftKey: (event as React.MouseEvent).shiftKey })\n }\n />\n </td>\n ) : null}\n\n {renderExpanded ? (\n <td\n className=\"mz-dt__td mz-dt__td--control\"\n data-pinned=\"left\"\n data-pin-edge={controlPinEdge}\n style={{ left: selectable ? SELECT_WIDTH : 0 }}\n onClick={(event) => event.stopPropagation()}\n >\n <button\n type=\"button\"\n className=\"mz-dt__expand mz-focusable\"\n data-open={isOpen || undefined}\n aria-expanded={isOpen}\n aria-label={isOpen ? labels.collapseRow : labels.expandRow}\n onClick={() => toggleExpanded(key)}\n >\n <ChevronRightIcon />\n </button>\n </td>\n ) : null}\n\n {renderBodyCells(row, rowIndex, visible.slice(0, fillerIndex))}\n <td className=\"mz-dt__td mz-dt__td--filler\" aria-hidden=\"true\" />\n {renderBodyCells(row, rowIndex, visible.slice(fillerIndex))}\n </tr>\n\n {isOpen && renderExpanded ? (\n // The detail panel belongs to the same record, so a row\n // tint carries onto it; the attributes do not.\n <tr className={cn('mz-dt__row mz-dt__row--expanded', hostClass)}>\n <td className=\"mz-dt__td mz-dt__td--expanded\" colSpan={colSpan}>\n {renderExpanded(row)}\n </td>\n </tr>\n ) : null}\n </React.Fragment>\n )\n })}\n </tbody>\n </table>\n\n {!loading && !error && data.length === 0 ? (\n <div className=\"mz-dt__state\">\n {emptyState ?? (\n <>\n <InboxIcon />\n <p>{labels.empty}</p>\n {chips.length > 0 ? (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={() => onQueryChange({ ...query, filters: {}, page: 1 })}\n >\n {labels.resetFilters}\n </Button>\n ) : null}\n </>\n )}\n </div>\n ) : null}\n\n {error ? (\n <div className=\"mz-dt__state\" data-tone=\"danger\">\n <AlertIcon />\n <p>{error}</p>\n {onRetry ? (\n <Button size=\"sm\" variant=\"secondary\" onClick={onRetry}>\n {labels.retry}\n </Button>\n ) : null}\n </div>\n ) : null}\n\n {showLoadMore ? (\n <div ref={moreRef} className=\"mz-dt__more\" data-slot=\"data-table-load-more\">\n <Button variant=\"secondary\" size=\"sm\" disabled={loading} onClick={askForMore}>\n {loading ? labels.loadingMore : labels.loadMore}\n </Button>\n </div>\n ) : null}\n\n {loading && data.length > 0 ? <div className=\"mz-dt__loading-bar\" aria-hidden=\"true\" /> : null}\n </div>\n\n {showPager ? (\n <DataTablePagination\n query={query}\n total={total}\n rowsOnPage={data.length}\n pageSizeOptions={pageSizeOptions}\n labels={labelsProp}\n locale={locale}\n onQueryChange={onQueryChange}\n />\n ) : null}\n\n {selectable && (rows.count ?? 0) > 0 ? (\n <div className=\"mz-dt__bulkbar\" role=\"region\" aria-label={labels.bulkActions}>\n <span className=\"mz-dt__bulkbar-count\">\n {labels.selectedCount(\n selectionCount?.toLocaleString(locale) ?? String(rows.count ?? 0)\n )}\n {rows.allMatching ? labels.allMatchingSuffix : null}\n </span>\n {!rows.allMatching && total !== undefined && rows.pageSelected && total > data.length ? (\n <Button variant=\"link\" size=\"xs\" onClick={rows.selectAllMatching}>\n {labels.selectAllMatching(total.toLocaleString(locale))}\n </Button>\n ) : null}\n <div className=\"mz-dt__bulkbar-actions\">\n {bulkActions?.(selection ?? { keys: [], allMatching: false })}\n <Button variant=\"ghost\" size=\"sm\" onClick={rows.clear}>\n {labels.clearSelection}\n </Button>\n </div>\n </div>\n ) : null}\n </div>\n )\n}\n\nfunction describeFilter(\n value: import('./types').FilterValue,\n def: import('./types').ColumnFilterDef | undefined,\n labels: DataTableLabels\n): string {\n switch (value.type) {\n case 'text':\n return `: “${value.value}”`\n case 'select': {\n // Show what the user picked in the menu, not the raw wire value.\n const options = def?.type === 'select' ? def.options : []\n const labels = value.value.map(\n (v) => options.find((option) => option.value === v)?.label ?? v\n )\n return `: ${labels.join(', ')}`\n }\n case 'number-range':\n return `: ${value.min ?? '…'}–${value.max ?? '…'}`\n case 'date-range':\n return `: ${value.from ?? '…'} – ${value.to ?? '…'}`\n case 'boolean':\n return `: ${value.value ? labels.yes.toLowerCase() : labels.no.toLowerCase()}`\n case 'custom': {\n // Only the host can put a custom value into words.\n const text = (def?.type === 'custom' ? def.describe?.(value.value) : undefined) ?? value.label\n return text ? `: ${text}` : ''\n }\n }\n}\n","import type * as React from 'react'\n\nimport type { DataTableLabels } from './labels'\n\n/* ==========================================================================\n The table is fully controlled: it never sorts, filters or paginates data\n itself. Every interaction produces a new DataTableQuery, and the consumer\n turns that into one request. On server-driven data any client-side\n processing would disagree with what the backend actually returned.\n ========================================================================== */\n\nexport type SortDir = 'asc' | 'desc'\nexport type DataTableSort = { id: string; dir: SortDir }\n\nexport type FilterValue =\n | { type: 'text'; value: string }\n | { type: 'select'; value: string[] }\n | { type: 'number-range'; min?: number; max?: number }\n | { type: 'date-range'; from?: string; to?: string }\n | { type: 'boolean'; value: boolean }\n /**\n * Whatever a host's own filter widget produces. The value travels into\n * `query.filters` untouched — its shape is the host's business — and `label`\n * is what the chip above the table shows.\n */\n | { type: 'custom'; value: unknown; label?: string }\n\nexport type DataTableFilters = Record<string, FilterValue>\n\nexport type DataTableQuery = {\n sort: DataTableSort[]\n filters: DataTableFilters\n page: number\n pageSize: number\n}\n\nexport type SelectOptionDef = { value: string; label: string }\n\n/** What a `custom` filter's `render` gets to work with. */\nexport type CustomFilterContext = {\n /** The staged value — the popover's draft, not what the query carries yet. */\n value: unknown\n label?: string\n /** Stages a value; it reaches the query when Apply is pressed. */\n onChange: (value: unknown, label?: string) => void\n /** Stages and applies in one step, then closes the popover. */\n commit: (value: unknown, label?: string) => void\n /** The table's resolved strings, so a host widget stays translated with it. */\n labels: DataTableLabels\n}\n\n/** Declares which control the header popover shows and what it sends back. */\nexport type ColumnFilterDef =\n | { type: 'text'; placeholder?: string }\n | { type: 'select'; options: SelectOptionDef[]; multiple?: boolean }\n | { type: 'number-range'; step?: number; unit?: string }\n | { type: 'date-range' }\n | { type: 'boolean'; trueLabel?: string; falseLabel?: string }\n /**\n * A host-supplied control — async multiselect, range slider, presence\n * toggle — rendered inside the kit's popover so it looks like the built-in\n * filters and, unlike a widget smuggled into `column.header`, takes part in\n * `query.filters`.\n */\n | {\n type: 'custom'\n render: (context: CustomFilterContext) => React.ReactNode\n /** Chip text for a value; falls back to the label the widget supplied. */\n describe?: (value: unknown) => string\n /** `false` drops the Apply/Reset footer — for a widget that commits itself. */\n actions?: boolean\n }\n\nexport type EditableDef<T> = {\n type: 'text' | 'number' | 'select'\n options?: SelectOptionDef[]\n /** Resolves the current editable value out of the row. */\n value: (row: T) => string\n /** Rejected promises roll the cell back and surface the message. */\n onSave: (row: T, value: string) => void | Promise<void>\n}\n\nexport type DataTableColumn<T> = {\n id: string\n header: React.ReactNode\n /** Short label used where the header may be a node — column manager, cards. */\n label?: string\n /** Plain value renderer. Ignored when `cell` is given. */\n accessor?: (row: T) => React.ReactNode\n cell?: (row: T, context: { rowIndex: number }) => React.ReactNode\n width?: number\n minWidth?: number\n maxWidth?: number\n align?: 'left' | 'center' | 'right'\n sortable?: boolean\n filter?: ColumnFilterDef\n /** Sticks the column to an edge while the body scrolls sideways. */\n pinned?: 'left' | 'right'\n resizable?: boolean\n /**\n * `false` keeps the column at exactly `width` when the table stretches its\n * columns to fill the container — for icon or action columns.\n */\n flex?: boolean\n /** `false` keeps the column out of the visibility menu (and always visible). */\n hideable?: boolean\n editable?: EditableDef<T>\n headerTitle?: string\n}\n\n/** Anything valid on a `<tr>`, plus `data-*` — the row-level escape hatch. */\nexport type RowAttributes = React.ComponentPropsWithoutRef<'tr'> & {\n [key: `data-${string}`]: string | number | boolean | undefined\n}\n\n/** Column layout is UI state, not query state — it never reaches the backend. */\nexport type ColumnLayout = {\n order: string[]\n hidden: string[]\n widths: Record<string, number>\n pinned: Record<string, 'left' | 'right' | undefined>\n /** Columns the user resized by hand; auto-fit leaves these alone. */\n sized: string[]\n}\n\nexport type SavedView = {\n id: string\n name: string\n query: DataTableQuery\n layout?: Partial<ColumnLayout>\n}\n\nexport type RowSelectionState = {\n /** Explicitly ticked row keys on the current page. */\n keys: string[]\n /**\n * \"Everything the current filter matches\", including rows never fetched.\n * Bulk actions must send the query instead of the key list in this mode.\n */\n allMatching: boolean\n}\n\nexport const emptyQuery: DataTableQuery = {\n sort: [],\n filters: {},\n page: 1,\n pageSize: 25,\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport type { DataTableFilters, DataTableQuery, SavedView } from './types'\nimport { emptyQuery } from './types'\nimport { parseSort, serializeSort } from './utils'\n\n/* --------------------------------------------------------------------------\n Query state, optionally mirrored into the URL so a filtered table survives\n a reload and can be shared as a link.\n -------------------------------------------------------------------------- */\n\nfunction encode(query: DataTableQuery, prefix: string) {\n const params = new URLSearchParams(window.location.search)\n const set = (key: string, value: string | undefined) => {\n if (value) params.set(prefix + key, value)\n else params.delete(prefix + key)\n }\n set('sort', serializeSort(query.sort) || undefined)\n set('page', query.page > 1 ? String(query.page) : undefined)\n set('size', String(query.pageSize))\n set('f', Object.keys(query.filters).length ? JSON.stringify(query.filters) : undefined)\n return params\n}\n\nfunction decode(prefix: string, fallback: DataTableQuery): DataTableQuery {\n const params = new URLSearchParams(window.location.search)\n const get = (key: string) => params.get(prefix + key)\n let filters: DataTableFilters = fallback.filters\n const rawFilters = get('f')\n if (rawFilters) {\n try {\n filters = JSON.parse(rawFilters) as DataTableFilters\n } catch {\n filters = {}\n }\n }\n return {\n sort: get('sort') ? parseSort(get('sort')) : fallback.sort,\n filters,\n page: Number(get('page') ?? fallback.page) || 1,\n pageSize: Number(get('size') ?? fallback.pageSize) || fallback.pageSize,\n }\n}\n\nexport type UseTableQueryOptions = {\n initial?: Partial<DataTableQuery>\n /** Mirrors the query into the query-string under this prefix. */\n urlKey?: string | null\n /** `replace` keeps table interactions out of the back-button history. */\n history?: 'replace' | 'push'\n}\n\nexport function useTableQuery({\n initial,\n urlKey = null,\n history = 'replace',\n}: UseTableQueryOptions = {}) {\n const base = React.useMemo<DataTableQuery>(() => ({ ...emptyQuery, ...initial }), [initial])\n // The URL is read after mount, so server and first client render agree.\n const [query, setQuery] = React.useState<DataTableQuery>(base)\n\n React.useEffect(() => {\n if (urlKey === null || typeof window === 'undefined') return\n setQuery(decode(urlKey, base))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [urlKey])\n\n React.useEffect(() => {\n if (urlKey === null || typeof window === 'undefined') return\n const params = encode(query, urlKey)\n const search = params.toString()\n const next = `${window.location.pathname}${search ? `?${search}` : ''}${window.location.hash}`\n if (next === `${window.location.pathname}${window.location.search}${window.location.hash}`) return\n window.history[history === 'push' ? 'pushState' : 'replaceState'](null, '', next)\n }, [query, urlKey, history])\n\n // Back/forward must move the table, not just the address bar.\n React.useEffect(() => {\n if (urlKey === null || typeof window === 'undefined') return\n const onPop = () => setQuery(decode(urlKey, base))\n window.addEventListener('popstate', onPop)\n return () => window.removeEventListener('popstate', onPop)\n }, [urlKey, base])\n\n const reset = React.useCallback(() => setQuery(base), [base])\n\n return { query, setQuery, reset }\n}\n\n/* --------------------------------------------------------------------------\n Saved views — a named query (and optionally a column layout) the user can\n come back to. Stored locally unless the host passes its own list.\n -------------------------------------------------------------------------- */\n\nexport type UseSavedViewsOptions = {\n storageKey?: string | null\n views?: SavedView[]\n onViewsChange?: (views: SavedView[]) => void\n}\n\nexport function useSavedViews({\n storageKey = null,\n views: controlled,\n onViewsChange,\n}: UseSavedViewsOptions = {}) {\n const [internal, setInternal] = React.useState<SavedView[]>([])\n\n React.useEffect(() => {\n if (!storageKey || typeof window === 'undefined') return\n try {\n const raw = window.localStorage.getItem(storageKey)\n if (raw) setInternal(JSON.parse(raw) as SavedView[])\n } catch {\n /* blocked storage — views just do not persist */\n }\n }, [storageKey])\n\n const views = controlled ?? internal\n\n const persist = React.useCallback(\n (next: SavedView[]) => {\n setInternal(next)\n onViewsChange?.(next)\n if (!storageKey || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(next))\n } catch {\n /* ignore */\n }\n },\n [storageKey, onViewsChange]\n )\n\n return {\n views,\n save: (view: SavedView) => persist([...views.filter((v) => v.id !== view.id), view]),\n remove: (id: string) => persist(views.filter((v) => v.id !== id)),\n }\n}\n"]}