@cocliny/ui-library 0.1.0
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.d.ts +1346 -0
- package/dist/index.js +3611 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +3212 -0
- package/package.json +73 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/foundation/cn.ts","../src/foundation/variants.ts","../src/foundation/theme/tokens.ts","../src/foundation/theme/cssVars.ts","../src/foundation/theme/ThemeProvider.tsx","../src/components/typography/Text/Text.tsx","../src/components/typography/Heading/Heading.tsx","../src/components/typography/Label/Label.tsx","../src/components/typography/Code/Code.tsx","../src/components/typography/Link/Link.tsx","../src/components/feedback/Spinner/Spinner.tsx","../src/components/buttons/Button/Button.tsx","../src/components/buttons/IconButton/IconButton.tsx","../src/components/buttons/ButtonGroup/ButtonGroup.tsx","../src/components/feedback/Skeleton/Skeleton.tsx","../src/components/feedback/Alert/Alert.tsx","../src/components/feedback/Progress/Progress.tsx","../src/components/feedback/StatusIndicator/StatusIndicator.tsx","../src/components/feedback/EmptyState/EmptyState.tsx","../src/components/feedback/LoadingOverlay/LoadingOverlay.tsx","../src/components/feedback/Dialog/Dialog.tsx","../src/components/feedback/Drawer/Drawer.tsx","../src/components/feedback/AlertDialog/AlertDialog.tsx","../src/components/feedback/Popover/Popover.tsx","../src/components/feedback/Tooltip/Tooltip.tsx","../src/components/feedback/Toast/Toast.tsx","../src/components/inputs/Field/Field.context.tsx","../src/components/inputs/Field/Field.tsx","../src/components/inputs/TextInput/TextInput.tsx","../src/components/inputs/PasswordInput/PasswordInput.tsx","../src/components/inputs/SearchInput/SearchInput.tsx","../src/components/inputs/Textarea/Textarea.tsx","../src/components/inputs/Checkbox/Checkbox.tsx","../src/components/inputs/CodeInput/CodeInput.tsx","../src/components/inputs/Switch/Switch.tsx","../src/components/inputs/RadioGroup/RadioGroup.tsx","../src/components/inputs/Select/Select.tsx","../src/components/inputs/Calendar/Calendar.tsx","../src/components/inputs/DatePicker/DatePicker.tsx","../src/components/inputs/Form/Form.tsx","../src/components/inputs/ToggleGroup/ToggleGroup.tsx","../src/components/navigation/Command/Command.tsx","../src/components/inputs/Combobox/Combobox.tsx","../src/components/data-display/Badge/Badge.tsx","../src/components/inputs/MultiSelect/MultiSelect.tsx","../src/components/inputs/FileUpload/FileUpload.tsx","../src/components/inputs/DateRangePicker/DateRangePicker.tsx","../src/components/inputs/Slider/Slider.tsx","../src/components/inputs/SignatureInput/SignatureInput.tsx","../src/components/layout/Stack/Stack.tsx","../src/components/layout/Flex/Flex.tsx","../src/components/layout/Grid/Grid.tsx","../src/components/layout/Container/Container.tsx","../src/components/layout/Panel/Panel.tsx","../src/components/layout/Divider/Divider.tsx","../src/components/layout/PageHeader/PageHeader.tsx","../src/components/navigation/Tabs/Tabs.tsx","../src/components/navigation/Breadcrumbs/Breadcrumbs.tsx","../src/components/navigation/Pagination/Pagination.tsx","../src/components/navigation/DropdownMenu/DropdownMenu.tsx","../src/components/data-display/Accordion/Accordion.tsx","../src/components/data-display/Avatar/Avatar.tsx","../src/components/data-display/Card/Card.tsx","../src/components/data-display/DataTable/DataTable.tsx","../src/components/data-display/Timeline/Timeline.tsx","../src/components/data-display/Steps/Steps.tsx","../src/components/data-display/StatCard/StatCard.tsx","../src/components/data-display/Chart/Chart.utils.ts","../src/components/data-display/Chart/ChartTooltip.tsx","../src/components/data-display/Chart/ChartLegend.tsx","../src/components/data-display/Chart/CartesianChartBase.tsx","../src/components/data-display/Chart/LineChart.tsx","../src/components/data-display/Chart/BarChart.tsx","../src/components/data-display/Chart/AreaChart.tsx","../src/index.ts"],"names":["jsx","jsxs","Button","forwardRef","IconButton","DialogPrimitive2","React","createContext","useContext","TextInput","PasswordInput","useState","SearchInput","Textarea","Checkbox","React2","Switch","useId","useControllableState","Select","React4","React6","React7","CommandPrimitive","React8","Badge","React9","React10","React11","format","React12","React13","PageHeader","useRef","Fragment","React14","React15","React16","React17","Tooltip","RechartsLineChart","RechartsBarChart","React18","RechartsAreaChart"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * `cn` — the framework's single class-composition helper.\n * clsx handles conditional composition; tailwind-merge resolves conflicts so\n * the LAST class wins — which is what makes every component's `className`\n * prop a true override rather than a lottery.\n */\nimport { clsx, type ClassValue } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\n// Teach tailwind-merge our token-driven custom class groups so, e.g.,\n// `cn(\"focus-ring\", …)` and custom color utilities merge correctly.\nconst twMerge = extendTailwindMerge<\"focus-ring\">({\n extend: {\n classGroups: {\n \"focus-ring\": [\"focus-ring\"],\n },\n },\n});\n\nexport type { ClassValue };\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","/**\n * `defineVariants` — a strongly-typed variant engine (base + variants +\n * compoundVariants + defaultVariants), hand-rolled so the framework carries no\n * extra runtime dependency. API mirrors the industry-standard cva shape, so\n * migrating to cva later would be mechanical.\n *\n * @example\n * const button = defineVariants({\n * base: \"inline-flex items-center focus-ring\",\n * variants: {\n * intent: { primary: \"bg-primary text-primary-fg\", danger: \"bg-danger text-danger-fg\" },\n * size: { sm: \"h-(--ml-control-h-sm)\", md: \"h-(--ml-control-h-md)\" },\n * },\n * compoundVariants: [{ intent: \"danger\", size: \"sm\", className: \"font-semibold\" }],\n * defaultVariants: { intent: \"primary\", size: \"md\" },\n * });\n * button({ size: \"sm\" }); // → merged class string\n * type ButtonVariantProps = VariantProps<typeof button>;\n */\nimport { cn, type ClassValue } from \"./cn\";\n\ntype VariantsSchema = Record<string, Record<string, ClassValue>>;\n\n// Boolean variants declared as { true: \"...\", false: \"...\" } accept real\n// booleans at the call site (cva-compatible ergonomics).\ntype BooleanIfBoolKeys<TMap> = \"true\" extends keyof TMap ? boolean : never;\n\ntype VariantSelection<TVariants extends VariantsSchema> = {\n [K in keyof TVariants]?: keyof TVariants[K] | BooleanIfBoolKeys<TVariants[K]>;\n};\n\ntype CompoundVariant<TVariants extends VariantsSchema> = VariantSelection<TVariants> & {\n className: ClassValue;\n};\n\nexport interface VariantsConfig<TVariants extends VariantsSchema> {\n base?: ClassValue;\n variants: TVariants;\n compoundVariants?: ReadonlyArray<CompoundVariant<TVariants>>;\n defaultVariants?: VariantSelection<TVariants>;\n}\n\nexport type VariantFn<TVariants extends VariantsSchema> = (\n selection?: VariantSelection<TVariants> & { className?: ClassValue },\n) => string;\n\n/** Extracts the props type of a variant function for reuse in component props. */\nexport type VariantProps<T> = T extends VariantFn<infer V> ? VariantSelection<V> : never;\n\nexport function defineVariants<TVariants extends VariantsSchema>(\n config: VariantsConfig<TVariants>,\n): VariantFn<TVariants> {\n const { base, variants, compoundVariants = [], defaultVariants = {} } = config;\n const variantKeys = Object.keys(variants) as Array<keyof TVariants>;\n\n return (selection = {}) => {\n const resolved: VariantSelection<TVariants> = { ...defaultVariants };\n for (const key of variantKeys) {\n const value = selection[key];\n if (value !== undefined) {\n // Correlated-union assignment (microsoft/TypeScript#30581): `value`\n // is provably VariantSelection<TVariants>[typeof key], but TS can't\n // track the key correlation through the union index.\n resolved[key] = value as VariantSelection<TVariants>[keyof TVariants];\n }\n }\n\n const classes: ClassValue[] = [base];\n for (const key of variantKeys) {\n const value = resolved[key];\n // Booleans index their stringified key ({ true: …, false: … }).\n if (value !== undefined) classes.push(variants[key]?.[String(value)]);\n }\n\n for (const compound of compoundVariants) {\n let matches = true;\n for (const key of variantKeys) {\n const condition = compound[key];\n if (condition !== undefined && String(resolved[key]) !== String(condition)) {\n matches = false;\n break;\n }\n }\n if (matches) classes.push(compound.className);\n }\n\n classes.push(selection.className);\n return cn(...classes);\n };\n}\n","/**\n * Typed mirror of the semantic token surface declared in styles/index.css.\n * `ThemeOverrides` is the public rebranding API: every key maps to one --ml-*\n * CSS variable. Adding a token means adding it in exactly two places — the\n * CSS `:root` block and this map — and the type system covers the rest.\n */\n\n/** Semantic token name → CSS custom-property it controls. */\nexport const TOKEN_CSS_VARS = {\n background: \"--ml-background\",\n surface: \"--ml-surface\",\n surfaceRaised: \"--ml-surface-raised\",\n surfaceSunken: \"--ml-surface-sunken\",\n overlay: \"--ml-overlay\",\n\n border: \"--ml-border\",\n borderStrong: \"--ml-border-strong\",\n\n fg: \"--ml-fg\",\n fgMuted: \"--ml-fg-muted\",\n fgSubtle: \"--ml-fg-subtle\",\n fgDisabled: \"--ml-fg-disabled\",\n fgInverted: \"--ml-fg-inverted\",\n\n primary: \"--ml-primary\",\n primaryHover: \"--ml-primary-hover\",\n primaryActive: \"--ml-primary-active\",\n primaryFg: \"--ml-primary-fg\",\n primarySubtle: \"--ml-primary-subtle\",\n primarySubtleFg: \"--ml-primary-subtle-fg\",\n\n success: \"--ml-success\",\n successFg: \"--ml-success-fg\",\n successSubtle: \"--ml-success-subtle\",\n successSubtleFg: \"--ml-success-subtle-fg\",\n\n warning: \"--ml-warning\",\n warningFg: \"--ml-warning-fg\",\n warningSubtle: \"--ml-warning-subtle\",\n warningSubtleFg: \"--ml-warning-subtle-fg\",\n\n danger: \"--ml-danger\",\n dangerFg: \"--ml-danger-fg\",\n dangerSubtle: \"--ml-danger-subtle\",\n dangerSubtleFg: \"--ml-danger-subtle-fg\",\n\n info: \"--ml-info\",\n infoFg: \"--ml-info-fg\",\n infoSubtle: \"--ml-info-subtle\",\n infoSubtleFg: \"--ml-info-subtle-fg\",\n\n focusRing: \"--ml-focus-ring\",\n focusRingWidth: \"--ml-focus-ring-width\",\n focusRingOffset: \"--ml-focus-ring-offset\",\n\n durationFast: \"--ml-duration-fast\",\n durationNormal: \"--ml-duration-normal\",\n durationSlow: \"--ml-duration-slow\",\n} as const satisfies Record<string, `--ml-${string}`>;\n\n/** All override-able semantic token names. */\nexport type ThemeToken = keyof typeof TOKEN_CSS_VARS;\n\n/** Per-token value overrides (any valid CSS value for that property). */\nexport type TokenValues = Partial<Record<ThemeToken, string>>;\n\n/**\n * Rebranding payload accepted by ThemeProvider. `light` applies to :root,\n * `dark` to [data-theme=\"dark\"]; `common` applies to both.\n */\nexport interface ThemeOverrides {\n common?: TokenValues;\n light?: TokenValues;\n dark?: TokenValues;\n}\n","/**\n * Serialization of ThemeOverrides into CSS. Pure — unit-testable and usable\n * server-side (the ThemeProvider renders the result into a <style> tag, so\n * SSR output already carries the brand with no flash of default theme).\n */\nimport { TOKEN_CSS_VARS, type ThemeOverrides, type TokenValues } from \"./tokens\";\n\nfunction declarations(values: TokenValues): string {\n return (Object.keys(values) as Array<keyof TokenValues>)\n .map((token) => {\n const value = values[token];\n return value === undefined ? null : `${TOKEN_CSS_VARS[token]}: ${value};`;\n })\n .filter((d): d is string => d !== null)\n .join(\" \");\n}\n\n/**\n * Builds the stylesheet text for a set of overrides. Scoped under a selector\n * (default `:root`) so multiple branded regions can coexist if ever needed.\n */\nexport function themeOverridesToCss(overrides: ThemeOverrides, scope = \":root\"): string {\n const rules: string[] = [];\n\n const light = { ...overrides.common, ...overrides.light };\n const dark = { ...overrides.common, ...overrides.dark };\n\n const lightDecls = declarations(light);\n if (lightDecls) rules.push(`${scope} { ${lightDecls} }`);\n\n const darkDecls = declarations(dark);\n if (darkDecls) {\n const darkScope =\n scope === \":root\" ? `[data-theme=\"dark\"]` : `[data-theme=\"dark\"] ${scope}, ${scope}[data-theme=\"dark\"]`;\n rules.push(`${darkScope} { ${darkDecls} }`);\n }\n\n return rules.join(\"\\n\");\n}\n","\"use client\";\n\n/**\n * ThemeProvider — the framework's theming runtime.\n *\n * Responsibilities:\n * - Owns the color scheme (light / dark / system) and applies it as\n * `data-theme` on <html>, where the token CSS expects it.\n * - Owns density, applied as `data-density`.\n * - Optionally persists the user's scheme choice (localStorage) and follows\n * OS changes while in `system` mode.\n * - Injects consumer brand `overrides` as a <style> tag (SSR-rendered, so\n * server HTML is already branded — no flash of default theme).\n *\n * SSR / hydration safety: the provider renders no scheme-dependent markup of\n * its own. To avoid a flash of wrong theme on first paint, apps inject\n * `getThemeInitScript()` in <head> — it applies the persisted/system scheme\n * before hydration using the same storage key.\n *\n * The framework never fetches or routes; this is pure UI infrastructure.\n */\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport type { ColorScheme, Density, ResolvedColorScheme } from \"../types/common\";\nimport { themeOverridesToCss } from \"./cssVars\";\nimport type { ThemeOverrides } from \"./tokens\";\n\nconst DEFAULT_STORAGE_KEY = \"ml-color-scheme\";\n\nexport interface ThemeContextValue {\n /** The selected scheme, possibly `system`. */\n colorScheme: ColorScheme;\n /** The scheme actually in effect (system resolved). */\n resolvedColorScheme: ResolvedColorScheme;\n setColorScheme: (scheme: ColorScheme) => void;\n density: Density;\n setDensity: (density: Density) => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n /** Initial scheme when nothing is persisted. @default \"system\" */\n defaultColorScheme?: ColorScheme;\n /** Initial density. @default \"comfortable\" */\n defaultDensity?: Density;\n /** Brand token overrides — the rebranding API. */\n overrides?: ThemeOverrides;\n /**\n * localStorage key for the persisted scheme; pass `null` to disable\n * persistence entirely. @default \"ml-color-scheme\"\n */\n storageKey?: string | null;\n}\n\nfunction systemScheme(): ResolvedColorScheme {\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\nfunction readStoredScheme(storageKey: string | null): ColorScheme | null {\n if (storageKey === null || typeof window === \"undefined\") return null;\n try {\n const raw = window.localStorage.getItem(storageKey);\n return raw === \"light\" || raw === \"dark\" || raw === \"system\" ? raw : null;\n } catch {\n return null;\n }\n}\n\nexport function ThemeProvider({\n children,\n defaultColorScheme = \"system\",\n defaultDensity = \"comfortable\",\n overrides,\n storageKey = DEFAULT_STORAGE_KEY,\n}: ThemeProviderProps) {\n // Server render + first client render must agree (hydration), so state\n // starts from the default; the persisted value is adopted in an effect.\n // getThemeInitScript() covers the pre-hydration paint.\n const [colorScheme, setColorSchemeState] = useState<ColorScheme>(defaultColorScheme);\n const [resolvedColorScheme, setResolvedColorScheme] = useState<ResolvedColorScheme>(\n defaultColorScheme === \"dark\" ? \"dark\" : \"light\",\n );\n const [density, setDensityState] = useState<Density>(defaultDensity);\n\n // Adopt the persisted choice once mounted.\n useEffect(() => {\n const stored = readStoredScheme(storageKey);\n if (stored !== null) setColorSchemeState(stored);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- adopt once on mount\n }, []);\n\n // Resolve + apply the scheme; track OS changes while in `system`.\n useEffect(() => {\n const apply = () => {\n const resolved = colorScheme === \"system\" ? systemScheme() : colorScheme;\n setResolvedColorScheme(resolved);\n document.documentElement.setAttribute(\"data-theme\", resolved);\n };\n apply();\n\n if (colorScheme !== \"system\") return;\n const media = window.matchMedia(\"(prefers-color-scheme: dark)\");\n media.addEventListener(\"change\", apply);\n return () => {\n media.removeEventListener(\"change\", apply);\n };\n }, [colorScheme]);\n\n useEffect(() => {\n document.documentElement.setAttribute(\"data-density\", density);\n }, [density]);\n\n const setColorScheme = useCallback(\n (scheme: ColorScheme) => {\n setColorSchemeState(scheme);\n if (storageKey !== null) {\n try {\n window.localStorage.setItem(storageKey, scheme);\n } catch {\n // Storage unavailable (private mode, iframe) — scheme still applies.\n }\n }\n },\n [storageKey],\n );\n\n const setDensity = useCallback((next: Density) => {\n setDensityState(next);\n }, []);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ colorScheme, resolvedColorScheme, setColorScheme, density, setDensity }),\n [colorScheme, resolvedColorScheme, setColorScheme, density, setDensity],\n );\n\n const overrideCss = useMemo(\n () => (overrides ? themeOverridesToCss(overrides) : \"\"),\n [overrides],\n );\n\n return (\n <ThemeContext.Provider value={value}>\n {overrideCss ? <style data-ml-theme-overrides=\"\">{overrideCss}</style> : null}\n {children}\n </ThemeContext.Provider>\n );\n}\n\n/** Access the theme runtime. Throws outside a ThemeProvider. */\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (ctx === null) {\n throw new Error(\"useTheme must be used within a <ThemeProvider>.\");\n }\n return ctx;\n}\n\n/**\n * Inline script for the document <head> that applies the persisted (or\n * system) scheme BEFORE first paint, eliminating theme flash on SSR pages:\n *\n * ```tsx\n * <script dangerouslySetInnerHTML={{ __html: getThemeInitScript() }} />\n * ```\n */\nexport function getThemeInitScript(storageKey: string = DEFAULT_STORAGE_KEY): string {\n // Serialized, dependency-free, and defensive: any failure leaves the default.\n return (\n `(function(){try{var k=${JSON.stringify(storageKey)};var s=localStorage.getItem(k);` +\n `if(s!==\"light\"&&s!==\"dark\")s=window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\";` +\n `document.documentElement.setAttribute(\"data-theme\",s);}catch(e){}})();`\n );\n}\n","import type { ElementType } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\nimport type { TextProps } from \"./Text.types\";\n\nconst text = defineVariants({\n variants: {\n size: {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n },\n weight: {\n regular: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n },\n tone: {\n default: \"text-fg\",\n muted: \"text-fg-muted\",\n subtle: \"text-fg-subtle\",\n disabled: \"text-fg-disabled\",\n danger: \"text-danger-subtle-fg\",\n success: \"text-success-subtle-fg\",\n inverted: \"text-fg-inverted\",\n },\n align: {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n },\n truncate: {\n true: \"block max-w-full truncate\",\n false: \"\",\n },\n },\n defaultVariants: { size: \"md\", weight: \"regular\", tone: \"default\", align: \"left\", truncate: false },\n});\n\n/**\n * Polymorphic text primitive — the base of the typography system. Renders a\n * <span> by default; any element/component via `as` with full prop typing.\n *\n * @example\n * <Text size=\"sm\" tone=\"muted\" truncate>{patient.summary}</Text>\n * <Text as=\"label\" htmlFor=\"dob\" weight=\"semibold\">Date of birth</Text>\n */\nexport function Text<C extends ElementType = \"span\">(props: TextProps<C>) {\n const { as, size, weight, tone, align, truncate, className, ...rest } = props;\n const Component = (as ?? \"span\");\n return (\n <Component\n className={text({ size, weight, tone, align, truncate, className })}\n {...rest}\n />\n );\n}\n","import type { ElementType } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\nimport type { PolymorphicProps } from \"../../../foundation/types/polymorphic\";\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type HeadingSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nconst heading = defineVariants({\n base: \"text-fg font-bold tracking-tight\",\n variants: {\n size: {\n xs: \"text-sm\",\n sm: \"text-base\",\n md: \"text-lg\",\n lg: \"text-xl\",\n xl: \"text-2xl\",\n \"2xl\": \"text-3xl\",\n },\n },\n defaultVariants: { size: \"lg\" },\n});\n\nexport interface HeadingOwnProps {\n /** Semantic heading level (h1–h6). Visual size is independent via `size`. */\n level?: HeadingLevel;\n /** Visual size, decoupled from the semantic level. */\n size?: HeadingSize;\n className?: string;\n}\n\nexport type HeadingProps<C extends ElementType = \"h2\"> = PolymorphicProps<C, HeadingOwnProps>;\n\n/**\n * Semantic heading with size decoupled from level — correct document outline\n * without giant fonts (e.g. `level={2} size=\"sm\"` for a card title).\n */\nexport function Heading<C extends ElementType = \"h2\">(props: HeadingProps<C>) {\n const { as, level = 2, size, className, ...rest } = props;\n const Component = (as ?? (`h${String(level)}` as ElementType));\n return <Component className={heading({ size, className })} {...rest} />;\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface LabelProps extends ComponentPropsWithoutRef<\"label\"> {\n /** Renders a required marker (with sr-only text for screen readers). */\n required?: boolean;\n}\n\n/** Form label with consistent weight/size and an accessible required marker. */\nexport function Label({ required = false, className, children, ...rest }: LabelProps) {\n return (\n <label className={cn(\"inline-flex items-center gap-1 text-sm font-medium text-fg\", className)} {...rest}>\n {children}\n {required && (\n <span aria-hidden className=\"text-danger-subtle-fg\">\n *\n </span>\n )}\n {required && <span className=\"sr-only\">(required)</span>}\n </label>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface CodeProps extends ComponentPropsWithoutRef<\"code\"> {\n /** Render as a block (<pre><code>) instead of inline. */\n block?: boolean;\n}\n\n/** Inline code chip, or a scrollable code block with `block`. */\nexport function Code({ block = false, className, children, ...rest }: CodeProps) {\n if (block) {\n return (\n <pre className={cn(\"overflow-x-auto rounded-md border border-line bg-surface-sunken p-3 font-mono text-sm text-fg\", className)}>\n <code {...rest}>{children}</code>\n </pre>\n );\n }\n return (\n <code\n className={cn(\"rounded-xs border border-line bg-surface-sunken px-1 py-0.5 font-mono text-[0.85em] text-fg\", className)}\n {...rest}\n >\n {children}\n </code>\n );\n}\n","import type { ElementType } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\nimport type { PolymorphicProps } from \"../../../foundation/types/polymorphic\";\n\nconst link = defineVariants({\n base: \"focus-ring rounded-xs font-medium underline-offset-2 transition-colors duration-(--ml-duration-fast)\",\n variants: {\n variant: {\n /** Colored, underline on hover — default for inline links. */\n default: \"text-primary-subtle-fg hover:underline\",\n /** Always underlined — for body copy where color alone is insufficient. */\n underline: \"text-primary-subtle-fg underline hover:text-primary\",\n /** Inherits color — for links inside already-colored contexts. */\n inherit: \"text-inherit underline hover:no-underline\",\n },\n },\n defaultVariants: { variant: \"default\" },\n});\n\nexport interface LinkOwnProps {\n variant?: \"default\" | \"underline\" | \"inherit\";\n className?: string;\n}\n\nexport type LinkProps<C extends ElementType = \"a\"> = PolymorphicProps<C, LinkOwnProps>;\n\n/**\n * Anchor styling over any link implementation. Framework-agnostic by design:\n * pass your router's component via `as` (e.g. `as={NextLink}`) — the framework\n * never owns routing.\n */\nexport function Link<C extends ElementType = \"a\">(props: LinkProps<C>) {\n const { as, variant, className, ...rest } = props;\n const Component = (as ?? \"a\");\n return <Component className={link({ variant, className })} {...rest} />;\n}\n","import { cn } from \"../../../foundation/cn\";\nimport { defineVariants } from \"../../../foundation/variants\";\n\nconst spinner = defineVariants({\n base: \"inline-block animate-spin rounded-full border-2 border-current border-t-transparent\",\n variants: {\n size: {\n xs: \"size-3\",\n sm: \"size-4\",\n md: \"size-5\",\n lg: \"size-8\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport interface SpinnerProps {\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n /**\n * Accessible label. Pass null ONLY when a parent already announces loading\n * (e.g. a button with aria-busy) — the spinner is then presentation-only.\n */\n label?: string | null;\n className?: string;\n}\n\n/** Indeterminate activity indicator. Inherits color from its context. */\nexport function Spinner({ size, label = \"Loading\", className }: SpinnerProps) {\n return (\n <span\n role={label === null ? undefined : \"status\"}\n aria-hidden={label === null ? true : undefined}\n className={cn(\"inline-flex\", className)}\n >\n <span className={spinner({ size })} />\n {label !== null && <span className=\"sr-only\">{label}</span>}\n </span>\n );\n}\n","import { forwardRef } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\nimport { Spinner } from \"../../feedback/Spinner\";\nimport type { ButtonProps } from \"./Button.types\";\n\nconst button = defineVariants({\n base:\n \"focus-ring inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-semibold \" +\n \"transition-colors duration-(--ml-duration-fast) \" +\n \"disabled:cursor-not-allowed disabled:opacity-55 aria-busy:cursor-wait\",\n variants: {\n variant: {\n solid: \"\",\n outline: \"border bg-transparent\",\n ghost: \"bg-transparent\",\n subtle: \"\",\n },\n intent: {\n primary: \"\",\n neutral: \"\",\n success: \"\",\n warning: \"\",\n danger: \"\",\n },\n size: {\n sm: \"h-(--ml-control-h-sm) px-3 text-sm\",\n md: \"h-(--ml-control-h-md) px-(--ml-control-px) text-sm\",\n lg: \"h-(--ml-control-h-lg) px-5 text-base\",\n },\n fullWidth: { true: \"w-full\", false: \"\" },\n },\n compoundVariants: [\n // solid\n { variant: \"solid\", intent: \"primary\", className: \"bg-primary text-primary-fg hover:bg-primary-hover active:bg-primary-active\" },\n { variant: \"solid\", intent: \"neutral\", className: \"bg-surface-sunken text-fg hover:bg-line\" },\n { variant: \"solid\", intent: \"success\", className: \"bg-success text-success-fg hover:opacity-90\" },\n { variant: \"solid\", intent: \"warning\", className: \"bg-warning text-warning-fg hover:opacity-90\" },\n { variant: \"solid\", intent: \"danger\", className: \"bg-danger text-danger-fg hover:opacity-90\" },\n // outline\n { variant: \"outline\", intent: \"primary\", className: \"border-line-strong text-primary-subtle-fg hover:bg-primary-subtle\" },\n { variant: \"outline\", intent: \"neutral\", className: \"border-line-strong text-fg hover:bg-surface-sunken\" },\n { variant: \"outline\", intent: \"success\", className: \"border-line-strong text-success-subtle-fg hover:bg-success-subtle\" },\n { variant: \"outline\", intent: \"warning\", className: \"border-line-strong text-warning-subtle-fg hover:bg-warning-subtle\" },\n { variant: \"outline\", intent: \"danger\", className: \"border-line-strong text-danger-subtle-fg hover:bg-danger-subtle\" },\n // ghost\n { variant: \"ghost\", intent: \"primary\", className: \"text-primary-subtle-fg hover:bg-primary-subtle\" },\n { variant: \"ghost\", intent: \"neutral\", className: \"text-fg-muted hover:bg-surface-sunken hover:text-fg\" },\n { variant: \"ghost\", intent: \"success\", className: \"text-success-subtle-fg hover:bg-success-subtle\" },\n { variant: \"ghost\", intent: \"warning\", className: \"text-warning-subtle-fg hover:bg-warning-subtle\" },\n { variant: \"ghost\", intent: \"danger\", className: \"text-danger-subtle-fg hover:bg-danger-subtle\" },\n // subtle (tinted fill)\n { variant: \"subtle\", intent: \"primary\", className: \"bg-primary-subtle text-primary-subtle-fg hover:bg-primary-subtle/80\" },\n { variant: \"subtle\", intent: \"neutral\", className: \"bg-surface-sunken text-fg hover:bg-line\" },\n { variant: \"subtle\", intent: \"success\", className: \"bg-success-subtle text-success-subtle-fg hover:bg-success-subtle/80\" },\n { variant: \"subtle\", intent: \"warning\", className: \"bg-warning-subtle text-warning-subtle-fg hover:bg-warning-subtle/80\" },\n { variant: \"subtle\", intent: \"danger\", className: \"bg-danger-subtle text-danger-subtle-fg hover:bg-danger-subtle/80\" },\n ],\n defaultVariants: { variant: \"solid\", intent: \"primary\", size: \"md\", fullWidth: false },\n});\n\n/**\n * The framework button. Variant (fill treatment) × intent (semantic color) ×\n * size (density-aware height). `loading` swaps the start icon for a spinner,\n * sets aria-busy, and blocks activation while keeping the label visible —\n * layout never jumps.\n *\n * @example\n * <Button intent=\"danger\" variant=\"outline\" onClick={onDelete}>Delete</Button>\n * <Button loading={saving} onClick={onSave}>Save changes</Button>\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant,\n intent,\n size,\n loading = false,\n startIcon,\n endIcon,\n fullWidth,\n disabled = false,\n type = \"button\",\n className,\n children,\n onClick,\n ...rest\n },\n ref,\n) {\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n onClick={loading ? undefined : onClick}\n className={button({ variant, intent, size, fullWidth, className })}\n {...rest}\n >\n {loading ? <Spinner size=\"sm\" label={null} /> : startIcon}\n {children}\n {!loading && endIcon}\n </button>\n );\n});\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { Button } from \"../Button\";\nimport type { ButtonProps } from \"../Button\";\n\nexport interface IconButtonProps extends Omit<ButtonProps, \"startIcon\" | \"endIcon\" | \"children\" | \"fullWidth\"> {\n /** The icon to render. */\n icon: ReactNode;\n /** REQUIRED accessible name — icon-only controls are invisible to AT without it. */\n \"aria-label\": string;\n}\n\nconst SQUARE_BY_SIZE = {\n sm: \"w-(--ml-control-h-sm) px-0\",\n md: \"w-(--ml-control-h-md) px-0\",\n lg: \"w-(--ml-control-h-lg) px-0\",\n} as const;\n\n/**\n * Square icon-only button. Reuses every Button variant/intent/size; the\n * accessible name is enforced at the type level.\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { icon, size = \"md\", className, ...rest },\n ref,\n) {\n return (\n <Button ref={ref} size={size} className={cn(SQUARE_BY_SIZE[size], className)} {...rest}>\n {icon}\n </Button>\n );\n});\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface ButtonGroupProps extends ComponentPropsWithoutRef<\"div\"> {\n /** Accessible name for the group. */\n \"aria-label\": string;\n}\n\n/**\n * Visually joins adjacent buttons into one segmented control: inner corners\n * squared, borders collapsed. Works with any Button variant.\n */\nexport function ButtonGroup({ className, children, ...rest }: ButtonGroupProps) {\n return (\n <div\n role=\"group\"\n className={cn(\n \"inline-flex items-stretch\",\n \"[&>*]:rounded-none [&>*:first-child]:rounded-l-md [&>*:last-child]:rounded-r-md\",\n \"[&>*:not(:first-child)]:-ml-px\",\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface SkeletonProps extends ComponentPropsWithoutRef<\"div\"> {\n /** Shape preset. `text` renders at 1em so it matches surrounding line-height. */\n variant?: \"rect\" | \"text\" | \"circle\";\n}\n\n/**\n * Loading placeholder. aria-hidden by design: pair the REGION with aria-busy\n * on the container so screen readers hear one busy state, not N skeletons.\n */\nexport function Skeleton({ variant = \"rect\", className, ...rest }: SkeletonProps) {\n return (\n <div\n aria-hidden\n className={cn(\n \"animate-pulse bg-surface-sunken motion-reduce:animate-none\",\n variant === \"circle\" ? \"rounded-full\" : \"rounded-md\",\n variant === \"text\" && \"h-[1em] w-full\",\n className,\n )}\n {...rest}\n />\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\n\nexport type AlertIntent = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nconst alert = defineVariants({\n base: \"rounded-md border px-4 py-3\",\n variants: {\n intent: {\n info: \"border-info-subtle bg-info-subtle text-info-subtle-fg\",\n success: \"border-success-subtle bg-success-subtle text-success-subtle-fg\",\n warning: \"border-warning-subtle bg-warning-subtle text-warning-subtle-fg\",\n danger: \"border-danger-subtle bg-danger-subtle text-danger-subtle-fg\",\n },\n },\n defaultVariants: { intent: \"info\" },\n});\n\nexport interface AlertProps extends Omit<ComponentPropsWithoutRef<\"div\">, \"title\"> {\n intent?: AlertIntent;\n /** Bold first line. */\n title?: ReactNode;\n /** Leading icon slot. */\n icon?: ReactNode;\n /** Trailing actions slot (buttons, dismiss). */\n actions?: ReactNode;\n}\n\n/**\n * Inline callout for statuses and outcomes. Danger/warning announce\n * assertively (role=alert); info/success use role=status.\n */\nexport function Alert({ intent = \"info\", title, icon, actions, className, children, ...rest }: AlertProps) {\n const assertive = intent === \"danger\" || intent === \"warning\";\n return (\n <div role={assertive ? \"alert\" : \"status\"} className={alert({ intent, className })} {...rest}>\n <div className=\"flex items-start gap-3\">\n {icon && <span className=\"mt-0.5 shrink-0\">{icon}</span>}\n <div className=\"min-w-0 flex-1 text-sm\">\n {title !== undefined && <p className=\"m-0 font-semibold\">{title}</p>}\n {children !== undefined && <div className={title !== undefined ? \"mt-1\" : \"\"}>{children}</div>}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n </div>\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface ProgressProps extends Omit<ComponentPropsWithoutRef<\"div\">, \"role\"> {\n /** Current value; omit for indeterminate. */\n value?: number;\n max?: number;\n /** Accessible name for the bar. */\n \"aria-label\": string;\n size?: \"sm\" | \"md\";\n}\n\n/** Determinate/indeterminate progress bar with correct progressbar semantics. */\nexport function Progress({ value, max = 100, size = \"md\", className, ...rest }: ProgressProps) {\n const indeterminate = value === undefined;\n const fraction = indeterminate ? 0 : Math.min(Math.max(value / max, 0), 1);\n return (\n <div\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : Math.round(fraction * max)}\n className={cn(\n \"w-full overflow-hidden rounded-pill bg-surface-sunken\",\n size === \"sm\" ? \"h-1.5\" : \"h-2.5\",\n className,\n )}\n {...rest}\n >\n <div\n className={cn(\n \"h-full rounded-pill bg-primary transition-[width] duration-(--ml-duration-normal)\",\n indeterminate && \"w-1/3 animate-pulse motion-reduce:animate-none\",\n )}\n style={indeterminate ? undefined : { width: `${String(fraction * 100)}%` }}\n />\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\nimport type { Intent } from \"../../../foundation/types/common\";\n\nconst statusBadge = defineVariants({\n base: \"inline-flex items-center gap-1.5 whitespace-nowrap rounded-pill border px-2.5 py-0.5 text-xs font-semibold\",\n variants: {\n intent: {\n neutral: \"border-line bg-surface-sunken text-fg-muted\",\n primary: \"border-primary-subtle bg-primary-subtle text-primary-subtle-fg\",\n success: \"border-success-subtle bg-success-subtle text-success-subtle-fg\",\n warning: \"border-warning-subtle bg-warning-subtle text-warning-subtle-fg\",\n danger: \"border-danger-subtle bg-danger-subtle text-danger-subtle-fg\",\n info: \"border-info-subtle bg-info-subtle text-info-subtle-fg\",\n },\n },\n defaultVariants: { intent: \"neutral\" },\n});\n\nexport interface StatusIndicatorProps extends ComponentPropsWithoutRef<\"span\"> {\n intent?: Intent;\n /** Hide the leading color dot. */\n withDot?: boolean;\n}\n\n/**\n * Semantic status pill (tinted fill + matching text + color dot) — the\n * standard rendering for workflow states across clinical tables and headers.\n */\nexport function StatusIndicator({\n intent = \"neutral\",\n withDot = true,\n className,\n children,\n ...rest\n}: StatusIndicatorProps) {\n return (\n <span className={statusBadge({ intent, className })} {...rest}>\n {withDot && <span aria-hidden className=\"size-1.5 rounded-full bg-current\" />}\n {children}\n </span>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface EmptyStateProps extends Omit<ComponentPropsWithoutRef<\"div\">, \"title\"> {\n /** One-line headline (\"No sessions yet\"). */\n title: ReactNode;\n /** Supporting copy explaining why / what to do next. */\n description?: ReactNode;\n /** Illustration / icon slot. */\n icon?: ReactNode;\n /** Call-to-action slot (typically a Button). */\n actions?: ReactNode;\n}\n\n/** Centered empty-state block for lists, tables, and panels with no data. */\nexport function EmptyState({ title, description, icon, actions, className, ...rest }: EmptyStateProps) {\n return (\n <div className={cn(\"flex flex-col items-center gap-3 px-6 py-12 text-center\", className)} {...rest}>\n {icon && <div className=\"text-fg-subtle [&_svg]:size-10\">{icon}</div>}\n <p className=\"m-0 text-base font-semibold text-fg\">{title}</p>\n {description !== undefined && (\n <p className=\"m-0 max-w-md text-sm text-fg-muted\">{description}</p>\n )}\n {actions && <div className=\"mt-2 flex items-center gap-2\">{actions}</div>}\n </div>\n );\n}\n\n/** ErrorState — EmptyState preset for failed loads. role=alert announces it. */\nexport function ErrorState(props: EmptyStateProps) {\n return <EmptyState role=\"alert\" {...props} />;\n}\n\n/** SuccessState — EmptyState preset for completed flows. */\nexport function SuccessState(props: EmptyStateProps) {\n return <EmptyState role=\"status\" {...props} />;\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { Spinner } from \"../Spinner\";\n\nexport interface LoadingOverlayProps extends ComponentPropsWithoutRef<\"div\"> {\n /** Overlay renders (and blocks interaction) only while true. */\n visible: boolean;\n /** Accessible + visible loading text. */\n label?: string;\n}\n\n/**\n * Absolute overlay that dims and blocks its nearest positioned ancestor while\n * `visible` — wrap the region in `relative`. Content stays mounted (no layout\n * loss), which is the right pattern for refresh-in-place.\n */\nexport function LoadingOverlay({ visible, label = \"Loading\", className, ...rest }: LoadingOverlayProps) {\n if (!visible) return null;\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n className={cn(\n \"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2\",\n \"bg-surface/70 backdrop-blur-[1px]\",\n className,\n )}\n {...rest}\n >\n <Spinner size=\"lg\" label={null} />\n <span className=\"text-sm font-medium text-fg-muted\">{label}</span>\n </div>\n );\n}\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogPortal = DialogPrimitive.Portal;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport const DialogOverlay = forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-(--ml-z-modal) bg-overlay backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nexport const DialogContent = forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-(--ml-z-modal) grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-line bg-surface p-6 shadow-modal duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-ring disabled:pointer-events-none data-[state=open]:bg-surface-sunken data-[state=open]:text-fg-muted\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nexport const DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nexport const DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nexport const DialogTitle = forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Title>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold leading-none tracking-tight text-fg-strong\", className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nexport const DialogDescription = forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Description>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-fg-muted\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"../../../foundation/cn\";\nimport { defineVariants, type VariantProps } from \"../../../foundation/variants\";\n\n/**\n * Drawer — a modal panel that slides in from an edge of the viewport.\n * Built on the same Radix Dialog behavior as `Dialog` (focus trap, Escape,\n * overlay dismiss, aria-modal); only the presentation differs. Use it for\n * mobile navigation, filter panels, and quick-look records.\n */\nexport const Drawer = DialogPrimitive.Root;\nexport const DrawerTrigger = DialogPrimitive.Trigger;\nexport const DrawerPortal = DialogPrimitive.Portal;\nexport const DrawerClose = DialogPrimitive.Close;\n\nexport const DrawerOverlay = forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-(--ml-z-drawer) bg-overlay backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDrawerOverlay.displayName = \"DrawerOverlay\";\n\nconst drawerContent = defineVariants({\n base: \"fixed z-(--ml-z-drawer) flex flex-col gap-4 overflow-y-auto bg-surface p-6 shadow-modal transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-200 data-[state=open]:duration-300\",\n variants: {\n side: {\n left: \"inset-y-0 left-0 h-full w-3/4 max-w-sm border-r border-line data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 max-w-sm border-l border-line data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right\",\n top: \"inset-x-0 top-0 border-b border-line data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t border-line data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n },\n },\n defaultVariants: { side: \"left\" },\n});\n\nexport interface DrawerContentProps\n extends ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof drawerContent> {\n /** Hide the built-in close button (e.g. when the content provides its own). */\n hideCloseButton?: boolean;\n}\n\nexport const DrawerContent = forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n DrawerContentProps\n>(({ className, children, side, hideCloseButton = false, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={drawerContent({ side, className })}\n {...props}\n >\n {children}\n {!hideCloseButton && (\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-ring disabled:pointer-events-none\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DrawerPortal>\n));\nDrawerContent.displayName = \"DrawerContent\";\n\nexport const DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"flex flex-col space-y-1.5\", className)} {...props} />\n);\nDrawerHeader.displayName = \"DrawerHeader\";\n\nexport const DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"mt-auto flex flex-col gap-2\", className)} {...props} />\n);\nDrawerFooter.displayName = \"DrawerFooter\";\n\nexport const DrawerTitle = forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Title>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold leading-none tracking-tight text-fg\", className)}\n {...props}\n />\n));\nDrawerTitle.displayName = \"DrawerTitle\";\n\nexport const DrawerDescription = forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Description>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-fg-muted\", className)}\n {...props}\n />\n));\nDrawerDescription.displayName = \"DrawerDescription\";\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport const AlertDialog = AlertDialogPrimitive.Root;\nexport const AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nexport const AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nexport const AlertDialogOverlay = forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-(--ml-z-modal) bg-overlay backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nexport const AlertDialogContent = forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Content>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-(--ml-z-modal) grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-line bg-surface p-6 shadow-modal duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nexport const AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)}\n {...props}\n />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nexport const AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nexport const AlertDialogTitle = forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Title>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-fg-strong\", className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nexport const AlertDialogDescription = forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Description>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-fg-muted\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nexport const AlertDialogAction = forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Action>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action ref={ref} className={className} {...props} />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nexport const AlertDialogCancel = forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Cancel>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel ref={ref} className={className} {...props} />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport const Popover = PopoverPrimitive.Root;\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport const PopoverContent = forwardRef<\n React.ComponentRef<typeof PopoverPrimitive.Content>,\n ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-(--ml-z-popover) w-72 rounded-md border border-line bg-surface p-4 text-fg shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\nexport const Tooltip = TooltipPrimitive.Root;\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport const TooltipContent = forwardRef<\n React.ComponentRef<typeof TooltipPrimitive.Content>,\n ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-(--ml-z-tooltip) overflow-hidden rounded-md bg-fg px-3 py-1.5 text-xs text-fg-inverted shadow-sm animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cn } from \"../../../foundation/cn\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-(--ml-z-toast) flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst Toast = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> & {\n variant?: \"default\" | \"success\" | \"danger\" | \"warning\";\n }\n>(({ className, variant = \"default\", ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n \"border-line bg-surface text-fg\": variant === \"default\",\n \"border-success-subtle bg-success-subtle text-success-subtle-fg\": variant === \"success\",\n \"border-danger-subtle bg-danger-subtle text-danger-subtle-fg\": variant === \"danger\",\n \"border-warning-subtle bg-warning-subtle text-warning-subtle-fg\": variant === \"warning\",\n },\n className\n )}\n {...props}\n />\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-surface-sunken focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.border-danger-subtle]:border-danger/30 group-[.border-danger-subtle]:hover:border-danger/30 group-[.border-danger-subtle]:hover:bg-danger group-[.border-danger-subtle]:hover:text-danger-fg group-[.border-danger-subtle]:focus:ring-danger\",\n className\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md p-1 text-fg/50 opacity-0 transition-opacity hover:text-fg focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.border-danger-subtle]:text-danger-subtle-fg group-[.border-danger-subtle]:hover:text-danger-subtle-fg\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\nexport {\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n};\n","\"use client\";\n\nimport { createContext, useContext, type AriaAttributes } from \"react\";\n\nexport interface FieldContextValue {\n inputId: string;\n descriptionId: string | undefined;\n errorId: string | undefined;\n invalid: boolean;\n required: boolean;\n disabled: boolean;\n}\n\nconst FieldContext = createContext<FieldContextValue | null>(null);\n\nexport const FieldProvider = FieldContext.Provider;\n\n/** Field wiring for the nearest <Field>; null when used standalone. */\nexport function useFieldContext(): FieldContextValue | null {\n return useContext(FieldContext);\n}\n\n/**\n * Merges Field-provided a11y wiring with an input's own props (own props win).\n * Inputs call this so they work both inside a <Field> and standalone.\n */\nexport function useFieldInputProps(own: {\n id?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: AriaAttributes[\"aria-invalid\"];\n disabled?: boolean;\n required?: boolean;\n}): {\n id: string | undefined;\n \"aria-describedby\": string | undefined;\n \"aria-invalid\": true | undefined;\n disabled: boolean | undefined;\n required: boolean | undefined;\n} {\n const field = useFieldContext();\n const describedBy =\n own[\"aria-describedby\"] ??\n ([field?.errorId, field?.descriptionId].filter(Boolean).join(\" \") || undefined);\n const invalid = own[\"aria-invalid\"] ?? (field?.invalid ? true : undefined);\n return {\n id: own.id ?? field?.inputId,\n \"aria-describedby\": describedBy,\n // Any truthy aria-invalid form (true/\"true\"/\"grammar\"/\"spelling\") marks invalid.\n \"aria-invalid\": invalid !== undefined && invalid !== false && invalid !== \"false\" ? true : undefined,\n disabled: own.disabled ?? (field?.disabled ? true : undefined),\n required: own.required ?? (field?.required ? true : undefined),\n };\n}\n","\"use client\";\n\nimport { useId, type ComponentPropsWithoutRef, type ReactNode } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { Label } from \"../../typography/Label\";\nimport { FieldProvider } from \"./Field.context\";\n\nexport interface FieldProps extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\"> {\n label: ReactNode;\n /** Hint below the control. Hidden while an error shows. */\n description?: ReactNode;\n /** Validation message; presence marks the control invalid. */\n error?: ReactNode;\n required?: boolean;\n disabled?: boolean;\n /** The control. It receives id/aria wiring via Field context. */\n children: ReactNode;\n}\n\n/**\n * Form-field wrapper: renders label → control → description/error and wires\n * htmlFor / aria-describedby / aria-invalid to the child input through\n * context — one accessible pattern for every input in the framework.\n * Submission and validation logic stay in the application (RHF/Zod adapters\n * compose on top; the framework never submits).\n */\nexport function Field({\n label,\n description,\n error,\n required = false,\n disabled = false,\n className,\n children,\n ...rest\n}: FieldProps) {\n const baseId = useId();\n const inputId = `${baseId}-input`;\n const descriptionId = description !== undefined ? `${baseId}-description` : undefined;\n const errorId = error !== undefined && error !== null ? `${baseId}-error` : undefined;\n const invalid = errorId !== undefined;\n\n return (\n <div className={cn(\"flex flex-col gap-1.5\", className)} {...rest}>\n <Label htmlFor={inputId} required={required} className={disabled ? \"text-fg-disabled\" : undefined}>\n {label}\n </Label>\n <FieldProvider value={{ inputId, descriptionId, errorId, invalid, required, disabled }}>\n {children}\n </FieldProvider>\n {invalid ? (\n <p id={errorId} role=\"alert\" className=\"m-0 text-sm text-danger-subtle-fg\">\n {error}\n </p>\n ) : (\n description !== undefined && (\n <p id={descriptionId} className=\"m-0 text-sm text-fg-subtle\">\n {description}\n </p>\n )\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { useFieldInputProps } from \"../Field/Field.context\";\n\nexport interface TextInputProps extends ComponentPropsWithoutRef<\"input\"> {\n /** Leading adornment (icon, prefix text). */\n startAdornment?: ReactNode;\n /** Trailing adornment (icon, suffix, action). */\n endAdornment?: ReactNode;\n}\n\n/** Shared control shell used by every text-like input for identical chrome. */\nexport const inputClassName = (invalid: boolean, className?: string): string =>\n cn(\n \"focus-ring h-(--ml-control-h-md) w-full rounded-md border bg-surface px-(--ml-control-px) text-sm text-fg\",\n \"placeholder:text-fg-subtle\",\n \"disabled:cursor-not-allowed disabled:bg-surface-sunken disabled:text-fg-disabled\",\n invalid ? \"border-danger\" : \"border-line-strong\",\n className,\n );\n\n/**\n * Single-line text input. Inside a <Field> it inherits id/aria wiring\n * automatically; standalone it behaves like a styled native input.\n */\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(function TextInput(\n { startAdornment, endAdornment, className, ...rest },\n ref,\n) {\n const field = useFieldInputProps(rest);\n const invalid = field[\"aria-invalid\"] === true;\n\n if (startAdornment === undefined && endAdornment === undefined) {\n return <input ref={ref} type=\"text\" {...rest} {...field} className={inputClassName(invalid, className)} />;\n }\n return (\n <div className=\"relative flex items-center\">\n {startAdornment !== undefined && (\n <span className=\"pointer-events-none absolute left-3 text-fg-subtle [&_svg]:size-(--size-icon-sm)\">\n {startAdornment}\n </span>\n )}\n <input\n ref={ref}\n type=\"text\"\n {...rest}\n {...field}\n className={cn(\n inputClassName(invalid, className),\n startAdornment !== undefined && \"pl-9\",\n endAdornment !== undefined && \"pr-9\",\n )}\n />\n {endAdornment !== undefined && (\n <span className=\"absolute right-3 text-fg-subtle [&_svg]:size-(--size-icon-sm)\">{endAdornment}</span>\n )}\n </div>\n );\n});\n","\"use client\";\n\nimport { forwardRef, useState } from \"react\";\nimport { TextInput, type TextInputProps } from \"../TextInput\";\n\nexport type PasswordInputProps = Omit<TextInputProps, \"type\" | \"endAdornment\">;\n\n/**\n * Password input with an accessible show/hide toggle. The toggle is\n * aria-pressed and never submits the surrounding form.\n */\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(function PasswordInput(\n props,\n ref,\n) {\n const [visible, setVisible] = useState(false);\n return (\n <TextInput\n ref={ref}\n {...props}\n type={visible ? \"text\" : \"password\"}\n endAdornment={\n <button\n type=\"button\"\n aria-label={visible ? \"Hide password\" : \"Show password\"}\n aria-pressed={visible}\n onClick={() => {\n setVisible((v) => !v);\n }}\n className=\"focus-ring pointer-events-auto -m-1 rounded-xs p-1 text-fg-subtle hover:text-fg\"\n >\n <EyeIcon crossed={visible} />\n </button>\n }\n />\n );\n});\n\nfunction EyeIcon({ crossed }: { crossed: boolean }) {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden>\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 {crossed && <line x1=\"3\" y1=\"21\" x2=\"21\" y2=\"3\" />}\n </svg>\n );\n}\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { TextInput, type TextInputProps } from \"../TextInput\";\n\nexport type SearchInputProps = Omit<TextInputProps, \"type\" | \"startAdornment\">;\n\n/** Search input: type=search semantics + a leading search icon. */\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(function SearchInput(\n props,\n ref,\n) {\n return <TextInput ref={ref} {...props} type=\"search\" startAdornment={<SearchIcon />} />;\n});\n\nfunction SearchIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden>\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n );\n}\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { useFieldInputProps } from \"../Field/Field.context\";\n\nexport type TextareaProps = ComponentPropsWithoutRef<\"textarea\">;\n\n/** Multi-line input with the shared control chrome; vertical resize only. */\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { className, rows = 3, ...rest },\n ref,\n) {\n const field = useFieldInputProps(rest);\n const invalid = field[\"aria-invalid\"] === true;\n return (\n <textarea\n ref={ref}\n rows={rows}\n {...rest}\n {...field}\n className={cn(\n \"focus-ring w-full resize-y rounded-md border bg-surface px-(--ml-control-px) py-2 text-sm text-fg\",\n \"placeholder:text-fg-subtle\",\n \"disabled:cursor-not-allowed disabled:bg-surface-sunken disabled:text-fg-disabled\",\n invalid ? \"border-danger\" : \"border-line-strong\",\n className,\n )}\n />\n );\n});\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface CheckboxProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"type\"> {\n /** Label rendered beside the box (clicking it toggles). */\n label?: ReactNode;\n /** Secondary line under the label. */\n description?: ReactNode;\n}\n\n/**\n * Native-input checkbox (real <input type=\"checkbox\"> — free keyboard and\n * form semantics) with token-driven visuals via accent-color.\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { label, description, className, disabled, ...rest },\n ref,\n) {\n const box = (\n <input\n ref={ref}\n type=\"checkbox\"\n disabled={disabled}\n className={cn(\n \"focus-ring size-4 shrink-0 cursor-pointer rounded-xs border-line-strong accent-(--ml-primary)\",\n \"disabled:cursor-not-allowed\",\n label === undefined && className,\n )}\n {...rest}\n />\n );\n if (label === undefined) return box;\n return (\n <label\n className={cn(\n \"flex cursor-pointer items-start gap-2.5\",\n disabled && \"cursor-not-allowed opacity-60\",\n className,\n )}\n >\n <span className=\"flex h-5 items-center\">{box}</span>\n <span className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"text-sm font-medium text-fg\">{label}</span>\n {description !== undefined && <span className=\"text-sm text-fg-muted\">{description}</span>}\n </span>\n </label>\n );\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useControllableState } from \"@cocliny/util-library/react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface CodeInputProps {\n /** Number of digits. @default 6 */\n length?: number;\n /** Controlled value (digits typed so far). */\n value?: string;\n /** Initial value in uncontrolled mode. */\n defaultValue?: string;\n /** Fired on every change with the digits typed so far. */\n onChange?: (value: string) => void;\n /** Fired once when all cells are filled. */\n onComplete?: (value: string) => void;\n disabled?: boolean;\n /** Marks the group invalid (e.g. wrong code). */\n error?: boolean;\n /** Focus the first cell on mount. */\n autoFocus?: boolean;\n /** Accessible name of the group. @default \"Verification code\" */\n \"aria-label\"?: string;\n /** Form field name; the joined value submits via a hidden input. */\n name?: string;\n className?: string;\n}\n\n/**\n * Segmented one-time-code entry (MFA, email verification): one cell per\n * digit with auto-advance, Backspace stepping back, arrow-key movement, and\n * full-code paste. Submits as a single hidden input when `name` is set.\n *\n * @example\n * <CodeInput length={6} autoFocus onComplete={verify} error={failed} />\n */\nexport const CodeInput = React.forwardRef<HTMLDivElement, CodeInputProps>(\n (\n {\n length = 6,\n value: valueProp,\n defaultValue = \"\",\n onChange,\n onComplete,\n disabled = false,\n error = false,\n autoFocus = false,\n \"aria-label\": ariaLabel = \"Verification code\",\n name,\n className,\n },\n ref,\n ) => {\n const [value, setValue] = useControllableState({\n value: valueProp,\n defaultValue,\n onChange,\n });\n const inputsRef = React.useRef<Array<HTMLInputElement | null>>([]);\n\n const focusCell = (index: number) => {\n inputsRef.current[Math.max(0, Math.min(index, length - 1))]?.focus();\n };\n\n const commit = (next: string) => {\n const clean = next.replace(/\\D/g, \"\").slice(0, length);\n setValue(clean);\n if (clean.length === length) onComplete?.(clean);\n };\n\n const handleChange = (index: number, raw: string) => {\n const digit = raw.replace(/\\D/g, \"\").slice(-1);\n if (!digit) return;\n const chars = value.padEnd(index, \" \").split(\"\");\n chars[index] = digit;\n commit(chars.join(\"\").trimEnd());\n focusCell(index + 1);\n };\n\n const handleKeyDown = (index: number, event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Backspace\") {\n event.preventDefault();\n if (value[index]) {\n commit(value.slice(0, index) + value.slice(index + 1));\n } else {\n commit(value.slice(0, Math.max(0, index - 1)));\n focusCell(index - 1);\n }\n } else if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n focusCell(index - 1);\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n focusCell(index + 1);\n }\n };\n\n const handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n event.preventDefault();\n const pasted = event.clipboardData.getData(\"text\");\n commit(pasted);\n focusCell(Math.min(pasted.replace(/\\D/g, \"\").length, length - 1));\n };\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={ariaLabel}\n className={cn(\"flex items-center justify-center gap-2\", className)}\n >\n {Array.from({ length }, (_, index) => (\n <input\n key={index}\n ref={(el) => {\n inputsRef.current[index] = el;\n }}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete={index === 0 ? \"one-time-code\" : \"off\"}\n autoFocus={autoFocus && index === 0}\n aria-label={`Digit ${String(index + 1)} of ${String(length)}`}\n aria-invalid={error || undefined}\n disabled={disabled}\n maxLength={1}\n value={value[index] ?? \"\"}\n onChange={(e) => {\n handleChange(index, e.target.value);\n }}\n onKeyDown={(e) => {\n handleKeyDown(index, e);\n }}\n onPaste={handlePaste}\n className={cn(\n \"h-12 w-10 rounded-md border bg-surface text-center text-lg font-semibold text-fg transition-colors duration-(--ml-duration-fast) focus-ring disabled:cursor-not-allowed disabled:bg-surface-sunken disabled:text-fg-disabled\",\n error ? \"border-danger\" : \"border-line hover:border-line-strong\",\n )}\n />\n ))}\n {name && <input type=\"hidden\" name={name} value={value} />}\n </div>\n );\n },\n);\n\nCodeInput.displayName = \"CodeInput\";\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface SwitchProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"type\" | \"role\"> {\n label?: ReactNode;\n}\n\n/**\n * Toggle switch built on a visually-hidden native checkbox with role=switch —\n * native keyboard/forms behavior, switch semantics for AT, token-driven track.\n */\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { label, className, disabled, ...rest },\n ref,\n) {\n const control = (\n <span className=\"relative inline-flex\">\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n disabled={disabled}\n className=\"peer absolute inset-0 cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...rest}\n />\n <span\n aria-hidden\n className={cn(\n \"h-5 w-9 rounded-pill bg-line-strong transition-colors duration-(--ml-duration-fast)\",\n \"peer-checked:bg-primary\",\n \"peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-(--ml-focus-ring)\",\n \"after:absolute after:left-0.5 after:top-0.5 after:size-4 after:rounded-full after:bg-white after:shadow-raised\",\n \"after:transition-transform after:duration-(--ml-duration-fast) peer-checked:after:translate-x-4\",\n )}\n />\n </span>\n );\n if (label === undefined) return control;\n return (\n <label\n className={cn(\n \"inline-flex cursor-pointer items-center gap-2.5\",\n disabled && \"cursor-not-allowed opacity-60\",\n className,\n )}\n >\n {control}\n <span className=\"text-sm font-medium text-fg\">{label}</span>\n </label>\n );\n});\n","\"use client\";\n\nimport { useId, type ReactNode } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { useControllableState } from \"@cocliny/util-library/react\";\n\nexport interface RadioOption<TValue extends string> {\n value: TValue;\n label: ReactNode;\n description?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps<TValue extends string> {\n /** Accessible name for the group. */\n \"aria-label\"?: string;\n options: ReadonlyArray<RadioOption<TValue>>;\n /** Controlled value. */\n value?: TValue;\n /** Uncontrolled initial value. */\n defaultValue?: TValue;\n onChange?: (value: TValue) => void;\n /** Shared native name; generated when omitted. */\n name?: string;\n orientation?: \"vertical\" | \"horizontal\";\n disabled?: boolean;\n className?: string;\n}\n\n/**\n * Radio group over native inputs — native keyboard behavior (arrows within\n * the group) and form semantics for free. Controlled or uncontrolled.\n */\nexport function RadioGroup<TValue extends string>({\n options,\n value,\n defaultValue,\n onChange,\n name,\n orientation = \"vertical\",\n disabled = false,\n className,\n ...rest\n}: RadioGroupProps<TValue>) {\n const generatedName = useId();\n const groupName = name ?? generatedName;\n const [current, setCurrent] = useControllableState<TValue | undefined>({\n value,\n defaultValue,\n onChange: onChange as ((v: TValue | undefined) => void) | undefined,\n });\n\n return (\n <div\n role=\"radiogroup\"\n className={cn(\"flex gap-3\", orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\", className)}\n {...rest}\n >\n {options.map((option) => {\n const isDisabled = disabled || option.disabled === true;\n return (\n <label\n key={option.value}\n className={cn(\n \"flex cursor-pointer items-start gap-2.5\",\n isDisabled && \"cursor-not-allowed opacity-60\",\n )}\n >\n <span className=\"flex h-5 items-center\">\n <input\n type=\"radio\"\n name={groupName}\n value={option.value}\n checked={current === option.value}\n disabled={isDisabled}\n onChange={() => {\n setCurrent(option.value);\n }}\n className=\"focus-ring size-4 cursor-pointer border-line-strong accent-(--ml-primary) disabled:cursor-not-allowed\"\n />\n </span>\n <span className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"text-sm font-medium text-fg\">{option.label}</span>\n {option.description !== undefined && (\n <span className=\"text-sm text-fg-muted\">{option.description}</span>\n )}\n </span>\n </label>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { useFieldInputProps } from \"../Field/Field.context\";\n\nexport interface SelectOption<TValue extends string = string> {\n value: TValue;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends ComponentPropsWithoutRef<\"select\"> {\n /** Options; alternatively pass <option> children. */\n options?: ReadonlyArray<SelectOption>;\n /** Placeholder row rendered as a disabled empty-value option. */\n placeholder?: string;\n}\n\n/**\n * Styled NATIVE select — the right default for enterprise forms (OS pickers,\n * mobile wheels, full a11y for free). A searchable custom Combobox arrives in\n * Phase 5 for long option lists.\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(\n { options, placeholder, className, children, ...rest },\n ref,\n) {\n const field = useFieldInputProps(rest);\n const invalid = field[\"aria-invalid\"] === true;\n return (\n <div className=\"relative\">\n <select\n ref={ref}\n {...rest}\n {...field}\n className={cn(\n \"focus-ring h-(--ml-control-h-md) w-full cursor-pointer appearance-none rounded-md border bg-surface pl-(--ml-control-px) pr-9 text-sm text-fg\",\n \"disabled:cursor-not-allowed disabled:bg-surface-sunken disabled:text-fg-disabled\",\n invalid ? \"border-danger\" : \"border-line-strong\",\n className,\n )}\n >\n {placeholder !== undefined && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options?.map((o) => (\n <option key={o.value} value={o.value} disabled={o.disabled}>\n {o.label}\n </option>\n ))}\n {children}\n </select>\n <svg\n aria-hidden\n className=\"pointer-events-none absolute right-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </div>\n );\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nexport function Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 flex items-center justify-center rounded-md hover:bg-surface-sunken\"\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell: \"text-fg-muted rounded-md w-9 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-surface-sunken/50 [&:has([aria-selected])]:bg-surface-sunken first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\n day: cn(\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100 flex items-center justify-center rounded-md hover:bg-surface-sunken hover:text-fg\"\n ),\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-fg hover:bg-primary hover:text-primary-fg focus:bg-primary focus:text-primary-fg\",\n day_today: \"bg-surface-sunken text-fg\",\n day_outside:\n \"day-outside text-fg-muted opacity-50 aria-selected:bg-surface-sunken/50 aria-selected:text-fg-muted aria-selected:opacity-30\",\n day_disabled: \"text-fg-muted opacity-50\",\n day_range_middle:\n \"aria-selected:bg-surface-sunken aria-selected:text-fg\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: () => (\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"h-4 w-4\">\n <path d=\"M8.84182 3.13514C9.04327 3.32401 9.05348 3.64042 8.86462 3.84188L5.43521 7.49991L8.86462 11.1579C9.05348 11.3594 9.04327 11.6758 8.84182 11.8647C8.64036 12.0535 8.32394 12.0433 8.13508 11.8419L4.38508 7.84188C4.20477 7.64955 4.20477 7.35027 4.38508 7.15794L8.13508 3.15794C8.32394 2.95648 8.64036 2.94628 8.84182 3.13514Z\" fill=\"currentColor\" fillRule=\"evenodd\" clipRule=\"evenodd\"></path>\n </svg>\n ),\n IconRight: () => (\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"h-4 w-4\">\n <path d=\"M6.1584 3.13508C5.95698 3.32401 5.9468 3.64042 6.13573 3.84184L9.56496 7.49991L6.13573 11.158C5.9468 11.3594 5.95698 11.6758 6.1584 11.8647C6.35983 12.0537 6.67625 12.0435 6.86518 11.8421L10.6152 7.84206C10.7955 7.64974 10.7955 7.35008 10.6152 7.15777L6.86518 3.15777C6.67625 2.95634 6.35983 2.94614 6.1584 3.13508Z\" fill=\"currentColor\" fillRule=\"evenodd\" clipRule=\"evenodd\"></path>\n </svg>\n ),\n }}\n {...props}\n />\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport { cn } from \"../../../foundation/cn\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../../feedback/Popover\";\nimport { Calendar } from \"../Calendar\";\n\nexport interface DatePickerProps {\n value?: Date;\n onChange?: (date?: Date) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function DatePicker({\n value,\n onChange,\n placeholder = \"Pick a date\",\n disabled,\n className,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n disabled={disabled}\n className={cn(\n \"flex h-9 w-full items-center justify-between rounded-md border border-line bg-surface px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-fg-muted focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\",\n !value && \"text-fg-muted\",\n className\n )}\n >\n {value ? format(value, \"PPP\") : <span>{placeholder}</span>}\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"h-4 w-4 opacity-50\">\n <path d=\"M4.125 1.5C4.125 1.29289 3.95711 1.125 3.75 1.125C3.54289 1.125 3.375 1.29289 3.375 1.5V2.25H1.5C0.671573 2.25 0 2.92157 0 3.75V13.5C0 14.3284 0.671573 15 1.5 15H13.5C14.3284 15 15 14.3284 15 13.5V3.75C15 2.92157 14.3284 2.25 13.5 2.25H11.625V1.5C11.625 1.29289 11.4571 1.125 11.25 1.125C11.0429 1.125 10.875 1.29289 10.875 1.5V2.25H4.125V1.5ZM1.5 3.375H3.375V4.125C3.375 4.33211 3.54289 4.5 3.75 4.5C3.95711 4.5 4.125 4.33211 4.125 4.125V3.375H10.875V4.125C10.875 4.33211 11.0429 4.5 11.25 4.5C11.4571 4.5 11.625 4.33211 11.625 4.125V3.375H13.5C13.7071 3.375 13.875 3.54289 13.875 3.75V5.25H1.125V3.75C1.125 3.54289 1.29289 3.375 1.5 3.375ZM1.125 6.375V13.5C1.125 13.7071 1.29289 13.875 1.5 13.875H13.5C13.7071 13.875 13.875 13.7071 13.875 13.5V6.375H1.125Z\" fill=\"currentColor\" fillRule=\"evenodd\" clipRule=\"evenodd\"></path>\n </svg>\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={(date) => {\n onChange?.(date);\n setOpen(false);\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport type * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n FormProvider,\n useFormContext,\n Controller,\n} from \"react-hook-form\";\nimport type {\n ControllerProps,\n FieldPath,\n FieldValues,\n} from \"react-hook-form\";\nimport { cn } from \"../../../foundation/cn\";\nimport { Label } from \"../../typography/Label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(null);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n);\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = \"FormItem\";\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\nconst FormLabel = ({\n className,\n required,\n ...props\n}: React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & {\n required?: boolean;\n}) => {\n const { formItemId } = useFormField();\n\n return (\n <Label\n htmlFor={formItemId}\n required={required}\n className={className}\n {...props}\n />\n );\n};\nFormLabel.displayName = \"FormLabel\";\n\nconst FormControl = React.forwardRef<\n React.ComponentRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error ? formDescriptionId : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n data-error={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = \"FormControl\";\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-[0.8rem] text-fg-muted\", className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = \"FormDescription\";\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-[0.8rem] font-medium text-danger\", className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","import * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { cn } from \"../../../foundation/cn\";\n\nconst ToggleGroup = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n));\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> & {\n badge?: React.ReactNode;\n }\n>(({ className, children, badge, ...props }, ref) => (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"focus-ring inline-flex h-8 items-center justify-center rounded-full px-4 text-sm font-medium transition-colors hover:bg-surface-sunken hover:text-fg disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-primary data-[state=on]:text-primary-fg text-fg-muted\",\n className\n )}\n {...props}\n >\n {children}\n {badge && (\n <span className=\"ml-1.5 inline-flex items-center justify-center rounded-full bg-fg-muted/20 px-1.5 py-0.5 text-[10px] leading-none group-data-[state=on]:bg-white/20\">\n {badge}\n </span>\n )}\n </ToggleGroupPrimitive.Item>\n));\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Dialog, DialogContent } from \"../../feedback/Dialog\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport const Command = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-surface text-fg\",\n className\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ntype CommandDialogProps = React.ComponentPropsWithoutRef<typeof Dialog>;\n\nexport const CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-fg-muted [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport const CommandInput = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b border-line px-3\" cmdk-input-wrapper=\"\">\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"mr-2 h-4 w-4 shrink-0 opacity-50\"\n >\n <path\n d=\"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-fg-muted disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n));\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nexport const CommandList = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nexport const CommandEmpty = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className={cn(\"py-6 text-center text-sm\", className)}\n {...props}\n />\n));\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nexport const CommandGroup = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-fg [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-fg-muted\",\n className\n )}\n {...props}\n />\n));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nexport const CommandSeparator = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-line\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nexport const CommandItem = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-surface-sunken aria-selected:text-fg data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n />\n));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nexport const CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-fg-muted\",\n className\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { Button } from \"../../buttons/Button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../../navigation/Command\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../../feedback/Popover\";\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport function Combobox({\n options,\n value,\n onChange,\n placeholder = \"Select option...\",\n emptyText = \"No results found.\",\n className,\n disabled = false,\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"w-full justify-between font-normal\", className)}\n disabled={disabled}\n >\n {value\n ? options.find((option) => option.value === value)?.label\n : <span className=\"text-fg-muted\">{placeholder}</span>}\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-2 h-4 w-4 shrink-0 opacity-50\"\n >\n <path\n d=\"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.05001 7.49999 3.05001C7.38064 3.05001 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75605 9.60753 8.75605 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75605 5.10753 8.75605 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.26618 11.9026 7.38064 11.95 7.49999 11.95C7.61933 11.95 7.73379 11.9026 7.81819 11.8182L10.0682 9.56819Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[--radix-popover-trigger-width] p-0\">\n <Command>\n <CommandInput placeholder=\"Search...\" />\n <CommandList>\n <CommandEmpty>{emptyText}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.label} // Command matches by the text value provided here or children by default\n onSelect={() => {\n onChange?.(option.value === value ? \"\" : option.value);\n setOpen(false);\n }}\n >\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\n \"mr-2 h-4 w-4\",\n value === option.value ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport type BadgeVariant = \n | \"default\" \n | \"secondary\" \n | \"success\" \n | \"warning\" \n | \"danger\" \n | \"info\" \n | \"outline\"\n | \"primary-subtle\"\n | \"success-subtle\"\n | \"warning-subtle\"\n | \"danger-subtle\"\n | \"info-subtle\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLDivElement> {\n variant?: BadgeVariant;\n /** Renders a small circular dot indicator before the badge text. */\n dot?: boolean;\n}\n\nconst variantStyles: Record<BadgeVariant, string> = {\n default: \"bg-primary text-primary-fg hover:bg-primary-hover border-transparent\",\n secondary: \"bg-surface-sunken text-fg hover:bg-surface-sunken/80 border-transparent\",\n success: \"bg-success text-success-fg hover:bg-success/80 border-transparent\",\n warning: \"bg-warning text-warning-fg hover:bg-warning/80 border-transparent\",\n danger: \"bg-danger text-danger-fg hover:bg-danger/80 border-transparent\",\n info: \"bg-info text-info-fg hover:bg-info/80 border-transparent\",\n outline: \"text-fg border-line hover:bg-surface-sunken\",\n \"primary-subtle\": \"bg-primary-subtle text-primary-subtle-fg hover:bg-primary-subtle/80 border-transparent\",\n \"success-subtle\": \"bg-success-subtle text-success-subtle-fg hover:bg-success-subtle/80 border-transparent\",\n \"warning-subtle\": \"bg-warning-subtle text-warning-subtle-fg hover:bg-warning-subtle/80 border-transparent\",\n \"danger-subtle\": \"bg-danger-subtle text-danger-subtle-fg hover:bg-danger-subtle/80 border-transparent\",\n \"info-subtle\": \"bg-info-subtle text-info-subtle-fg hover:bg-info-subtle/80 border-transparent\",\n};\n\nconst dotStyles: Record<BadgeVariant, string> = {\n default: \"bg-primary-fg\",\n secondary: \"bg-fg-muted\",\n success: \"bg-success-fg\",\n warning: \"bg-warning-fg\",\n danger: \"bg-danger-fg\",\n info: \"bg-info-fg\",\n outline: \"bg-fg-muted\",\n \"primary-subtle\": \"bg-primary\",\n \"success-subtle\": \"bg-success\",\n \"warning-subtle\": \"bg-warning\",\n \"danger-subtle\": \"bg-danger\",\n \"info-subtle\": \"bg-info\",\n};\n\nexport const Badge = forwardRef<HTMLDivElement, BadgeProps>(function Badge(\n { className, variant = \"default\", dot = false, children, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus-ring\",\n variantStyles[variant],\n className,\n )}\n {...props}\n >\n {dot && <span className={cn(\"h-1.5 w-1.5 rounded-full\", dotStyles[variant])} aria-hidden=\"true\" />}\n {children}\n </div>\n );\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { Badge } from \"../../data-display/Badge\";\nimport { useFieldInputProps } from \"../Field/Field.context\";\n\nexport interface MultiSelectOption {\n value: string;\n label: string;\n}\n\nexport interface MultiSelectProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n options: MultiSelectOption[];\n value: string[];\n onChange: (value: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n}\n\nexport const MultiSelect = React.forwardRef<HTMLDivElement, MultiSelectProps>(\n (\n { options, value, onChange, placeholder = \"Select...\", disabled, className, ...props },\n ref\n ) => {\n const field = useFieldInputProps({});\n const invalid = field[\"aria-invalid\"] === true;\n const [isOpen, setIsOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useImperativeHandle(ref, () => containerRef.current as HTMLDivElement);\n\n const handleSelect = (optionValue: string) => {\n if (disabled) return;\n if (value.includes(optionValue)) {\n onChange(value.filter((v) => v !== optionValue));\n } else {\n onChange([...value, optionValue]);\n }\n };\n\n const handleRemove = (e: React.MouseEvent, optionValue: string) => {\n e.stopPropagation();\n if (disabled) return;\n onChange(value.filter((v) => v !== optionValue));\n };\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n const selectedOptions = options.filter((o) => value.includes(o.value));\n\n return (\n <div\n ref={containerRef}\n className={cn(\"relative w-full\", className)}\n {...props}\n >\n <div\n className={cn(\n \"flex min-h-[--ml-control-h-md] w-full cursor-pointer flex-wrap items-center gap-1.5 rounded-md border bg-surface p-1.5 text-sm text-fg transition-colors\",\n disabled && \"cursor-not-allowed bg-surface-sunken text-fg-disabled\",\n invalid ? \"border-danger\" : \"border-line-strong\",\n isOpen && !invalid && \"border-primary ring-1 ring-primary/20\",\n )}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n {...field}\n >\n {selectedOptions.length === 0 && (\n <span className=\"px-2 text-fg-subtle\">{placeholder}</span>\n )}\n {selectedOptions.map((option) => (\n <Badge key={option.value} variant=\"secondary\" className=\"gap-1 px-1.5 py-0.5\">\n {option.label}\n <button\n type=\"button\"\n className=\"hover:text-danger rounded-full focus:outline-none\"\n onClick={(e) => handleRemove(e, option.value)}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/>\n </svg>\n </button>\n </Badge>\n ))}\n <div className=\"ml-auto px-2\">\n <svg\n className=\"size-4 text-fg-subtle\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </div>\n </div>\n\n {isOpen && (\n <div className=\"absolute z-50 mt-1 max-h-60 w-full overflow-auto rounded-md border border-line bg-surface p-1 shadow-lg\">\n {options.map((option) => {\n const isSelected = value.includes(option.value);\n return (\n <div\n key={option.value}\n className={cn(\n \"flex cursor-pointer items-center justify-between rounded-sm px-2 py-1.5 text-sm text-fg hover:bg-surface-sunken\",\n isSelected && \"bg-primary/10 text-primary font-medium\"\n )}\n onClick={() => handleSelect(option.value)}\n >\n <span>{option.label}</span>\n {isSelected && (\n <svg className=\"size-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\"/>\n </svg>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { useFieldInputProps } from \"../Field/Field.context\";\n\nexport interface FileUploadProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"onDrop\"> {\n onChange?: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n maxSize?: number; // in bytes\n}\n\nexport const FileUpload = React.forwardRef<HTMLInputElement, FileUploadProps>(\n (\n { onChange, accept, multiple = false, disabled = false, maxSize, className, ...props },\n ref\n ) => {\n const field = useFieldInputProps({});\n const invalid = field[\"aria-invalid\"] === true;\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = React.useState(false);\n const [selectedFiles, setSelectedFiles] = React.useState<File[]>([]);\n \n // Sync external ref if provided\n React.useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n\n const handleFiles = (newFiles: FileList | null) => {\n if (!newFiles || disabled) return;\n const validFiles = Array.from(newFiles).filter((file) => {\n if (maxSize && file.size > maxSize) return false;\n return true;\n });\n \n const updatedFiles = multiple ? [...selectedFiles, ...validFiles] : validFiles.slice(0, 1);\n setSelectedFiles(updatedFiles);\n onChange?.(updatedFiles);\n };\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) setIsDragging(true);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n handleFiles(e.dataTransfer.files);\n };\n\n const handleRemove = (index: number) => {\n const updatedFiles = [...selectedFiles];\n updatedFiles.splice(index, 1);\n setSelectedFiles(updatedFiles);\n onChange?.(updatedFiles);\n // Reset input value to allow re-uploading the same file\n if (inputRef.current) inputRef.current.value = \"\";\n };\n\n return (\n <div className={cn(\"w-full\", className)} {...props}>\n <div\n className={cn(\n \"relative flex cursor-pointer flex-col items-center justify-center rounded-lg border-2 border-dashed p-6 transition-colors\",\n isDragging ? \"border-primary bg-primary/5\" : \"border-line-strong bg-surface hover:bg-surface-sunken\",\n disabled && \"cursor-not-allowed bg-surface-sunken opacity-60 hover:bg-surface-sunken\",\n invalid && !isDragging && \"border-danger bg-danger/5\"\n )}\n onClick={() => !disabled && inputRef.current?.click()}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n {...field}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n className=\"hidden\"\n onChange={(e) => handleFiles(e.target.files)}\n />\n <svg className=\"mb-3 size-8 text-fg-subtle\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/>\n <polyline points=\"17 8 12 3 7 8\"/>\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\"/>\n </svg>\n <div className=\"text-center\">\n <p className=\"text-sm font-medium text-fg\">Click to upload or drag and drop</p>\n <p className=\"mt-1 text-xs text-fg-muted\">\n {accept ? `Supported: ${accept}` : \"All files supported\"}\n {maxSize && ` (Max: ${Math.round(maxSize / 1024 / 1024)}MB)`}\n </p>\n </div>\n </div>\n\n {selectedFiles.length > 0 && (\n <ul className=\"mt-4 flex flex-col gap-2\">\n {selectedFiles.map((file, i) => (\n <li key={`${file.name}-${i}`} className=\"flex items-center justify-between rounded-md border border-line bg-surface p-3 shadow-sm\">\n <div className=\"flex items-center gap-3 overflow-hidden\">\n <svg className=\"size-5 shrink-0 text-primary\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"/><polyline points=\"13 2 13 9 20 9\"/>\n </svg>\n <div className=\"flex flex-col truncate\">\n <span className=\"truncate text-sm font-medium text-fg\">{file.name}</span>\n <span className=\"text-xs text-fg-muted\">{(file.size / 1024).toFixed(1)} KB</span>\n </div>\n </div>\n <button\n type=\"button\"\n className=\"ml-4 rounded p-1 text-fg-subtle hover:bg-surface-sunken hover:text-danger focus:outline-none\"\n onClick={() => handleRemove(i)}\n disabled={disabled}\n >\n <svg className=\"size-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"3 6 5 6 21 6\"/><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/><line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\"/><line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\"/>\n </svg>\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n }\n);\n\nFileUpload.displayName = \"FileUpload\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport type { DateRange } from \"react-day-picker\";\nimport { cn } from \"../../../foundation/cn\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../../feedback/Popover\";\nimport { Calendar } from \"../Calendar\";\n\nexport interface DateRangePickerProps {\n value?: DateRange;\n onChange?: (date?: DateRange) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function DateRangePicker({\n value,\n onChange,\n placeholder = \"Pick a date range\",\n disabled,\n className,\n}: DateRangePickerProps) {\n const [open, setOpen] = React.useState(false);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n disabled={disabled}\n className={cn(\n \"flex h-9 w-full items-center justify-between rounded-md border border-line bg-surface px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-fg-muted focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\",\n !value?.from && \"text-fg-muted\",\n className\n )}\n >\n <span>\n {value?.from ? (\n value.to ? (\n <>\n {format(value.from, \"LLL dd, y\")} - {format(value.to, \"LLL dd, y\")}\n </>\n ) : (\n format(value.from, \"LLL dd, y\")\n )\n ) : (\n placeholder\n )}\n </span>\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"h-4 w-4 opacity-50\">\n <path d=\"M4.125 1.5C4.125 1.29289 3.95711 1.125 3.75 1.125C3.54289 1.125 3.375 1.29289 3.375 1.5V2.25H1.5C0.671573 2.25 0 2.92157 0 3.75V13.5C0 14.3284 0.671573 15 1.5 15H13.5C14.3284 15 15 14.3284 15 13.5V3.75C15 2.92157 14.3284 2.25 13.5 2.25H11.625V1.5C11.625 1.29289 11.4571 1.125 11.25 1.125C11.0429 1.125 10.875 1.29289 10.875 1.5V2.25H4.125V1.5ZM1.5 3.375H3.375V4.125C3.375 4.33211 3.54289 4.5 3.75 4.5C3.95711 4.5 4.125 4.33211 4.125 4.125V3.375H10.875V4.125C10.875 4.33211 11.0429 4.5 11.25 4.5C11.4571 4.5 11.625 4.33211 11.625 4.125V3.375H13.5C13.7071 3.375 13.875 3.54289 13.875 3.75V5.25H1.125V3.75C1.125 3.54289 1.29289 3.375 1.5 3.375ZM1.125 6.375V13.5C1.125 13.7071 1.29289 13.875 1.5 13.875H13.5C13.7071 13.875 13.875 13.7071 13.875 13.5V6.375H1.125Z\" fill=\"currentColor\" fillRule=\"evenodd\" clipRule=\"evenodd\"></path>\n </svg>\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n initialFocus\n mode=\"range\"\n defaultMonth={value?.from}\n selected={value}\n onSelect={onChange}\n numberOfMonths={2}\n />\n </PopoverContent>\n </Popover>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { useFieldInputProps } from \"../Field/Field.context\";\n\nexport interface SliderProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\"> {\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n onChange?: (value: number) => void;\n showTicks?: boolean;\n}\n\nexport const Slider = React.forwardRef<HTMLInputElement, SliderProps>(\n (\n {\n value,\n defaultValue,\n min = 0,\n max = 100,\n step = 1,\n onChange,\n showTicks = false,\n className,\n disabled,\n ...props\n },\n ref\n ) => {\n const field = useFieldInputProps({});\n const invalid = field[\"aria-invalid\"] === true;\n \n // Uncontrolled state fallback\n const [internalValue, setInternalValue] = React.useState<number>(\n value ?? defaultValue ?? min\n );\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = Number(e.target.value);\n if (!isControlled) {\n setInternalValue(val);\n }\n onChange?.(val);\n };\n\n const percentage = ((currentValue - min) / (max - min)) * 100;\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n <div className=\"relative flex h-6 w-full items-center\">\n <div className=\"absolute h-1.5 w-full overflow-hidden rounded-full bg-surface-sunken\">\n <div\n className={cn(\n \"h-full bg-primary\",\n disabled && \"bg-fg-muted\",\n invalid && \"bg-danger\"\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n <input\n ref={ref}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={currentValue}\n onChange={handleChange}\n {...field}\n {...props}\n disabled={disabled || field.disabled}\n className={cn(\n \"absolute h-full w-full cursor-pointer appearance-none bg-transparent outline-none\",\n \"[&::-webkit-slider-thumb]:pointer-events-auto [&::-webkit-slider-thumb]:size-5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-primary [&::-webkit-slider-thumb]:bg-surface [&::-webkit-slider-thumb]:shadow-md [&::-webkit-slider-thumb]:transition-colors\",\n \"[&::-moz-range-thumb]:pointer-events-auto [&::-moz-range-thumb]:size-5 [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-primary [&::-moz-range-thumb]:bg-surface [&::-moz-range-thumb]:shadow-md [&::-moz-range-thumb]:transition-colors\",\n \"focus-visible:[&::-webkit-slider-thumb]:ring-2 focus-visible:[&::-webkit-slider-thumb]:ring-primary focus-visible:[&::-webkit-slider-thumb]:ring-offset-2\",\n \"focus-visible:[&::-moz-range-thumb]:ring-2 focus-visible:[&::-moz-range-thumb]:ring-primary focus-visible:[&::-moz-range-thumb]:ring-offset-2\",\n disabled && \"cursor-not-allowed [&::-webkit-slider-thumb]:border-fg-muted [&::-webkit-slider-thumb]:bg-surface-sunken [&::-moz-range-thumb]:border-fg-muted [&::-moz-range-thumb]:bg-surface-sunken\",\n invalid && \"[&::-webkit-slider-thumb]:border-danger [&::-moz-range-thumb]:border-danger\"\n )}\n />\n </div>\n {showTicks && (\n <div className=\"mt-2 flex justify-between text-xs text-fg-muted px-1\">\n <span>{min}</span>\n <span>{max}</span>\n </div>\n )}\n </div>\n );\n }\n);\n\nSlider.displayName = \"Slider\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { useFieldInputProps } from \"../Field/Field.context\";\n\nexport interface SignatureInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n onChange?: (signatureDataUrl: string | null) => void;\n disabled?: boolean;\n}\n\nexport const SignatureInput = React.forwardRef<HTMLDivElement, SignatureInputProps>(\n (\n { onChange, disabled, className, ...props },\n ref\n ) => {\n const field = useFieldInputProps({});\n const invalid = field[\"aria-invalid\"] === true;\n \n const canvasRef = React.useRef<HTMLCanvasElement>(null);\n const [isDrawing, setIsDrawing] = React.useState(false);\n const [hasSignature, setHasSignature] = React.useState(false);\n\n const getCoordinates = (e: React.MouseEvent<HTMLCanvasElement> | React.TouchEvent<HTMLCanvasElement>) => {\n if (!canvasRef.current) return;\n const canvas = canvasRef.current;\n const rect = canvas.getBoundingClientRect();\n \n let clientX, clientY;\n if (\"touches\" in e) {\n const touch = e.touches[0];\n if (!touch) return;\n clientX = touch.clientX;\n clientY = touch.clientY;\n } else {\n clientX = (e as React.MouseEvent).clientX;\n clientY = (e as React.MouseEvent).clientY;\n }\n \n return {\n x: clientX - rect.left,\n y: clientY - rect.top\n };\n };\n\n const startDrawing = (e: React.MouseEvent<HTMLCanvasElement> | React.TouchEvent<HTMLCanvasElement>) => {\n if (disabled || !canvasRef.current) return;\n \n const coords = getCoordinates(e);\n if (!coords) return;\n \n const ctx = canvasRef.current.getContext(\"2d\");\n if (!ctx) return;\n \n ctx.beginPath();\n ctx.moveTo(coords.x, coords.y);\n setIsDrawing(true);\n };\n\n const draw = (e: React.MouseEvent<HTMLCanvasElement> | React.TouchEvent<HTMLCanvasElement>) => {\n if (!isDrawing || disabled || !canvasRef.current) return;\n \n const coords = getCoordinates(e);\n if (!coords) return;\n \n const ctx = canvasRef.current.getContext(\"2d\");\n if (!ctx) return;\n \n ctx.lineTo(coords.x, coords.y);\n ctx.stroke();\n setHasSignature(true);\n };\n\n const stopDrawing = () => {\n if (isDrawing && canvasRef.current) {\n setIsDrawing(false);\n const dataUrl = canvasRef.current.toDataURL(\"image/png\");\n onChange?.(dataUrl);\n }\n };\n\n const clearSignature = () => {\n if (disabled || !canvasRef.current) return;\n const ctx = canvasRef.current.getContext(\"2d\");\n if (ctx) {\n ctx.clearRect(0, 0, canvasRef.current.width, canvasRef.current.height);\n setHasSignature(false);\n onChange?.(null);\n }\n };\n\n React.useEffect(() => {\n const canvas = canvasRef.current;\n if (canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n ctx.strokeStyle = \"#000\"; // Assuming dark ink for signatures\n ctx.lineWidth = 2;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n }\n }\n }, []);\n\n return (\n <div \n ref={ref}\n className={cn(\"flex flex-col gap-2 w-full\", className)}\n {...props}\n >\n <div \n className={cn(\n \"relative w-full rounded-md border bg-surface overflow-hidden\",\n invalid ? \"border-danger\" : \"border-line-strong\",\n disabled ? \"opacity-50 cursor-not-allowed bg-surface-sunken\" : \"cursor-crosshair\",\n \"h-[150px]\" // Fixed height for signature pad\n )}\n {...field}\n >\n {!hasSignature && !disabled && (\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none text-fg-muted opacity-50 text-sm\">\n Sign here\n </div>\n )}\n <canvas\n ref={canvasRef}\n width={400} // Logical width, scaled by CSS\n height={150} // Logical height\n className=\"w-full h-full block\"\n onMouseDown={startDrawing}\n onMouseMove={draw}\n onMouseUp={stopDrawing}\n onMouseOut={stopDrawing}\n onTouchStart={(e) => {\n // Prevent scrolling while signing on mobile\n if (e.target === canvasRef.current) e.preventDefault();\n startDrawing(e);\n }}\n onTouchMove={(e) => {\n if (e.target === canvasRef.current) e.preventDefault();\n draw(e);\n }}\n onTouchEnd={stopDrawing}\n />\n <div className=\"absolute bottom-2 left-4 text-xs text-fg-subtle border-t border-line-strong w-[calc(100%-2rem)] pt-1\">\n X\n </div>\n </div>\n \n <div className=\"flex justify-end\">\n <button\n type=\"button\"\n onClick={clearSignature}\n disabled={disabled || !hasSignature}\n className=\"text-xs font-medium text-primary hover:text-primary-hover disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none\"\n >\n Clear signature\n </button>\n </div>\n </div>\n );\n }\n);\n\nSignatureInput.displayName = \"SignatureInput\";\n","import type { ElementType } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\nimport type { PolymorphicProps } from \"../../../foundation/types/polymorphic\";\n\nexport type StackGap = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type StackAlign = \"stretch\" | \"start\" | \"center\" | \"end\";\n\nconst stack = defineVariants({\n base: \"flex\",\n variants: {\n direction: {\n column: \"flex-col\",\n row: \"flex-row\",\n },\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-10\",\n },\n align: {\n stretch: \"items-stretch\",\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n },\n wrap: { true: \"flex-wrap\", false: \"\" },\n },\n defaultVariants: { direction: \"column\", gap: \"md\", align: \"stretch\", wrap: false },\n});\n\nexport interface StackOwnProps {\n direction?: \"column\" | \"row\";\n gap?: StackGap;\n align?: StackAlign;\n wrap?: boolean;\n className?: string;\n}\n\nexport type StackProps<C extends ElementType = \"div\"> = PolymorphicProps<C, StackOwnProps>;\n\n/** One-dimensional layout: children spaced along a single axis. */\nexport function Stack<C extends ElementType = \"div\">(props: StackProps<C>) {\n const { as, direction, gap, align, wrap, className, ...rest } = props;\n const Component = (as ?? \"div\");\n return <Component className={stack({ direction, gap, align, wrap, className })} {...rest} />;\n}\n","import type { ElementType } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\nimport type { PolymorphicProps } from \"../../../foundation/types/polymorphic\";\nimport type { StackGap } from \"../Stack\";\n\nconst flex = defineVariants({\n base: \"flex\",\n variants: {\n align: {\n stretch: \"items-stretch\",\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n baseline: \"items-baseline\",\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n },\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-10\",\n },\n wrap: { true: \"flex-wrap\", false: \"\" },\n },\n defaultVariants: { align: \"center\", justify: \"start\", gap: \"sm\", wrap: false },\n});\n\nexport interface FlexOwnProps {\n align?: \"stretch\" | \"start\" | \"center\" | \"end\" | \"baseline\";\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\";\n gap?: StackGap;\n wrap?: boolean;\n className?: string;\n}\n\nexport type FlexProps<C extends ElementType = \"div\">= PolymorphicProps<C, FlexOwnProps>;\n\n/** Row-oriented flexbox helper: toolbars, header rows, inline clusters. */\nexport function Flex<C extends ElementType = \"div\">(props: FlexProps<C>) {\n const { as, align, justify, gap, wrap, className, ...rest } = props;\n const Component = (as ?? \"div\");\n return <Component className={flex({ align, justify, gap, wrap, className })} {...rest} />;\n}\n","import type { CSSProperties, ElementType } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\nimport type { PolymorphicProps } from \"../../../foundation/types/polymorphic\";\nimport type { StackGap } from \"../Stack\";\n\nconst grid = defineVariants({\n base: \"grid\",\n variants: {\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-10\",\n },\n },\n defaultVariants: { gap: \"md\" },\n});\n\nexport interface GridOwnProps {\n /**\n * Fixed column count, or `{ min: \"220px\" }` for the responsive\n * auto-fit pattern (as many min-width columns as fit).\n */\n columns?: number | { min: string };\n gap?: StackGap;\n className?: string;\n style?: CSSProperties;\n}\n\nexport type GridProps<C extends ElementType = \"div\"> = PolymorphicProps<C, GridOwnProps>;\n\n/** CSS-grid helper: fixed columns or responsive auto-fit via `columns={{ min }}`. */\nexport function Grid<C extends ElementType = \"div\">(props: GridProps<C>) {\n const { as, columns = 2, gap, className, style, ...rest } = props;\n const Component = (as ?? \"div\");\n const gridTemplateColumns =\n typeof columns === \"number\"\n ? `repeat(${String(columns)}, minmax(0, 1fr))`\n : `repeat(auto-fit, minmax(min(${columns.min}, 100%), 1fr))`;\n return (\n <Component\n className={grid({ gap, className })}\n style={{ gridTemplateColumns, ...style }}\n {...rest}\n />\n );\n}\n","import type { ElementType } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\nimport type { PolymorphicProps } from \"../../../foundation/types/polymorphic\";\n\nconst container = defineVariants({\n base: \"mx-auto w-full px-4 sm:px-6\",\n variants: {\n size: {\n sm: \"max-w-screen-sm\",\n md: \"max-w-screen-md\",\n lg: \"max-w-screen-lg\",\n xl: \"max-w-screen-xl\",\n /** Edge-to-edge with side padding only. */\n full: \"max-w-none\",\n },\n },\n defaultVariants: { size: \"xl\" },\n});\n\nexport interface ContainerOwnProps {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n className?: string;\n}\n\nexport type ContainerProps<C extends ElementType = \"div\"> = PolymorphicProps<C, ContainerOwnProps>;\n\n/** Centered max-width page container with consistent side padding. */\nexport function Container<C extends ElementType = \"div\">(props: ContainerProps<C>) {\n const { as, size, className, ...rest } = props;\n const Component = (as ?? \"div\");\n return <Component className={container({ size, className })} {...rest} />;\n}\n","import type { ElementType } from \"react\";\nimport { defineVariants } from \"../../../foundation/variants\";\nimport type { PolymorphicProps } from \"../../../foundation/types/polymorphic\";\n\nconst panel = defineVariants({\n base: \"rounded-lg border border-line bg-surface\",\n variants: {\n padding: {\n none: \"p-0\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n },\n elevation: {\n flat: \"\",\n raised: \"shadow-raised\",\n overlay: \"shadow-overlay\",\n },\n },\n defaultVariants: { padding: \"md\", elevation: \"raised\" },\n});\n\nexport interface PanelOwnProps {\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\";\n elevation?: \"flat\" | \"raised\" | \"overlay\";\n className?: string;\n}\n\nexport type PanelProps<C extends ElementType = \"div\"> = PolymorphicProps<C, PanelOwnProps>;\n\n/** Bordered surface card — the building block of sectioned pages. */\nexport function Panel<C extends ElementType = \"div\">(props: PanelProps<C>) {\n const { as, padding, elevation, className, ...rest } = props;\n const Component = (as ?? \"div\");\n return <Component className={panel({ padding, elevation, className })} {...rest} />;\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface DividerProps extends ComponentPropsWithoutRef<\"div\"> {\n orientation?: \"horizontal\" | \"vertical\";\n /** Optional inline label rendered mid-line (horizontal only). */\n label?: ReactNode;\n}\n\n/** Semantic separator; supports a centered label (\"or\", section names). */\nexport function Divider({ orientation = \"horizontal\", label, className, ...rest }: DividerProps) {\n if (orientation === \"vertical\") {\n return (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n className={cn(\"h-full w-px self-stretch bg-line\", className)}\n {...rest}\n />\n );\n }\n if (label !== undefined) {\n return (\n <div role=\"separator\" className={cn(\"flex items-center gap-3\", className)} {...rest}>\n <span className=\"h-px flex-1 bg-line\" />\n <span className=\"text-xs font-medium text-fg-subtle\">{label}</span>\n <span className=\"h-px flex-1 bg-line\" />\n </div>\n );\n }\n return <div role=\"separator\" className={cn(\"h-px w-full bg-line\", className)} {...rest} />;\n}\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\"> {\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n breadcrumbs?: ReactNode;\n}\n\nexport const PageHeader = forwardRef<HTMLElement, PageHeaderProps>(function PageHeader(\n { title, description, actions, breadcrumbs, className, ...props },\n ref,\n) {\n return (\n <header\n ref={ref}\n className={cn(\"flex flex-col gap-4 pb-6 pt-4\", className)}\n {...props}\n >\n {breadcrumbs && <div className=\"mb-2\">{breadcrumbs}</div>}\n <div className=\"flex flex-wrap items-center justify-between gap-4\">\n <div className=\"space-y-1\">\n <h1 className=\"text-2xl font-bold tracking-tight text-fg\">{title}</h1>\n {description && (\n <p className=\"text-sm text-fg-muted\">{description}</p>\n )}\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n </header>\n );\n});\n","\"use client\";\n\nimport { useRef, type KeyboardEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { useControllableState } from \"@cocliny/util-library/react\";\n\nexport interface TabItem<TKey extends string> {\n key: TKey;\n label: ReactNode;\n icon?: ReactNode;\n /** Count/status pill after the label. */\n badge?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface TabsProps<TKey extends string> {\n tabs: ReadonlyArray<TabItem<TKey>>;\n /** Controlled active key. */\n value?: TKey;\n /** Uncontrolled initial key; defaults to the first enabled tab. */\n defaultValue?: TKey;\n onChange?: (key: TKey) => void;\n \"aria-label\": string;\n /**\n * Panel content per tab. When omitted, Tabs renders only the tablist —\n * for URL-driven tabs where the app owns what's below.\n */\n renderPanel?: (key: TKey) => ReactNode;\n className?: string;\n}\n\n/**\n * WAI-ARIA tabs: roving tabindex, Left/Right/Home/End keyboard activation,\n * underline styling. Controlled (URL-driven) or uncontrolled.\n */\nexport function Tabs<TKey extends string>({\n tabs,\n value,\n defaultValue,\n onChange,\n renderPanel,\n className,\n ...rest\n}: TabsProps<TKey>) {\n const firstEnabled = tabs.find((t) => t.disabled !== true)?.key;\n const [active, setActive] = useControllableState<TKey | undefined>({\n value,\n defaultValue: defaultValue ?? firstEnabled,\n onChange: onChange as ((k: TKey | undefined) => void) | undefined,\n });\n const refs = useRef(new Map<TKey, HTMLButtonElement>());\n\n const enabled = tabs.filter((t) => t.disabled !== true);\n\n const onKeyDown = (event: KeyboardEvent, key: TKey) => {\n const index = enabled.findIndex((t) => t.key === key);\n if (index === -1) return;\n let next: TKey | undefined;\n if (event.key === \"ArrowRight\") next = enabled[(index + 1) % enabled.length]?.key;\n else if (event.key === \"ArrowLeft\") next = enabled[(index - 1 + enabled.length) % enabled.length]?.key;\n else if (event.key === \"Home\") next = enabled[0]?.key;\n else if (event.key === \"End\") next = enabled[enabled.length - 1]?.key;\n if (next !== undefined) {\n event.preventDefault();\n setActive(next);\n refs.current.get(next)?.focus();\n }\n };\n\n return (\n <div className={className}>\n <div role=\"tablist\" className=\"flex items-stretch gap-1 overflow-x-auto overflow-y-hidden border-b border-line\" {...rest}>\n {tabs.map((tab) => {\n const selected = active === tab.key;\n return (\n <button\n key={tab.key}\n ref={(el) => {\n if (el) refs.current.set(tab.key, el);\n else refs.current.delete(tab.key);\n }}\n role=\"tab\"\n type=\"button\"\n aria-selected={selected}\n aria-controls={renderPanel ? `panel-${tab.key}` : undefined}\n tabIndex={selected ? 0 : -1}\n disabled={tab.disabled}\n onClick={() => {\n setActive(tab.key);\n }}\n onKeyDown={(e) => {\n onKeyDown(e, tab.key);\n }}\n className={cn(\n \"focus-ring -mb-px inline-flex items-center gap-2 whitespace-nowrap border-b-2 px-3.5 py-2.5 text-sm font-semibold\",\n \"transition-colors duration-(--ml-duration-fast)\",\n \"disabled:cursor-not-allowed disabled:text-fg-disabled\",\n selected\n ? \"border-primary text-primary-subtle-fg\"\n : \"border-transparent text-fg-muted hover:text-fg\",\n )}\n >\n {tab.icon && <span className=\"[&_svg]:size-(--size-icon-sm)\">{tab.icon}</span>}\n {tab.label}\n {tab.badge}\n </button>\n );\n })}\n </div>\n {renderPanel && active !== undefined && (\n <div role=\"tabpanel\" id={`panel-${active}`} tabIndex={0} className=\"focus-ring pt-4\">\n {renderPanel(active)}\n </div>\n )}\n </div>\n );\n}\n","import type { ElementType, ReactNode } from \"react\";\nimport { Fragment } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface BreadcrumbItem {\n label: ReactNode;\n /** Link target; the last item (current page) typically omits it. */\n href?: string;\n}\n\nexport interface BreadcrumbsProps {\n items: ReadonlyArray<BreadcrumbItem>;\n /**\n * Link component (e.g. your router's Link). Defaults to <a> — the\n * framework never owns routing.\n */\n linkComponent?: ElementType;\n separator?: ReactNode;\n className?: string;\n}\n\n/** Breadcrumb trail with nav landmark + aria-current on the last item. */\nexport function Breadcrumbs({\n items,\n linkComponent: LinkComponent = \"a\",\n separator = \"/\",\n className,\n}: BreadcrumbsProps) {\n return (\n <nav aria-label=\"Breadcrumb\" className={className}>\n <ol className=\"m-0 flex list-none flex-wrap items-center gap-1.5 p-0 text-sm\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <Fragment key={index}>\n {index > 0 && (\n <li aria-hidden className=\"text-fg-subtle\">\n {separator}\n </li>\n )}\n <li className={cn(\"min-w-0\", isLast && \"truncate\")}>\n {item.href !== undefined && !isLast ? (\n <LinkComponent\n href={item.href}\n className=\"focus-ring rounded-xs font-medium text-fg-muted no-underline hover:text-fg hover:underline\"\n >\n {item.label}\n </LinkComponent>\n ) : (\n <span aria-current={isLast ? \"page\" : undefined} className=\"font-semibold text-fg\">\n {item.label}\n </span>\n )}\n </li>\n </Fragment>\n );\n })}\n </ol>\n </nav>\n );\n}\n","\"use client\";\n\nimport { pageRange, PAGE_ELLIPSIS } from \"@cocliny/util-library\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface PaginationProps {\n /** Current 1-based page. */\n page: number;\n pageCount: number;\n onPageChange: (page: number) => void;\n /** Neighbor pages shown around the current page. @default 1 */\n siblingCount?: number;\n className?: string;\n}\n\n/**\n * Page navigation with ellipsis collapsing (via util-library's pageRange),\n * prev/next controls, and aria-current on the active page.\n */\nexport function Pagination({ page, pageCount, onPageChange, siblingCount = 1, className }: PaginationProps) {\n if (pageCount <= 1) return null;\n const items = pageRange(page, pageCount, siblingCount);\n\n const pageButton = (target: number) => {\n const isCurrent = target === page;\n return (\n <button\n key={target}\n type=\"button\"\n aria-current={isCurrent ? \"page\" : undefined}\n aria-label={`Page ${String(target)}`}\n onClick={() => {\n if (!isCurrent) onPageChange(target);\n }}\n className={cn(\n \"focus-ring inline-flex h-(--ml-control-h-sm) min-w-(--ml-control-h-sm) items-center justify-center rounded-md px-2 text-sm font-semibold tabular-nums\",\n \"transition-colors duration-(--ml-duration-fast)\",\n isCurrent ? \"bg-primary text-primary-fg\" : \"text-fg-muted hover:bg-surface-sunken hover:text-fg\",\n )}\n >\n {target}\n </button>\n );\n };\n\n return (\n <nav aria-label=\"Pagination\" className={cn(\"flex items-center gap-1\", className)}>\n <ArrowButton\n label=\"Previous page\"\n disabled={page <= 1}\n onClick={() => {\n onPageChange(page - 1);\n }}\n direction=\"left\"\n />\n {items.map((item, index) =>\n item === PAGE_ELLIPSIS ? (\n <span key={`e-${String(index)}`} aria-hidden className=\"px-1 text-fg-subtle\">\n …\n </span>\n ) : (\n pageButton(item)\n ),\n )}\n <ArrowButton\n label=\"Next page\"\n disabled={page >= pageCount}\n onClick={() => {\n onPageChange(page + 1);\n }}\n direction=\"right\"\n />\n </nav>\n );\n}\n\nfunction ArrowButton({\n label,\n disabled,\n onClick,\n direction,\n}: {\n label: string;\n disabled: boolean;\n onClick: () => void;\n direction: \"left\" | \"right\";\n}) {\n return (\n <button\n type=\"button\"\n aria-label={label}\n disabled={disabled}\n onClick={onClick}\n className={cn(\n \"focus-ring inline-flex h-(--ml-control-h-sm) w-(--ml-control-h-sm) items-center justify-center rounded-md text-fg-muted\",\n \"transition-colors duration-(--ml-duration-fast) hover:bg-surface-sunken hover:text-fg\",\n \"disabled:cursor-not-allowed disabled:text-fg-disabled disabled:hover:bg-transparent\",\n )}\n >\n <svg\n aria-hidden\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"size-4\", direction === \"left\" && \"rotate-180\")}\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n );\n}\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nexport const DropdownMenuSubTrigger = forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-surface-sunken data-[state=open]:bg-surface-sunken\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <svg\n className=\"ml-auto h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nexport const DropdownMenuSubContent = forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.SubContent>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-(--ml-z-popover) min-w-[8rem] overflow-hidden rounded-md border border-line bg-surface p-1 text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nexport const DropdownMenuContent = forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Content>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-(--ml-z-popover) min-w-[8rem] overflow-hidden rounded-md border border-line bg-surface p-1 text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nexport const DropdownMenuItem = forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Item>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-surface-sunken focus:text-fg data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nexport const DropdownMenuCheckboxItem = forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-surface-sunken focus:text-fg data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4 fill-current\"\n >\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nexport const DropdownMenuRadioItem = forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.RadioItem>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-surface-sunken focus:text-fg data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <div className=\"h-2 w-2 rounded-full bg-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nexport const DropdownMenuLabel = forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Label>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-fg\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nexport const DropdownMenuSeparator = forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Separator>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-line\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nexport const DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest text-fg-muted\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport const Accordion = AccordionPrimitive.Root;\n\nexport const AccordionItem = forwardRef<\n React.ComponentRef<typeof AccordionPrimitive.Item>,\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b border-line\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nexport const AccordionTrigger = forwardRef<\n React.ComponentRef<typeof AccordionPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline focus-ring [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4 shrink-0 transition-transform duration-200\"\n aria-hidden\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nexport const AccordionContent = forwardRef<\n React.ComponentRef<typeof AccordionPrimitive.Content>,\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport const Avatar = forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Root>,\n ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nexport const AvatarImage = forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Image>,\n ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nexport const AvatarFallback = forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Fallback>,\n ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-surface-sunken text-fg-muted\",\n className\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport const Card = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border border-line bg-surface text-fg shadow-sm\",\n className,\n )}\n {...props}\n />\n ),\n);\nCard.displayName = \"Card\";\n\nexport const CardHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n ),\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport const CardTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"font-semibold leading-none tracking-tight text-fg\",\n className,\n )}\n {...props}\n />\n ),\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = forwardRef<HTMLParagraphElement, HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-fg-muted\", className)}\n {...props}\n />\n ),\n);\nCardDescription.displayName = \"CardDescription\";\n\nexport const CardContent = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n ),\n);\nCardContent.displayName = \"CardContent\";\n\nexport const CardFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n ),\n);\nCardFooter.displayName = \"CardFooter\";\n","\"use client\";\n\nimport {\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { useState } from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n className?: string;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n className,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = useState<SortingState>([]);\n\n const table = useReactTable({\n data,\n columns,\n state: {\n sorting,\n },\n onSortingChange: setSorting,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n });\n\n return (\n <div className={cn(\"rounded-md border border-line overflow-hidden\", className)}>\n <table className=\"w-full caption-bottom text-sm\">\n <thead className=\"[&_tr]:border-b [&_tr]:border-line bg-surface-sunken\">\n {table.getHeaderGroups().map((headerGroup) => (\n <tr\n key={headerGroup.id}\n className=\"border-b border-line transition-colors hover:bg-surface-sunken/50 data-[state=selected]:bg-surface-sunken\"\n >\n {headerGroup.headers.map((header) => {\n return (\n <th\n key={header.id}\n className=\"h-10 px-4 text-left align-middle font-medium text-fg-muted [&:has([role=checkbox])]:pr-0\"\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n <tbody className=\"[&_tr:last-child]:border-0 bg-surface text-fg\">\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <tr\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n className=\"border-b border-line transition-colors hover:bg-surface-sunken/50 data-[state=selected]:bg-surface-sunken\"\n >\n {row.getVisibleCells().map((cell) => (\n <td\n key={cell.id}\n className=\"p-4 align-middle [&:has([role=checkbox])]:pr-0\"\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </tr>\n ))\n ) : (\n <tr>\n <td\n colSpan={columns.length}\n className=\"h-24 text-center text-fg-muted\"\n >\n No results.\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n}\n\n// Re-exported so consumers can type columns without depending on\n// @tanstack/react-table directly (the engine stays swappable).\nexport type { ColumnDef } from \"@tanstack/react-table\";\n","import * as React from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface TimelineProps extends React.HTMLAttributes<HTMLOListElement> {\n children: React.ReactNode;\n}\n\nexport const Timeline = React.forwardRef<HTMLOListElement, TimelineProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <ol\n ref={ref}\n className={cn(\"relative border-l border-line ml-3.5 space-y-6\", className)}\n {...props}\n >\n {children}\n </ol>\n );\n }\n);\nTimeline.displayName = \"Timeline\";\n\nexport interface TimelineItemProps extends React.HTMLAttributes<HTMLLIElement> {\n children: React.ReactNode;\n}\n\nexport const TimelineItem = React.forwardRef<HTMLLIElement, TimelineItemProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <li\n ref={ref}\n className={cn(\"relative ml-6\", className)}\n {...props}\n >\n {children}\n </li>\n );\n }\n);\nTimelineItem.displayName = \"TimelineItem\";\n\nexport interface TimelineDotProps extends React.HTMLAttributes<HTMLDivElement> {\n intent?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n}\n\nexport const TimelineDot = React.forwardRef<HTMLDivElement, TimelineDotProps>(\n ({ className, intent = \"default\", ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"absolute -left-[1.8125rem] mt-0.5 flex h-6 w-6 items-center justify-center rounded-full bg-surface ring-4 ring-surface\",\n className\n )}\n {...props}\n >\n <div\n className={cn(\"h-2.5 w-2.5 rounded-full border shadow-sm\", {\n \"border-line-strong bg-surface-sunken\": intent === \"default\",\n \"border-primary bg-primary\": intent === \"primary\",\n \"border-success bg-success\": intent === \"success\",\n \"border-warning bg-warning\": intent === \"warning\",\n \"border-danger bg-danger\": intent === \"danger\",\n \"border-info bg-info\": intent === \"info\",\n })}\n />\n </div>\n );\n }\n);\nTimelineDot.displayName = \"TimelineDot\";\n\nexport type TimelineContentProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const TimelineContent = React.forwardRef<HTMLDivElement, TimelineContentProps>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1\", className)}\n {...props}\n />\n );\n }\n);\nTimelineContent.displayName = \"TimelineContent\";\n\nexport type TimelineTimeProps = React.TimeHTMLAttributes<HTMLTimeElement>;\n\nexport const TimelineTime = React.forwardRef<HTMLTimeElement, TimelineTimeProps>(\n ({ className, ...props }, ref) => {\n return (\n <time\n ref={ref}\n className={cn(\"text-xs font-medium tracking-wide text-fg-subtle uppercase\", className)}\n {...props}\n />\n );\n }\n);\nTimelineTime.displayName = \"TimelineTime\";\n\nexport type TimelineTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\n\nexport const TimelineTitle = React.forwardRef<HTMLHeadingElement, TimelineTitleProps>(\n ({ className, ...props }, ref) => {\n return (\n <h3\n ref={ref}\n className={cn(\"text-base font-medium text-fg\", className)}\n {...props}\n />\n );\n }\n);\nTimelineTitle.displayName = \"TimelineTitle\";\n\nexport type TimelineDescriptionProps = React.HTMLAttributes<HTMLParagraphElement>;\n\nexport const TimelineDescription = React.forwardRef<HTMLParagraphElement, TimelineDescriptionProps>(\n ({ className, ...props }, ref) => {\n return (\n <p\n ref={ref}\n className={cn(\"text-sm text-fg-muted\", className)}\n {...props}\n />\n );\n }\n);\nTimelineDescription.displayName = \"TimelineDescription\";\n","import * as React from \"react\";\nimport { cn } from \"../../../foundation/cn\";\n\nexport interface StepItem {\n label: React.ReactNode;\n description?: React.ReactNode;\n}\n\nexport interface StepsProps extends React.HTMLAttributes<HTMLDivElement> {\n steps: StepItem[];\n activeStep?: number;\n}\n\nexport const Steps = React.forwardRef<HTMLDivElement, StepsProps>(\n ({ className, steps, activeStep = 0, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex w-full items-center\", className)}\n {...props}\n >\n {steps.map((step, index) => {\n const isCompleted = index < activeStep;\n const isActive = index === activeStep;\n\n return (\n <div\n key={index}\n className={cn(\n \"relative flex flex-1 flex-col items-center text-center\",\n index !== steps.length - 1 ? \"after:absolute after:left-[50%] after:top-[9px] after:h-[2px] after:w-full after:bg-line\" : \"\",\n isCompleted && index !== steps.length - 1 ? \"after:bg-primary\" : \"\"\n )}\n >\n <div\n className={cn(\n \"relative z-10 flex h-5 w-5 items-center justify-center rounded-full border-2 bg-surface transition-all duration-200\",\n isCompleted ? \"border-primary bg-primary\" : isActive ? \"border-primary ring-4 ring-primary/20\" : \"border-line-strong bg-surface-sunken\"\n )}\n >\n {/* Active indicator dot */}\n {isActive && <div className=\"h-2 w-2 rounded-full bg-primary\" />}\n {isCompleted && (\n <svg className=\"h-3 w-3 text-primary-fg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={3}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )}\n </div>\n <div className=\"mt-3 flex flex-col items-center\">\n <span className={cn(\"text-sm font-semibold\", isActive || isCompleted ? \"text-fg\" : \"text-fg-muted\")}>\n {step.label}\n </span>\n {step.description && (\n <span className=\"text-xs text-fg-subtle mt-0.5\">\n {step.description}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n);\nSteps.displayName = \"Steps\";\n","import * as React from \"react\";\nimport { cn } from \"../../../foundation/cn\";\nimport { Card } from \"../Card\";\n\nexport interface StatCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title: React.ReactNode;\n value: React.ReactNode;\n trend?: {\n value: string;\n isPositive?: boolean;\n label?: string;\n };\n icon?: React.ReactNode;\n}\n\n/**\n * A dashboard KPI tile: label, prominent value, optional icon, and an\n * optional trend indicator (arrow direction and color follow\n * `trend.isPositive`; omit it for a neutral trend).\n *\n * @example\n * <StatCard\n * title=\"Active patients\"\n * value=\"128\"\n * trend={{ value: \"+12%\", isPositive: true, label: \"vs last month\" }}\n * />\n */\nexport const StatCard = React.forwardRef<HTMLDivElement, StatCardProps>(\n ({ className, title, value, trend, icon, ...props }, ref) => {\n return (\n <Card ref={ref} className={cn(\"p-6\", className)} {...props}>\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm font-medium text-fg-muted\">{title}</p>\n {icon && <div className=\"text-fg-subtle [&_svg]:h-4 [&_svg]:w-4\">{icon}</div>}\n </div>\n <div className=\"mt-2 flex items-baseline gap-2\">\n <h2 className=\"text-3xl font-bold tracking-tight text-fg\">{value}</h2>\n {trend && (\n <span\n className={cn(\n \"inline-flex items-center text-sm font-medium\",\n trend.isPositive === true ? \"text-success\" : trend.isPositive === false ? \"text-danger\" : \"text-fg-muted\"\n )}\n >\n {trend.isPositive === true && (\n <svg\n className=\"mr-1 h-3 w-3\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={3}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 15l7-7 7 7\" />\n </svg>\n )}\n {trend.isPositive === false && (\n <svg\n className=\"mr-1 h-3 w-3\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={3}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n )}\n {trend.value}\n </span>\n )}\n </div>\n {trend?.label && <p className=\"mt-1 text-xs text-fg-subtle\">{trend.label}</p>}\n </Card>\n );\n }\n);\nStatCard.displayName = \"StatCard\";\n","import type { ChartDatum, ChartSeries, ChartSeriesInput } from \"./Chart.types\";\n\n/** Number of colors in the categorical chart palette (`--ml-chart-1..8`). */\nexport const CHART_PALETTE_SIZE = 8;\n\n/**\n * The categorical palette color for a zero-based series position.\n * Cycles when there are more series than palette entries.\n */\nexport function chartColor(position: number): string {\n return `var(--ml-chart-${String((position % CHART_PALETTE_SIZE) + 1)})`;\n}\n\n/**\n * Normalizes the `series` prop (bare keys or full configs) into fully\n * resolved series: label defaults to the data key, color to the palette.\n */\nexport function resolveSeries<TDatum extends ChartDatum>(\n series: ReadonlyArray<ChartSeriesInput<TDatum>>,\n): Array<Required<ChartSeries<TDatum>>> {\n return series.map((entry, position) => {\n const config = typeof entry === \"string\" ? { dataKey: entry } : entry;\n return {\n dataKey: config.dataKey,\n label: config.label ?? config.dataKey,\n color: config.color ?? chartColor(position),\n };\n });\n}\n","\"use client\";\n\nimport { cn } from \"../../../foundation/cn\";\n\n/**\n * The payload entries recharts injects into a custom tooltip's `content`\n * element. Typed structurally so the framework's public API does not leak\n * recharts internals.\n */\nexport interface ChartTooltipPayloadEntry {\n name?: string | number;\n value?: number | string | ReadonlyArray<number | string>;\n color?: string;\n dataKey?: string | number;\n}\n\nexport interface ChartTooltipContentProps {\n /** Injected by recharts: whether the tooltip is active. */\n active?: boolean;\n /** Injected by recharts: the hovered category value. */\n label?: string | number;\n /** Injected by recharts: one entry per series at the hovered index. */\n payload?: ReadonlyArray<ChartTooltipPayloadEntry>;\n /** Formats numeric series values. */\n valueFormatter?: (value: number) => string;\n /** Formats the category header. */\n indexFormatter?: (value: string | number) => string;\n className?: string;\n}\n\n/**\n * Token-styled tooltip body shared by every chart. Renders the hovered\n * category as a header and one swatch + label + value row per series.\n */\nexport function ChartTooltipContent({\n active,\n label,\n payload,\n valueFormatter,\n indexFormatter,\n className,\n}: ChartTooltipContentProps) {\n if (!active || !payload || payload.length === 0) return null;\n\n return (\n <div\n className={cn(\n \"min-w-32 rounded-md border border-line bg-surface-raised px-3 py-2 text-xs shadow-overlay\",\n className,\n )}\n >\n {label !== undefined && (\n <p className=\"mb-1.5 font-medium text-fg\">\n {indexFormatter ? indexFormatter(label) : label}\n </p>\n )}\n <div className=\"flex flex-col gap-1\">\n {payload.map((entry) => (\n <div\n key={String(entry.dataKey ?? entry.name)}\n className=\"flex items-center justify-between gap-4\"\n >\n <span className=\"flex items-center gap-1.5 text-fg-muted\">\n <span\n aria-hidden\n className=\"size-2 shrink-0 rounded-[2px]\"\n style={{ backgroundColor: entry.color }}\n />\n {entry.name}\n </span>\n <span className=\"font-medium tabular-nums text-fg\">\n {typeof entry.value === \"number\" && valueFormatter\n ? valueFormatter(entry.value)\n : String(entry.value)}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../../foundation/cn\";\n\n/** Structurally-typed legend entries injected by recharts. */\nexport interface ChartLegendPayloadEntry {\n value?: string | number;\n color?: string;\n dataKey?: string | number;\n}\n\nexport interface ChartLegendContentProps {\n /** Injected by recharts: one entry per series. */\n payload?: ReadonlyArray<ChartLegendPayloadEntry>;\n className?: string;\n}\n\n/** Token-styled horizontal legend shared by every chart. */\nexport function ChartLegendContent({ payload, className }: ChartLegendContentProps) {\n if (!payload || payload.length === 0) return null;\n\n return (\n <div className={cn(\"flex flex-wrap items-center justify-center gap-x-4 gap-y-1 pt-3\", className)}>\n {payload.map((entry) => (\n <span\n key={String(entry.dataKey ?? entry.value)}\n className=\"flex items-center gap-1.5 text-xs text-fg-muted\"\n >\n <span\n aria-hidden\n className=\"size-2 shrink-0 rounded-[2px]\"\n style={{ backgroundColor: entry.color }}\n />\n {entry.value}\n </span>\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n CartesianGrid,\n Legend,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { cn } from \"../../../foundation/cn\";\nimport type { CartesianChartProps, ChartDatum } from \"./Chart.types\";\nimport { ChartLegendContent } from \"./ChartLegend\";\nimport { ChartTooltipContent } from \"./ChartTooltip\";\n\n/** Default chart height in pixels. */\nexport const DEFAULT_CHART_HEIGHT = 300;\n\n/**\n * Internal: the sized, theme-aware wrapper every chart renders into.\n * Exposes the chart to assistive tech as a single labelled image.\n */\nexport const ChartRoot = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { height: number | string; children: React.ReactElement }\n>(({ className, height, style, children, ...props }, ref) => (\n <div\n ref={ref}\n role=\"img\"\n className={cn(\"w-full text-xs\", className)}\n style={{ height, ...style }}\n {...props}\n >\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n {children}\n </ResponsiveContainer>\n </div>\n));\nChartRoot.displayName = \"ChartRoot\";\n\n/**\n * Internal: the shared grid / axis / tooltip / legend children for a\n * cartesian chart. Returned as an element array (not a component) because\n * recharts only recognizes its own primitives as direct chart children.\n */\nexport function renderCartesianScaffold<TDatum extends ChartDatum>(\n props: Pick<\n CartesianChartProps<TDatum>,\n | \"index\"\n | \"series\"\n | \"valueFormatter\"\n | \"indexFormatter\"\n | \"showGrid\"\n | \"showTooltip\"\n | \"showLegend\"\n | \"showXAxis\"\n | \"showYAxis\"\n >,\n options: { tooltipCursor?: React.ComponentProps<typeof Tooltip>[\"cursor\"] } = {},\n): React.ReactElement[] {\n const {\n index,\n series,\n valueFormatter,\n indexFormatter,\n showGrid = true,\n showTooltip = true,\n showLegend = series.length > 1,\n showXAxis = true,\n showYAxis = true,\n } = props;\n\n const children: React.ReactElement[] = [];\n\n if (showGrid) {\n children.push(\n <CartesianGrid\n key=\"grid\"\n stroke=\"var(--ml-chart-grid)\"\n strokeDasharray=\"4 4\"\n vertical={false}\n />,\n );\n }\n if (showXAxis) {\n children.push(\n <XAxis\n key=\"x\"\n dataKey={index}\n stroke=\"var(--ml-chart-label)\"\n tick={{ fill: \"var(--ml-chart-label)\", fontSize: 12 }}\n tickLine={false}\n axisLine={false}\n tickMargin={8}\n tickFormatter={indexFormatter}\n />,\n );\n }\n if (showYAxis) {\n children.push(\n <YAxis\n key=\"y\"\n width={48}\n stroke=\"var(--ml-chart-label)\"\n tick={{ fill: \"var(--ml-chart-label)\", fontSize: 12 }}\n tickLine={false}\n axisLine={false}\n tickFormatter={valueFormatter}\n />,\n );\n }\n if (showTooltip) {\n children.push(\n <Tooltip\n key=\"tooltip\"\n cursor={options.tooltipCursor ?? { stroke: \"var(--ml-chart-grid)\" }}\n content={\n <ChartTooltipContent\n valueFormatter={valueFormatter}\n indexFormatter={indexFormatter}\n />\n }\n />,\n );\n }\n if (showLegend) {\n children.push(<Legend key=\"legend\" content={<ChartLegendContent />} />);\n }\n\n return children;\n}\n","\"use client\";\n\nimport { Line, LineChart as RechartsLineChart } from \"recharts\";\nimport type { CartesianChartProps, ChartDatum } from \"./Chart.types\";\nimport { resolveSeries } from \"./Chart.utils\";\nimport {\n ChartRoot,\n DEFAULT_CHART_HEIGHT,\n renderCartesianScaffold,\n} from \"./CartesianChartBase\";\n\nexport interface LineChartProps<TDatum extends ChartDatum = ChartDatum>\n extends CartesianChartProps<TDatum> {\n /** Line interpolation. @default \"monotone\" */\n curve?: \"monotone\" | \"linear\" | \"step\";\n /** Render a dot at every data point (hover dots always render). @default false */\n showDots?: boolean;\n}\n\n/**\n * Multi-series line chart for trends over an ordered axis (time, sessions,\n * visits). Colors come from the categorical chart tokens, so lines restyle\n * with the theme automatically.\n *\n * @example\n * <LineChart\n * data={sessions}\n * index=\"week\"\n * series={[\"completed\", \"cancelled\"]}\n * valueFormatter={(v) => `${v} sessions`}\n * aria-label=\"Completed and cancelled sessions per week\"\n * />\n */\nexport function LineChart<TDatum extends ChartDatum>({\n data,\n index,\n series,\n height = DEFAULT_CHART_HEIGHT,\n valueFormatter,\n indexFormatter,\n showGrid,\n showTooltip,\n showLegend,\n showXAxis,\n showYAxis,\n curve = \"monotone\",\n showDots = false,\n ...rootProps\n}: LineChartProps<TDatum>) {\n const resolved = resolveSeries(series);\n\n return (\n <ChartRoot height={height} {...rootProps}>\n <RechartsLineChart\n data={data.slice()}\n margin={{ top: 8, right: 8, left: 0, bottom: 0 }}\n accessibilityLayer\n >\n {renderCartesianScaffold({\n index,\n series,\n valueFormatter,\n indexFormatter,\n showGrid,\n showTooltip,\n showLegend,\n showXAxis,\n showYAxis,\n })}\n {resolved.map((s) => (\n <Line\n key={s.dataKey}\n type={curve}\n dataKey={s.dataKey}\n name={s.label}\n stroke={s.color}\n strokeWidth={2}\n dot={showDots ? { r: 3, fill: s.color, strokeWidth: 0 } : false}\n activeDot={{ r: 4 }}\n />\n ))}\n </RechartsLineChart>\n </ChartRoot>\n );\n}\n","\"use client\";\n\nimport { Bar, BarChart as RechartsBarChart } from \"recharts\";\nimport type { CartesianChartProps, ChartDatum } from \"./Chart.types\";\nimport { resolveSeries } from \"./Chart.utils\";\nimport {\n ChartRoot,\n DEFAULT_CHART_HEIGHT,\n renderCartesianScaffold,\n} from \"./CartesianChartBase\";\n\nexport interface BarChartProps<TDatum extends ChartDatum = ChartDatum>\n extends CartesianChartProps<TDatum> {\n /** Stack the series instead of grouping them side by side. @default false */\n stacked?: boolean;\n}\n\n/**\n * Multi-series bar chart for categorical comparisons (visits per provider,\n * claims per payer). Colors come from the categorical chart tokens, so bars\n * restyle with the theme automatically.\n *\n * @example\n * <BarChart\n * data={claims}\n * index=\"month\"\n * series={[\n * { dataKey: \"submitted\", label: \"Submitted\" },\n * { dataKey: \"denied\", label: \"Denied\", color: \"var(--ml-danger)\" },\n * ]}\n * stacked\n * aria-label=\"Submitted and denied claims per month\"\n * />\n */\nexport function BarChart<TDatum extends ChartDatum>({\n data,\n index,\n series,\n height = DEFAULT_CHART_HEIGHT,\n valueFormatter,\n indexFormatter,\n showGrid,\n showTooltip,\n showLegend,\n showXAxis,\n showYAxis,\n stacked = false,\n ...rootProps\n}: BarChartProps<TDatum>) {\n const resolved = resolveSeries(series);\n const isLast = (position: number) => position === resolved.length - 1;\n\n return (\n <ChartRoot height={height} {...rootProps}>\n <RechartsBarChart\n data={data.slice()}\n margin={{ top: 8, right: 8, left: 0, bottom: 0 }}\n accessibilityLayer\n >\n {renderCartesianScaffold(\n {\n index,\n series,\n valueFormatter,\n indexFormatter,\n showGrid,\n showTooltip,\n showLegend,\n showXAxis,\n showYAxis,\n },\n { tooltipCursor: { fill: \"var(--ml-surface-sunken)\", opacity: 0.6 } },\n )}\n {resolved.map((s, position) => (\n <Bar\n key={s.dataKey}\n dataKey={s.dataKey}\n name={s.label}\n fill={s.color}\n stackId={stacked ? \"stack\" : undefined}\n // Only the top of a stack (or every grouped bar) is rounded.\n radius={!stacked || isLast(position) ? [4, 4, 0, 0] : [0, 0, 0, 0]}\n maxBarSize={48}\n />\n ))}\n </RechartsBarChart>\n </ChartRoot>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Area, AreaChart as RechartsAreaChart } from \"recharts\";\nimport type { CartesianChartProps, ChartDatum } from \"./Chart.types\";\nimport { resolveSeries } from \"./Chart.utils\";\nimport {\n ChartRoot,\n DEFAULT_CHART_HEIGHT,\n renderCartesianScaffold,\n} from \"./CartesianChartBase\";\n\nexport interface AreaChartProps<TDatum extends ChartDatum = ChartDatum>\n extends CartesianChartProps<TDatum> {\n /** Line interpolation. @default \"monotone\" */\n curve?: \"monotone\" | \"linear\" | \"step\";\n /** Stack the series to show part-to-whole composition. @default false */\n stacked?: boolean;\n}\n\n/**\n * Multi-series area chart for cumulative trends and part-to-whole\n * composition over time (caseload by program, utilization by location).\n * Colors come from the categorical chart tokens, so fills restyle with the\n * theme automatically.\n *\n * @example\n * <AreaChart\n * data={caseload}\n * index=\"month\"\n * series={[\"aba\", \"speech\", \"ot\"]}\n * stacked\n * aria-label=\"Monthly caseload by service line\"\n * />\n */\nexport function AreaChart<TDatum extends ChartDatum>({\n data,\n index,\n series,\n height = DEFAULT_CHART_HEIGHT,\n valueFormatter,\n indexFormatter,\n showGrid,\n showTooltip,\n showLegend,\n showXAxis,\n showYAxis,\n curve = \"monotone\",\n stacked = false,\n ...rootProps\n}: AreaChartProps<TDatum>) {\n const resolved = resolveSeries(series);\n const gradientPrefix = React.useId().replace(/[^a-zA-Z0-9]/g, \"\");\n\n return (\n <ChartRoot height={height} {...rootProps}>\n <RechartsAreaChart\n data={data.slice()}\n margin={{ top: 8, right: 8, left: 0, bottom: 0 }}\n accessibilityLayer\n >\n <defs>\n {resolved.map((s) => (\n <linearGradient\n key={s.dataKey}\n id={`${gradientPrefix}-${s.dataKey}`}\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\"\n >\n <stop offset=\"5%\" stopColor={s.color} stopOpacity={0.32} />\n <stop offset=\"95%\" stopColor={s.color} stopOpacity={0.04} />\n </linearGradient>\n ))}\n </defs>\n {renderCartesianScaffold({\n index,\n series,\n valueFormatter,\n indexFormatter,\n showGrid,\n showTooltip,\n showLegend,\n showXAxis,\n showYAxis,\n })}\n {resolved.map((s) => (\n <Area\n key={s.dataKey}\n type={curve}\n dataKey={s.dataKey}\n name={s.label}\n stroke={s.color}\n strokeWidth={2}\n fill={`url(#${gradientPrefix}-${s.dataKey})`}\n stackId={stacked ? \"stack\" : undefined}\n dot={false}\n activeDot={{ r: 4 }}\n />\n ))}\n </RechartsAreaChart>\n </ChartRoot>\n );\n}\n","/**\n * @cocliny/ui-library\n *\n * Presentation-only React components over a token-driven design system.\n *\n * Rules for everything added here:\n * - Components receive data via props, render it, and emit callbacks.\n * - No data fetching, no business logic, no application state.\n * - Every component exposes className / style / slot overrides / render hooks.\n * - All styling consumes design tokens (CSS variables) — never hardcoded values.\n * - WCAG AA: keyboard navigation, focus management, ARIA, reduced motion.\n */\n\n// Foundation: cn, variants, shared types, design tokens, theme engine.\nexport * from \"./foundation\";\n\n// Components: typography, buttons, feedback, inputs, layout, navigation.\nexport * from \"./components\";\n\n/** Framework version marker. Replaced by the release pipeline. */\nexport const UI_LIBRARY_VERSION = \"0.0.0\" as const;\n"]}
|