artefact-design-system 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/AGENTS.md +46 -0
- package/LICENSE +21 -0
- package/README.md +30 -0
- package/context/COMPONENTS.md +90 -0
- package/context/DESIGN.md +242 -0
- package/dist/index.d.ts +834 -0
- package/dist/index.js +3975 -0
- package/dist/index.js.map +1 -0
- package/dist/style.css +2 -0
- package/package.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/foundation/tokens.ts","../src/foundation/layout.tsx","../src/foundation/surface.tsx","../src/foundation/row.tsx","../src/foundation/AppShell.tsx","../src/primitives/Icon.tsx","../src/primitives/Image.tsx","../src/primitives/Text.tsx","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/button.tsx","../src/components/ui/button-group.tsx","../src/components/ui/separator.tsx","../src/components/ui/card.tsx","../src/components/ui/chart.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dialog.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/empty.tsx","../src/components/ui/field.tsx","../src/components/ui/label.tsx","../src/components/ui/input.tsx","../src/components/ui/input-group.tsx","../src/components/ui/textarea.tsx","../src/components/ui/item.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/progress.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/select.tsx","../src/components/ui/sonner.tsx","../src/components/ui/spinner.tsx","../src/components/ui/switch.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/tooltip.tsx","../src/components/composed/AdviceCard.tsx","../src/components/composed/Chip.tsx","../src/components/composed/Field.tsx","../src/components/composed/FilterSelect.tsx","../src/components/composed/MessageBubble.tsx","../src/components/composed/Search.tsx","../src/components/composed/Toolbar.tsx","../src/components/composed/TypingIndicator.tsx","../src/components/composed/charts/AreaChart.tsx","../src/components/composed/charts/BarChart.tsx","../src/components/composed/charts/DistributionChart.tsx","../src/components/composed/charts/DonutChart.tsx","../src/components/composed/charts/LineChart.tsx","../src/sections/AssistantDock.tsx","../src/sections/SidebarNav.tsx"],"sourcesContent":["/*\n * FOUNDATION TOKENS — the bottom of the hierarchy (Foundation → Primitives →\n * Components → Sections). Values are NOT duplicated here: colors/radii live\n * in ONE place (src/index.css :root, the shadcn CSS-variable contract mapped\n * to our brand). This module exposes them as named references so every layer\n * above imports `color.accent`, not the string \"var(--accent)\" or, worse, a\n * hardcoded hex — that duplication is exactly the bug that slipped into an\n * earlier SidebarNav pass and got caught.\n *\n * Spacing and type ARE real scales (not just CSS var passthroughs) because\n * komanda.html/dashboard.html don't define one centrally — this synthesizes\n * one from the values actually observed across the source pages, so every\n * primitive built on top picks from a shared scale instead of inventing\n * one-off pixel values per component.\n */\n\n/** Color — ONE place, every color, named by role. References to the CSS\n * custom properties defined in index.css; values live there ONCE, this is\n * just a typed name for each. (Previously split into `color` (shadcn's\n * contract slots) and a separate `brand` object (orange/green/warn/plum) —\n * merged because that split actively hid a bug: shadcn's own `--accent`\n * slot is its internal hover fill (cream-2, == `muted`), which collided in\n * name with our real brand orange in the other object. One namespace, no\n * same-named-different-color trap.) */\nexport const color = {\n // --- page / surface ---\n background: \"var(--background)\", // cream\n foreground: \"var(--foreground)\", // ink\n card: \"var(--card)\", // 60% glass island\n cardForeground: \"var(--card-foreground)\",\n popover: \"var(--popover)\", // paper-warm — stays opaque for readability\n popoverForeground: \"var(--popover-foreground)\",\n ink3: \"var(--brand-ink-3)\", // #a3a094 — tertiary ink, one step past mutedForeground. A neutral text tone (no-data states), not a status color — lives here, not with the semantic roles below.\n\n // --- controls ---\n primary: \"var(--primary)\", // ink — default filled CTA (dark, not orange)\n primaryForeground: \"var(--primary-foreground)\",\n secondary: \"var(--secondary)\", // paper (white) — quiet button, chips\n secondaryForeground: \"var(--secondary-foreground)\",\n muted: \"var(--muted)\", // cream-2 — hover fill, tag pills (== shadcn's own --accent slot)\n mutedForeground: \"var(--muted-foreground)\", // ink-2\n border: \"var(--border)\", // transparent BY RULE (see DESIGN.md) — do not use for a visible line, use `input`\n input: \"var(--input)\", // line-2 — the one hairline that's meant to be seen (inputs, dividers)\n ring: \"var(--ring)\", // == accent — focus ring is brand orange\n destructive: \"var(--destructive)\", // shadcn's own contract slot — wired to `danger` below (a real red, not accent)\n\n // --- brand + semantic (komanda's own palette, no shadcn-contract slot) ---\n // Each role: base / foreground / hover / soft / softForeground. foreground\n // is picked by measured WCAG contrast (see index.css), not assumed white;\n // hover is color-mix() off base (recomputes automatically, never drifts);\n // soft is the pale badge fill, softForeground is base-on-soft (the pattern\n // Avatar's ToneGreen/ToneWarn already use).\n accent: \"var(--brand-accent)\", // #f75506 — THE brand color. One per screen, rare.\n accentForeground: \"var(--brand-accent-foreground)\",\n accentHover: \"var(--brand-accent-hover)\",\n accentSoft: \"var(--brand-accent-soft)\", // #fdeee5\n accentSoftForeground: \"var(--brand-accent-soft-foreground)\",\n accentGradient: \"var(--brand-accent-gradient)\", // komanda's ONE gradient — .primary.askbtn on the assistant dock\n\n green: \"var(--brand-green)\", // #1f7a54 — score-band \"good\" (komanda's own band(): score ≥7)\n greenForeground: \"var(--brand-green-foreground)\",\n greenHover: \"var(--brand-green-hover)\",\n greenSoft: \"var(--brand-green-soft)\",\n greenSoftForeground: \"var(--brand-green-soft-foreground)\",\n\n warn: \"var(--brand-warn)\", // #b8862f — score-band \"caution\" (band(): 5 ≤ score < 7)\n warnForeground: \"var(--brand-warn-foreground)\",\n warnHover: \"var(--brand-warn-hover)\",\n warnSoft: \"var(--brand-warn-soft)\",\n warnSoftForeground: \"var(--brand-warn-soft-foreground)\",\n\n plum: \"var(--brand-plum)\", // #7a4d7d — role tint: network manager (not a score band)\n plumForeground: \"var(--brand-plum-foreground)\",\n plumHover: \"var(--brand-plum-hover)\",\n plumSoft: \"var(--brand-plum-soft)\",\n plumSoftForeground: \"var(--brand-plum-soft-foreground)\",\n\n danger: \"var(--brand-danger)\", // #b23a2e — real destructive red. NOT accent — neither source page has a red, this is a deliberate addition (see index.css)\n dangerForeground: \"var(--brand-danger-foreground)\",\n dangerHover: \"var(--brand-danger-hover)\",\n dangerSoft: \"var(--brand-danger-soft)\",\n dangerSoftForeground: \"var(--brand-danger-soft-foreground)\",\n\n // --- charts ---\n chart1: \"var(--chart-1)\",\n chart2: \"var(--chart-2)\",\n chart3: \"var(--chart-3)\",\n chart4: \"var(--chart-4)\",\n chart5: \"var(--chart-5)\",\n chartSurface: \"var(--brand-chart-surface)\", // #fbfaf7 — quiet backdrop for data-viz surfaces (dashboard-prototype.html only)\n scrim: \"var(--brand-scrim)\", // rgba(0,0,0,.1) — dark low-opacity backdrop behind a heavily blurred overlay (assistant dock)\n} as const\n\ntype ColorKey = keyof typeof color\n\n/** Keys of `color` that have all 4 role siblings (`XForeground`/`XHover`/\n * `XSoft`/`XSoftForeground`) — computed at the TYPE level too, not just at\n * runtime, so `color[`${role}Foreground`]` type-checks under `strict`\n * without a cast. */\ntype SemanticRoleKey = {\n [K in ColorKey]: `${K}Foreground` extends ColorKey\n ? `${K}Hover` extends ColorKey\n ? `${K}Soft` extends ColorKey\n ? `${K}SoftForeground` extends ColorKey ? K : never\n : never\n : never\n : never\n}[ColorKey]\n\n/** Every \"full role\" name in `color` — derived from the naming convention\n * itself (a role is any key with matching `Foreground`/`Hover`/`Soft`/\n * `SoftForeground` siblings), not a second hand-maintained list. Add a new\n * role above (all 5 suffixed keys) and it appears here — and in\n * Foundation/Colors' story, which reads THIS — with zero other edits.\n * This is the fix for the class of bug `scrim` shipped with (built, wired\n * into a real component, invisible in Storybook because the demo story\n * hand-listed variants instead of reading the source object). */\nexport const semanticRoles = (Object.keys(color) as ColorKey[]).filter((key): key is SemanticRoleKey => {\n if (\n key.endsWith(\"Foreground\") || key.endsWith(\"Hover\") ||\n key.endsWith(\"Soft\") || key.endsWith(\"SoftForeground\")\n ) return false\n return (\n `${key}Foreground` in color && `${key}Hover` in color &&\n `${key}Soft` in color && `${key}SoftForeground` in color\n )\n})\n\n/** The `chartN` keys in `color`, in order — same reasoning as\n * `semanticRoles`: derived from the naming pattern, so a 6th chart color\n * added to `color` above shows up in Foundation/Colors' Charts story with\n * no edit there. */\nexport const chartKeys = (Object.keys(color) as (keyof typeof color)[])\n .filter((key) => /^chart\\d+$/.test(key))\n .sort((a, b) => Number(a.slice(5)) - Number(b.slice(5)))\n\n/** Radius scale — named steps over the single --radius token (index.css). */\nexport const radius = {\n sm: \"var(--radius-sm)\",\n md: \"var(--radius-md)\",\n lg: \"var(--radius-lg)\",\n xl: \"var(--radius-xl)\",\n \"2xl\": \"var(--radius-2xl)\",\n pill: 999,\n} as const\n\n/** Spacing scale (px) — synthesized from values actually used across\n * komanda.html/dashboard.html (6/8/12/16/18/20/24/28...), rounded into a\n * shared step scale so primitives/components pick from one set. */\nexport const spacing = {\n none: 0,\n xs: 4,\n sm: 8,\n md: 12,\n base: 16,\n lg: 20,\n xl: 24,\n \"2xl\": 32,\n \"3xl\": 40,\n \"4xl\": 56,\n} as const\n\nexport type SpacingKey = keyof typeof spacing\n\n/** Type scale (px + line-height) — the three named tokens komanda.html\n * declares itself (--text-footnote/caption/body) extended upward with the\n * heading sizes actually found in its markup (18/20/24), plus one larger\n * step (`display`) for hero-scale contexts not yet exercised by either\n * source page. */\nexport const type = {\n footnote: { size: 12, lineHeight: 1.45 }, // var(--text-footnote)\n caption: { size: 14, lineHeight: 1.45 }, // var(--text-caption)\n body: { size: 16, lineHeight: 1.55 }, // var(--text-body)\n subhead: { size: 18, lineHeight: 1.35 },\n title: { size: 20, lineHeight: 1.3 },\n headline: { size: 24, lineHeight: 1.25 },\n display: { size: 32, lineHeight: 1.15 },\n} as const\n\nexport type TypeKey = keyof typeof type\n\n/** Font family — self-hosted Struve, see brand-overrides.css for @font-face. */\nexport const font = {\n sans: \"var(--font-sans)\",\n} as const\n","import type { CSSProperties, ElementType, HTMLAttributes, ReactNode } from \"react\"\nimport { spacing, radius as radiusScale, type SpacingKey } from \"./tokens\"\n\n/*\n * FOUNDATION — LAYOUT PRIMITIVES. The bottom of the hierarchy (Foundation →\n * Primitives → Components → Sections). Pure BEHAVIOR containers (no color/\n * surface), responsive BY DESIGN, that every layer above is built on. A Card\n * is not a monolith — it's a Box + surface styling from the Primitives tier.\n * A row of cards is a Grid that reflows itself. No hardcoded pixel layouts,\n * no manual breakpoints for the common cases.\n *\n * Spacing/radius accept either a raw length (number → px, or any CSS length\n * string) OR a named key from the Foundation scale (`tokens.ts` `spacing`/\n * `radius`) — e.g. `p=\"lg\"` resolves to the same 20px every other component\n * on the scale uses, instead of a one-off value invented per call site.\n *\n * Values are inline styles so there's no Tailwind JIT dependency, and\n * responsiveness is intrinsic: Grid uses auto-fit/minmax (reflows by width),\n * Flex wraps. This is the Radix-Themes Box/Flex/Grid/Container model on our\n * stack, now wired to our own scale.\n */\n\ntype Len = number | string | SpacingKey\n\nconst isSpacingKey = (v: unknown): v is SpacingKey =>\n typeof v === \"string\" && v in spacing\n\n/** Resolve a length: spacing-scale key → its px number; number → px string;\n * any other string (e.g. \"1rem\", \"50%\") passes through untouched. */\nconst space = (v?: Len): string | undefined => {\n if (v == null) return undefined\n if (isSpacingKey(v)) return `${spacing[v]}px`\n return typeof v === \"number\" ? `${v}px` : v\n}\n\ntype RadiusKey = keyof typeof radiusScale\nconst isRadiusKey = (v: unknown): v is RadiusKey =>\n typeof v === \"string\" && v in radiusScale\n\n/** Resolve a radius: radius-scale key → the matching CSS var/number; else a\n * raw length, same rules as `space`. */\nconst rad = (v?: Len): string | number | undefined => {\n if (v == null) return undefined\n if (isRadiusKey(v)) return radiusScale[v]\n return typeof v === \"number\" ? `${v}px` : v\n}\n\n// Everything NOT in our own explicit list passes straight through to the\n// underlying element (onClick, onMouseEnter, aria-*, type, disabled, ...).\n// Box didn't do this originally — it silently dropped any prop it didn't\n// know about, which meant Box/Surface could never be made interactive\n// (found while building a clickable Chip: FilterSelect's clear button had\n// already worked around this by reaching for a raw <button> instead of\n// Surface, rather than the gap getting fixed at the root).\ntype BoxOwnProps = {\n as?: ElementType\n p?: Len; px?: Len; py?: Len\n radius?: Len\n width?: Len; maxWidth?: Len; minWidth?: Len\n grow?: boolean\n className?: string\n style?: CSSProperties\n children?: ReactNode\n}\ntype BoxProps = BoxOwnProps & Omit<HTMLAttributes<HTMLElement>, keyof BoxOwnProps>\n\n/** Box — the base container. The thing a Card (or anything) is built ON. */\nexport function Box({\n as: As = \"div\", p, px, py, radius, width, maxWidth, minWidth, grow, className, style, children, ...rest\n}: BoxProps) {\n return (\n <As\n {...rest}\n className={className}\n style={{\n padding: space(p),\n paddingInline: space(px),\n paddingBlock: space(py),\n borderRadius: rad(radius),\n width: space(width),\n maxWidth: space(maxWidth),\n minWidth: minWidth != null ? space(minWidth) : 0,\n flexGrow: grow ? 1 : undefined,\n ...style,\n }}\n >\n {children}\n </As>\n )\n}\n\ntype FlexProps = BoxProps & {\n direction?: \"row\" | \"column\"\n gap?: Len\n align?: CSSProperties[\"alignItems\"]\n justify?: CSSProperties[\"justifyContent\"]\n wrap?: boolean\n}\n\n/** Flex — a flex container. Wraps by default → naturally responsive. */\nexport function Flex({\n direction = \"row\", gap = \"md\", align, justify, wrap = true, style, children, ...box\n}: FlexProps) {\n return (\n <Box\n {...box}\n style={{\n display: \"flex\",\n flexDirection: direction,\n gap: space(gap),\n alignItems: align,\n justifyContent: justify,\n flexWrap: wrap ? \"wrap\" : \"nowrap\",\n ...style,\n }}\n >\n {children}\n </Box>\n )\n}\n\n/** Stack — Flex preset for the common vertical layout case. */\nexport function Stack({ gap = \"base\", ...props }: Omit<FlexProps, \"direction\">) {\n return <Flex direction=\"column\" gap={gap} {...props} />\n}\n\ntype GridProps = BoxProps & {\n /** cards reflow: as many minColWidth-wide columns as fit, each stretching */\n minColWidth?: Len\n /** OR a fixed column count */\n columns?: number\n gap?: Len\n align?: CSSProperties[\"alignItems\"]\n}\n\n/** Grid — auto-fit reflow (intrinsically responsive, no breakpoints needed). */\nexport function Grid({\n minColWidth = 280, columns, gap = \"base\", align = \"stretch\", style, children, ...box\n}: GridProps) {\n return (\n <Box\n {...box}\n style={{\n display: \"grid\",\n gridTemplateColumns: columns\n ? `repeat(${columns}, minmax(0, 1fr))`\n : `repeat(auto-fit, minmax(min(${space(minColWidth)}, 100%), 1fr))`,\n gap: space(gap),\n alignItems: align,\n ...style,\n }}\n >\n {children}\n </Box>\n )\n}\n\n/** Container — max-width centered content column. */\nexport function Container({ size = 1280, style, children, ...box }: BoxProps & { size?: Len }) {\n return (\n <Box {...box} style={{ width: \"100%\", maxWidth: space(size), marginInline: \"auto\", ...style }}>\n {children}\n </Box>\n )\n}\n","import type { ComponentProps, CSSProperties } from \"react\"\nimport { Box } from \"./layout\"\nimport { color } from \"./tokens\"\n\n/*\n * Surface — still Foundation, one step above the bare Box. Box is pure\n * behavior (no color); Surface adds exactly one thing — a background — from\n * a fixed set of token variants, and nothing else (no content, no specific\n * identity). That's the test for staying in Foundation rather than becoming\n * a Primitive: nothing \"uses\" Surface as an ingredient the way a Card uses\n * Text or Icon — Surface IS the thing a Card's shell is built directly from\n * (\"Box + surface styling\" — see Foundation/Layout's BoxIsTheBase story).\n *\n * `description` here isn't decorative — Foundation/Surface's demo story\n * reads this object directly (`Object.entries(VARIANTS)`) instead of\n * hand-listing each variant. Add a variant here and it appears in Storybook\n * with no story-file edit — the same self-generating pattern already used\n * by the Spacing/Typography/Radius/Icon galleries. A variant that's\n * declared here but never wired into a story is exactly the bug that\n * shipped with `scrim` (built, used in AssistantDock, invisible in\n * Storybook until someone happened to notice and ask \"where is it?\").\n */\n\nconst VARIANTS = {\n glass: {\n style: { background: color.card, backdropFilter: \"blur(10px)\" } as CSSProperties,\n description: \"60% + blur — карточки-острова\",\n },\n paper: {\n style: { background: color.secondary } as CSSProperties,\n description: \"непрозрачный белый — чипы, попапы\",\n },\n muted: {\n style: { background: color.muted } as CSSProperties,\n description: \"hover / выбранное состояние\",\n },\n plain: {\n style: { background: \"transparent\" } as CSSProperties,\n description: \"без фона — только контур\",\n },\n scrim: {\n style: { background: color.scrim, backdropFilter: \"blur(40px) saturate(1.4)\" } as CSSProperties,\n description: \"тёмная подложка + сильный блюр — фон позади оверлей-панели\",\n },\n} satisfies Record<string, { style: CSSProperties; description: string }>\n\nexport type SurfaceVariant = keyof typeof VARIANTS\n\n/** The variant registry itself — Foundation/Surface's story iterates this\n * directly instead of hand-listing each variant (see file header). */\nexport const SURFACE_VARIANTS = VARIANTS\n\nexport type SurfaceProps = ComponentProps<typeof Box> & {\n variant?: SurfaceVariant\n}\n\nexport function Surface({ variant = \"glass\", radius = \"xl\", style, ...box }: SurfaceProps) {\n const { backdropFilter, ...rest } = VARIANTS[variant].style\n return (\n <Box\n radius={radius}\n style={{\n ...rest,\n WebkitBackdropFilter: backdropFilter,\n backdropFilter,\n ...style,\n }}\n {...box}\n />\n )\n}\n","import type { CSSProperties, ReactNode } from \"react\"\nimport \"./row.css\"\n\n/*\n * TitledRow — see row.css for why this exists and why it needs real CSS.\n * `side` is optional — omit it for a title+main-only row (`.srow.no-side`\n * in both source pages).\n */\nexport type TitledRowProps = {\n title?: ReactNode\n side?: ReactNode\n rail?: number\n gap?: number\n children: ReactNode\n}\n\nexport function TitledRow({ title, side, rail = 180, gap = 20, children }: TitledRowProps) {\n return (\n <section\n className={`foundation-row${side ? \"\" : \" foundation-row--no-side\"}`}\n style={{ \"--foundation-row-rail\": `${rail}px`, \"--foundation-row-gap\": `${gap}px` } as CSSProperties}\n >\n {title && <div className=\"foundation-row-title\">{title}</div>}\n <div className=\"foundation-row-main\">{children}</div>\n {side && <div className=\"foundation-row-side\">{side}</div>}\n </section>\n )\n}\n","import type { ReactNode } from \"react\"\n\n/*\n * AppShell — the page-layout invariant every real page lives in: a sidebar\n * rail + a max-width content column with asymmetric padding. Verbatim from\n * BOTH source pages' own `.app`/`.wrap` (komanda.html AND\n * dashboard-prototype.html declare the identical rule:\n * `.wrap{flex:1;min-width:0;max-width:1280px;margin:0 auto;\n * padding:26px 24px 90px}`) — this is a cross-page invariant, not a\n * one-off, which is why it lives in Foundation next to TitledRow rather\n * than being hand-rolled per page.\n *\n * The sidebar's own 8px detachment lives on the sidebar itself (see\n * SidebarNav.css's `margin: 8px`) — AppShell does NOT add its own padding\n * around the sidebar. A previous version of this component existed, got\n * deleted during an unrelated cleanup, and every page since then hand-rolled\n * its own (wrong) shell inline — this replaces that ad hoc duplication.\n */\nexport function AppShell({ sidebar, children }: { sidebar: ReactNode; children: ReactNode }) {\n return (\n <div style={{ display: \"flex\", minHeight: \"100vh\" }}>\n {sidebar}\n <div style={{ flex: 1, minWidth: 0, maxWidth: 1280, marginInline: \"auto\", padding: \"26px 24px 90px\" }}>\n {children}\n </div>\n </div>\n )\n}\n","import {\n House,\n UsersThree,\n ShoppingCartSimple,\n BookOpen,\n Gear,\n MagnifyingGlass,\n Plus,\n Minus,\n CaretDown,\n CaretRight,\n CaretUp,\n ArrowUp,\n ArrowDown,\n ArrowRight,\n Star,\n Warning,\n Check,\n X,\n Bell,\n DotsThree,\n TrendUp,\n TrendDown,\n Sparkle,\n Lock,\n LockOpen,\n Microphone,\n Info,\n Lightbulb,\n ChartLineUp,\n SquaresFour,\n PaperPlaneRight,\n type Icon as PhosphorIcon,\n type IconWeight,\n} from \"@phosphor-icons/react\"\n\n/*\n * Icon — a BASE PRIMITIVE. Icons are Phosphor (@phosphor-icons/react): bundled\n * with the app (tree-shakeable, no CDN / no runtime fetch → survives our\n * self-contained-HTML constraint), and Phosphor is the DECLARED icon set for\n * the system. Higher components never import a glyph directly — they consume\n * <Icon name=\"…\" />, so the icon vocabulary is one governed registry, swappable\n * in one place, and the \"which icon means what\" mapping lives here, not scattered.\n */\n\nconst REGISTRY = {\n // app navigation\n home: House,\n team: UsersThree,\n orders: ShoppingCartSimple,\n knowledge: BookOpen,\n settings: Gear,\n // common actions / affordances\n search: MagnifyingGlass,\n add: Plus,\n remove: Minus,\n close: X,\n check: Check,\n more: DotsThree,\n bell: Bell,\n // carets / arrows\n \"caret-down\": CaretDown,\n \"caret-right\": CaretRight,\n \"caret-up\": CaretUp,\n \"arrow-up\": ArrowUp,\n \"arrow-down\": ArrowDown,\n \"arrow-right\": ArrowRight,\n // status / semantics\n star: Star,\n warning: Warning,\n \"trend-up\": TrendUp,\n \"trend-down\": TrendDown,\n spark: Sparkle,\n lock: Lock,\n \"lock-open\": LockOpen,\n voice: Microphone,\n info: Info,\n lightbulb: Lightbulb,\n \"chart-line-up\": ChartLineUp,\n dashboard: SquaresFour,\n send: PaperPlaneRight,\n} as const\n\nexport type IconName = keyof typeof REGISTRY\n\nexport const ICON_NAMES = Object.keys(REGISTRY) as IconName[]\n\nexport type IconProps = {\n name: IconName\n /** px; matches the surrounding text/control size */\n size?: number\n weight?: IconWeight\n color?: string\n className?: string\n /** decorative by default; pass a label to expose it to AT */\n label?: string\n}\n\nexport function Icon({\n name,\n size = 20,\n weight = \"regular\",\n color = \"currentColor\",\n className,\n label,\n}: IconProps) {\n const Glyph: PhosphorIcon = REGISTRY[name]\n return (\n <Glyph\n size={size}\n weight={weight}\n color={color}\n className={className}\n aria-hidden={label ? undefined : true}\n aria-label={label}\n role={label ? \"img\" : undefined}\n />\n )\n}\n","import type { CSSProperties } from \"react\"\nimport { radius as radiusScale } from \"@/foundation\"\n\n/*\n * Image — a BASE PRIMITIVE. A genuine gap: neither Radix nor shadcn ship an\n * <img> wrapper (Avatar covers the circular-fallback case, not a general\n * photo/illustration slot). This is that missing primitive — object-fit +\n * Foundation's radius scale + a lazy-load default, nothing else.\n */\n\ntype RadiusKey = keyof typeof radiusScale\n\nexport type ImageProps = {\n src: string\n /** required — decorative images should use alt=\"\" explicitly, not omit it */\n alt: string\n width?: number | string\n height?: number | string\n fit?: \"cover\" | \"contain\"\n radius?: RadiusKey | number | string\n loading?: \"lazy\" | \"eager\"\n className?: string\n style?: CSSProperties\n}\n\nexport function Image({\n src,\n alt,\n width,\n height,\n fit = \"cover\",\n radius,\n loading = \"lazy\",\n className,\n style,\n}: ImageProps) {\n const resolvedRadius =\n radius == null\n ? undefined\n : typeof radius === \"number\"\n ? `${radius}px`\n : radius in radiusScale\n ? radiusScale[radius as RadiusKey]\n : radius\n\n return (\n <img\n src={src}\n alt={alt}\n loading={loading}\n className={className}\n width={typeof width === \"number\" ? width : undefined}\n height={typeof height === \"number\" ? height : undefined}\n style={{\n display: \"block\",\n width,\n height,\n objectFit: fit,\n borderRadius: resolvedRadius,\n ...style,\n }}\n />\n )\n}\n","import type { CSSProperties, ElementType, ReactNode } from \"react\"\nimport { type as typeScale, type TypeKey, color } from \"@/foundation\"\n\n/*\n * Text — a BASE PRIMITIVE. Every typographic string in a higher-tier\n * component should render through this, not a raw <span className=\"text-sm\">\n * — that way there's exactly one place that knows what \"caption\" or\n * \"headline\" means in px/line-height (Foundation's `type` scale), and one\n * place that resolves a semantic color name to the real CSS variable\n * (Foundation's `color`/`brand`), instead of both drifting per call site.\n */\n\nexport type TextProps = {\n /** which element this renders as — independent of visual size */\n as?: ElementType\n /** Foundation type-scale step */\n size?: TypeKey\n weight?: CSSProperties[\"fontWeight\"]\n /** a resolved token value, e.g. `color.mutedForeground` or `color.accent` */\n color?: string\n align?: CSSProperties[\"textAlign\"]\n /** clip to one line with an ellipsis instead of wrapping */\n truncate?: boolean\n className?: string\n style?: CSSProperties\n children?: ReactNode\n}\n\nexport function Text({\n as: As = \"span\",\n size = \"body\",\n weight,\n color: textColor = color.foreground,\n align,\n truncate,\n className,\n style,\n children,\n}: TextProps) {\n const step = typeScale[size]\n return (\n <As\n className={className}\n style={{\n fontSize: step.size,\n lineHeight: step.lineHeight,\n fontWeight: weight,\n color: textColor,\n textAlign: align,\n ...(truncate\n ? { overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }\n : null),\n ...style,\n }}\n >\n {children}\n </As>\n )\n}\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn(\"absolute top-2 right-2\", className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n","import * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\n \"aspect-square size-full rounded-full object-cover\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Separator } from \"@/components/ui/separator\"\n\nconst buttonGroupVariants = cva(\n \"group/button-group flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"div\"\n\n return (\n <Comp\n className={cn(\n \"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Separator as SeparatorPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\n \"font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-(--card-spacing)\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\nimport type { TooltipValueType } from \"recharts\"\n\nimport { cn } from \"@/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const\ntype TooltipNameType = number | string\n\nexport type ChartConfig = Record<\n string,\n {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n>\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n initialDimension = INITIAL_DIMENSION,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n initialDimension?: {\n width: number\n height: number\n }\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer\n initialDimension={initialDimension}\n >\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme ?? config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ??\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n } & Omit<\n RechartsPrimitive.DefaultTooltipContentProps<\n TooltipValueType,\n TooltipNameType\n >,\n \"accessibilityLayer\"\n >) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey ?? item?.dataKey ?? item?.name ?? \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? (config[label]?.label ?? label)\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey ?? item.name ?? item.dataKey ?? \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color ?? item.payload?.fill ?? item.color\n\n return (\n <div\n key={index}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ?? item.name}\n </span>\n </div>\n {item.value != null && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {typeof item.value === \"number\"\n ? item.value.toLocaleString()\n : String(item.value)}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n hideIcon?: boolean\n nameKey?: string\n} & RechartsPrimitive.DefaultLegendContentProps) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey ?? item.dataKey ?? \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={index}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { CheckIcon } from \"lucide-react\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none [&>svg]:size-3.5\"\n >\n <CheckIcon\n />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { XIcon } from \"lucide-react\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n <Button\n variant=\"ghost\"\n className=\"absolute top-2 right-2\"\n size=\"icon-sm\"\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </Button>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\n \"font-heading text-base leading-none font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n align={align}\n className={cn(\"z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon\n />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon\n />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\"z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\"flex max-w-sm flex-col items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\n \"font-heading text-sm font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n}\n","import { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/ui/label\"\nimport { Separator } from \"@/components/ui/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-sm font-normal text-destructive\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","import * as React from \"react\"\nimport { Label as LabelPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\":\n \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Separator } from \"@/components/ui/separator\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\n \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-2\", className)}\n {...props}\n />\n )\n}\n\nconst itemVariants = cva(\n \"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"border-transparent bg-muted/50\",\n },\n size: {\n default: \"gap-2.5 px-3 py-2.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"div\"\n return (\n <Comp\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n className={cn(itemVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n \"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n}\n","import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { NavigationMenu as NavigationMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n )\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n )\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\"\n)\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon className=\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\" aria-hidden=\"true\" />\n </NavigationMenuPrimitive.Trigger>\n )\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"top-0 left-0 w-full p-1 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n \"absolute top-full left-0 isolate z-50 flex justify-center\"\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 duration-100 md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:zoom-in-90 data-closed:animate-out data-closed:zoom-out-90\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n )\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"flex items-center gap-0.5\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <Button\n asChild\n variant={isActive ? \"outline\" : \"ghost\"}\n size={size}\n className={cn(className)}\n >\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n {...props}\n />\n </Button>\n )\n}\n\nfunction PaginationPrevious({\n className,\n text = \"Previous\",\n ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"pl-1.5!\", className)}\n {...props}\n >\n <ChevronLeftIcon data-icon=\"inline-start\" />\n <span className=\"hidden sm:block\">{text}</span>\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({\n className,\n text = \"Next\",\n ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"pr-1.5!\", className)}\n {...props}\n >\n <span className=\"hidden sm:block\">{text}</span>\n <ChevronRightIcon data-icon=\"inline-end\" />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\n \"flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <MoreHorizontalIcon\n />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"size-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid w-full gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex size-4 items-center justify-center\"\n >\n <span className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ChevronDownIcon, CheckIcon, ChevronUpIcon } from \"lucide-react\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n data-align-trigger={position === \"item-aligned\"}\n className={cn(\"relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\", position ===\"popper\"&&\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\", className )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n data-position={position}\n className={cn(\n \"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)\",\n position === \"popper\" && \"\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"px-1.5 py-1 text-xs text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon\n />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon\n />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","import { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\nimport { CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, Loader2Icon } from \"lucide-react\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n success: (\n <CircleCheckIcon className=\"size-4\" />\n ),\n info: (\n <InfoIcon className=\"size-4\" />\n ),\n warning: (\n <TriangleAlertIcon className=\"size-4\" />\n ),\n error: (\n <OctagonXIcon className=\"size-4\" />\n ),\n loading: (\n <Loader2Icon className=\"size-4 animate-spin\" />\n ),\n }}\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n toastOptions={{\n classNames: {\n toast: \"cn-toast\",\n },\n }}\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","import { cn } from \"@/lib/utils\"\nimport { Loader2Icon } from \"lucide-react\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon data-slot=\"spinner\" role=\"status\" aria-label=\"Loading\" className={cn(\"size-4 animate-spin\", className)} {...props} />\n )\n}\n\nexport { Spinner }\n","import * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\"\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Tabs as TabsPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"group/tabs flex gap-2 data-horizontal:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 text-sm outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border border-input bg-transparent hover:bg-muted\",\n },\n size: {\n default:\n \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n sm: \"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","import * as React from \"react\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n orientation?: \"horizontal\" | \"vertical\"\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 2,\n orientation: \"horizontal\",\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 2,\n orientation = \"horizontal\",\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n orientation?: \"horizontal\" | \"vertical\"\n }) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n data-orientation={orientation}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n \"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider\n value={{ variant, size, spacing, orientation }}\n >\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant = \"default\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n \"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","import * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\n","import type { ReactNode } from \"react\"\nimport { Stack, color } from \"@/foundation\"\nimport { Icon, type IconName } from \"@/primitives/Icon\"\nimport { Text } from \"@/primitives/Text\"\n\n/*\n * AdviceCard — Components tier (Icon + Text + Foundation Stack). Found\n * missing while assembling dashboard-prototype.html: `.pot-card` (icon +\n * a big highlighted value + supporting text + a secondary note) doesn't\n * map onto Alert (that's a flat notice, no value slot) or EmptyState\n * (no icon-as-identity + value emphasis). Lives in a side-rail (see\n * Foundation's TitledRow `side` slot), so it's capped at ~168px, matching\n * the source rail's usable width.\n */\nexport type AdviceCardProps = {\n icon: IconName\n /** ink (default, most advice) or accent (rare — the source reserves this for a genuine highlight, e.g. a new record) */\n tone?: \"ink\" | \"accent\"\n value: ReactNode\n text: ReactNode\n note?: ReactNode\n}\n\nexport function AdviceCard({ icon, tone = \"ink\", value, text, note }: AdviceCardProps) {\n const iconColor = tone === \"accent\" ? color.accent : color.foreground\n return (\n <Stack gap=\"xs\" style={{ maxWidth: 168 }}>\n <Icon name={icon} size={40} color={iconColor} />\n {/* big number: regular weight + tight line-height, per DESIGN.md's\n own rule for large numbers — reuses the `display` type step. */}\n <Text as=\"span\" size=\"display\" weight={400}>{value}</Text>\n <Text as=\"span\" size=\"caption\" style={{ opacity: 0.72 }}>{text}</Text>\n {note && (\n <Text as=\"span\" size=\"footnote\" style={{ opacity: 0.68, marginTop: 2 }}>{note}</Text>\n )}\n </Stack>\n )\n}\n","import type { ButtonHTMLAttributes } from \"react\"\nimport { Surface, color } from \"@/foundation\"\n\n/*\n * Chip — Components tier (Surface + Box's now-forwarded onClick). Found\n * missing while rebuilding komanda.html's assistant dock: `.askchip`\n * (suggestion pills — \"Кто требует внимания?\" etc.) is a clickable pill on\n * the same 60%-glass token as our `glass` Surface variant, just as a real\n * <button>. Only exists now because Box forwards DOM props — see\n * foundation/layout.tsx.\n */\nexport function Chip({ children, style, ...props }: ButtonHTMLAttributes<HTMLButtonElement>) {\n return (\n <Surface\n as=\"button\"\n type=\"button\"\n variant=\"glass\"\n radius=\"pill\"\n style={{\n border: \"none\",\n cursor: \"pointer\",\n fontSize: 16,\n fontWeight: 500,\n color: color.foreground,\n padding: \"8px 14px\",\n ...style,\n }}\n {...props}\n >\n {children}\n </Surface>\n )\n}\n","import type { ReactNode } from \"react\"\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\"\n\n/*\n * FormField — a Components-tier composite: shadcn's Field/FieldLabel/\n * FieldDescription/FieldError (Primitives-tier building blocks) wired around\n * whatever control primitive you pass in (Input, Select, Checkbox, ...). This\n * is what every labeled control in a form should use instead of hand-rolling\n * label+control+error markup per call site.\n */\ntype FormFieldProps = {\n label: string\n htmlFor?: string\n description?: string\n error?: string\n children: ReactNode\n}\n\nexport function FormField({ label, htmlFor, description, error, children }: FormFieldProps) {\n return (\n <Field data-invalid={error ? true : undefined}>\n <FieldLabel htmlFor={htmlFor}>{label}</FieldLabel>\n {children}\n {description && !error && <FieldDescription>{description}</FieldDescription>}\n {error && <FieldError>{error}</FieldError>}\n </Field>\n )\n}\n","import { Surface, color } from \"@/foundation\"\nimport { Icon } from \"@/primitives/Icon\"\nimport {\n Select, SelectContent, SelectItem, SelectTrigger, SelectValue,\n} from \"@/components/ui/select\"\nimport { Separator } from \"@/components/ui/separator\"\n\n/*\n * FilterSelect — Components tier (Select primitive + Separator + Icon,\n * wrapped in a Surface pill). Found missing while assembling\n * dashboard-prototype.html: `.fpill` is a select styled as a paper pill\n * that grows a clear (\"×\") button once a value is chosen — Select/Field/\n * Search as built don't cover the clearable-once-chosen behavior.\n *\n * The source's own select is borderless (the outer pill's paper background\n * IS the visible boundary) — our shadcn Select defaults to a visible\n * `border-input` hairline (deliberately, for plain standalone inputs), so\n * that border is stripped here specifically, on the outer Surface instead.\n */\nexport type FilterSelectProps = {\n label: string\n placeholder: string\n value?: string\n onValueChange?: (value: string) => void\n onClear?: () => void\n options: { value: string; label: string }[]\n}\n\nexport function FilterSelect({ label, placeholder, value, onValueChange, onClear, options }: FilterSelectProps) {\n return (\n <Surface\n variant=\"paper\"\n radius=\"pill\"\n style={{ display: \"inline-flex\", alignItems: \"stretch\", overflow: \"hidden\", width: \"max-content\" }}\n >\n <Select value={value} onValueChange={onValueChange}>\n <SelectTrigger\n aria-label={label}\n style={{ border: \"none\", background: \"transparent\", borderRadius: 0 }}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((o) => (\n <SelectItem key={o.value} value={o.value}>{o.label}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n {value && (\n <>\n <Separator orientation=\"vertical\" />\n <button\n type=\"button\"\n onClick={onClear}\n aria-label={`Сбросить ${label.toLowerCase()}`}\n style={{\n width: 36, display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n border: \"none\", background: \"transparent\", color: color.ink3, cursor: \"pointer\", padding: 0,\n }}\n onMouseEnter={(e) => { e.currentTarget.style.background = color.muted; e.currentTarget.style.color = color.accent }}\n onMouseLeave={(e) => { e.currentTarget.style.background = \"transparent\"; e.currentTarget.style.color = color.ink3 }}\n >\n <Icon name=\"close\" size={14} />\n </button>\n </>\n )}\n </Surface>\n )\n}\n","import type { ReactNode } from \"react\"\nimport { Box, color } from \"@/foundation\"\n\n/*\n * MessageBubble — Components tier (Foundation Box + tokens). Found missing\n * while rebuilding komanda.html's assistant dock: `.bubble.user`/`.bubble.bot`\n * — a chat bubble with one \"notched\" corner (5px radius) pointing toward\n * its sender's side. User = dark ink fill; bot = plain paper.\n */\nexport function MessageBubble({ from, children }: { from: \"user\" | \"bot\"; children: ReactNode }) {\n const isUser = from === \"user\"\n return (\n <Box\n p=\"base\"\n radius=\"xl\"\n style={{\n maxWidth: \"90%\",\n alignSelf: isUser ? \"flex-end\" : \"flex-start\",\n background: isUser ? color.foreground : color.secondary,\n color: isUser ? color.background : color.foreground,\n fontSize: 16,\n lineHeight: 1.55,\n borderBottomRightRadius: isUser ? 5 : undefined,\n borderBottomLeftRadius: isUser ? undefined : 5,\n }}\n >\n {children}\n </Box>\n )\n}\n","import { InputGroup, InputGroupAddon, InputGroupInput } from \"@/components/ui/input-group\"\nimport { Icon } from \"@/primitives/Icon\"\n\n/*\n * Search — a Components-tier composite: InputGroup (Primitives-tier, shadcn)\n * + our Icon primitive as a leading addon. This is what every search field in\n * the product should use instead of hand-rolling an Input with an absolutely-\n * positioned icon.\n */\ntype SearchProps = {\n placeholder?: string\n value?: string\n onChange?: (value: string) => void\n className?: string\n}\n\nexport function Search({ placeholder = \"Поиск\", value, onChange, className }: SearchProps) {\n return (\n <InputGroup className={className}>\n <InputGroupAddon>\n <Icon name=\"search\" size={16} />\n </InputGroupAddon>\n <InputGroupInput\n placeholder={placeholder}\n value={value}\n onChange={onChange ? (e) => onChange(e.target.value) : undefined}\n />\n </InputGroup>\n )\n}\n","import type { ReactNode } from \"react\"\nimport { Toolbar as RadixToolbar } from \"radix-ui\"\nimport { Flex } from \"@/foundation\"\nimport { color, radius, spacing } from \"@/foundation\"\nimport \"./Toolbar.css\"\n\n/*\n * Toolbar — a COMPONENT (built from Primitives + Foundation). Radix has no\n * shadcn wrapper for this one (shadcn's registry doesn't ship a toolbar), so\n * this composes directly from `radix-ui`'s `Toolbar` export\n * (@radix-ui/react-toolbar) for the real behavior — roving tabindex focus\n * across buttons/toggles/links, orientation, RTL — and layers Foundation's\n * Flex + token scale on top for the visual shell, the same rule as every\n * other tier: behavior from Radix, values from Foundation, never hardcoded.\n */\n\nexport function Toolbar({\n children,\n orientation = \"horizontal\",\n bare = false,\n}: {\n children: ReactNode\n orientation?: \"horizontal\" | \"vertical\"\n /** Skip the muted-pill chrome — just the Radix roving-focus root + layout.\n * Use this when the toolbar holds exactly ONE already-styled group (e.g.\n * a lone ToolbarToggleGroup, which paints its own pill background) —\n * the default chrome is for combining multiple groups/separators/actions\n * under one shared housing (see the PeriodAndActions story). Without\n * `bare`, a single already-backgrounded group nests inside this one's\n * own background/radius, producing a visible pill-in-a-pill seam. */\n bare?: boolean\n}) {\n if (bare) {\n return (\n <RadixToolbar.Root asChild orientation={orientation}>\n <Flex align=\"center\" gap=\"md\">\n {children}\n </Flex>\n </RadixToolbar.Root>\n )\n }\n return (\n <RadixToolbar.Root asChild orientation={orientation}>\n <Flex\n align=\"center\"\n justify=\"between\"\n gap=\"md\"\n p=\"sm\"\n radius=\"lg\"\n style={{ background: color.muted }}\n >\n {children}\n </Flex>\n </RadixToolbar.Root>\n )\n}\n\n/** ToolbarGroup — a cluster of related controls (e.g. the period toggle). */\nexport function ToolbarGroup({ children }: { children: ReactNode }) {\n return (\n <Flex align=\"center\" gap=\"xs\">\n {children}\n </Flex>\n )\n}\n\n/** ToolbarToggleGroup — single-select segmented control (roving focus, real\n * radiogroup semantics) — e.g. Месяц / Неделя / День. */\nexport function ToolbarToggleGroup({\n value,\n onValueChange,\n children,\n}: {\n value: string\n onValueChange?: (v: string) => void\n children: ReactNode\n}) {\n return (\n <RadixToolbar.ToggleGroup\n type=\"single\"\n value={value}\n onValueChange={(v) => v && onValueChange?.(v)}\n asChild\n >\n <Flex gap=\"xs\" style={{ background: color.background, borderRadius: radius.pill, padding: spacing.xs }}>\n {children}\n </Flex>\n </RadixToolbar.ToggleGroup>\n )\n}\n\nexport function ToolbarToggleItem({\n value,\n children,\n}: {\n value: string\n children: ReactNode\n}) {\n return (\n <RadixToolbar.ToggleItem\n value={value}\n className=\"toolbar-toggle-item\"\n style={{\n // background/color are NOT set here — inline style always wins over\n // an external CSS rule regardless of specificity, which would make\n // Toolbar.css's `[data-state=\"on\"]` selector permanently dead (this\n // is exactly the bug that shipped: the active tab never highlighted\n // even though Radix's data-state was switching correctly). Both\n // states live in Toolbar.css instead.\n border: \"none\",\n borderRadius: radius.pill,\n padding: `${spacing.xs}px ${spacing.md}px`,\n fontSize: 14,\n cursor: \"pointer\",\n }}\n >\n {children}\n </RadixToolbar.ToggleItem>\n )\n}\n\n/** ToolbarSeparator — vertical divider between groups. Uses `color.input`\n * (komanda's own --line-2 \"visible hairline\" token), NOT `color.border` —\n * `--border` is deliberately transparent project-wide, which would make\n * this invisible (see the `[data-slot=\"separator\"]` note in\n * brand-overrides.css; this one needs its own fix since it's built on raw\n * Radix, not shadcn's Separator, so that CSS override doesn't reach it). */\nexport function ToolbarSeparator() {\n return (\n <RadixToolbar.Separator style={{ width: 1, height: 24, background: color.input }} />\n )\n}\n\n/** ToolbarButton — wraps our Button primitive so it participates in the\n * toolbar's roving-focus group instead of being a separate tab stop. */\nexport function ToolbarButton({ children }: { children: ReactNode }) {\n return <RadixToolbar.Button asChild>{children}</RadixToolbar.Button>\n}\n","import { Box, color } from \"@/foundation\"\nimport \"./TypingIndicator.css\"\n\n/*\n * TypingIndicator — Components tier. komanda.html's `.typing` — three\n * pulsing dots, staggered, shown while the assistant \"thinks\" before a\n * reply lands.\n */\nexport function TypingIndicator() {\n return (\n <Box\n radius=\"xl\"\n style={{\n display: \"inline-flex\",\n gap: 4,\n alignSelf: \"flex-start\",\n background: color.secondary,\n padding: \"13px 15px\",\n borderBottomLeftRadius: 5,\n }}\n >\n <span className=\"typing-dot\" />\n <span className=\"typing-dot\" style={{ animationDelay: \".2s\" }} />\n <span className=\"typing-dot\" style={{ animationDelay: \".4s\" }} />\n </Box>\n )\n}\n","import { AreaChart as RAreaChart, Area, XAxis, YAxis, CartesianGrid } from \"recharts\"\nimport { color } from \"@/foundation\"\nimport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, type ChartConfig } from \"@/components/ui/chart\"\nimport type { ChartSeries } from \"./BarChart\"\n\n/** AreaChart — Components tier, real Recharts (stacked area — cumulative trends). */\nexport type AreaChartProps = {\n data: Record<string, unknown>[]\n xKey: string\n series: ChartSeries[]\n height?: number\n showLegend?: boolean\n stacked?: boolean\n}\n\nexport function AreaChart({ data, xKey, series, height = 260, showLegend = series.length > 1, stacked = true }: AreaChartProps) {\n const config: ChartConfig = Object.fromEntries(series.map((s) => [s.key, { label: s.label, color: s.color }]))\n return (\n <ChartContainer config={config} style={{ height }} className=\"w-full\">\n <RAreaChart data={data}>\n <CartesianGrid vertical={false} stroke={color.input} />\n <XAxis dataKey={xKey} tickLine={false} axisLine={false} fontSize={12} />\n <YAxis tickLine={false} axisLine={false} fontSize={12} width={32} />\n <ChartTooltip content={<ChartTooltipContent />} />\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n {series.map((s) => (\n <Area\n key={s.key}\n dataKey={s.key}\n type=\"monotone\"\n stackId={stacked ? \"a\" : undefined}\n stroke={`var(--color-${s.key})`}\n fill={`var(--color-${s.key})`}\n fillOpacity={0.2}\n strokeWidth={2}\n isAnimationActive={false}\n />\n ))}\n </RAreaChart>\n </ChartContainer>\n )\n}\n","import { BarChart as RBarChart, Bar, XAxis, YAxis, CartesianGrid } from \"recharts\"\nimport { color } from \"@/foundation\"\nimport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, type ChartConfig } from \"@/components/ui/chart\"\n\n/*\n * BarChart — Components tier, real Recharts (grouped or single-series\n * vertical bars). Grid/axis lines use `color.input` (the real hairline\n * token), never `color.border` (deliberately transparent — see DESIGN.md).\n */\nexport type ChartSeries = { key: string; label: string; color: string }\n\nexport type BarChartProps = {\n data: Record<string, unknown>[]\n xKey: string\n series: ChartSeries[]\n height?: number\n showLegend?: boolean\n}\n\nexport function BarChart({ data, xKey, series, height = 260, showLegend = series.length > 1 }: BarChartProps) {\n const config: ChartConfig = Object.fromEntries(series.map((s) => [s.key, { label: s.label, color: s.color }]))\n return (\n <ChartContainer config={config} style={{ height }} className=\"w-full\">\n <RBarChart data={data}>\n <CartesianGrid vertical={false} stroke={color.input} />\n <XAxis dataKey={xKey} tickLine={false} axisLine={false} fontSize={12} />\n <YAxis tickLine={false} axisLine={false} fontSize={12} width={32} />\n <ChartTooltip content={<ChartTooltipContent />} />\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n {series.map((s) => (\n <Bar key={s.key} dataKey={s.key} fill={`var(--color-${s.key})`} radius={4} isAnimationActive={false} />\n ))}\n </RBarChart>\n </ChartContainer>\n )\n}\n","import {\n BarChart, Bar, XAxis, YAxis, CartesianGrid,\n} from \"recharts\"\nimport { color } from \"@/foundation\"\nimport { ChartContainer, ChartTooltip, ChartTooltipContent, type ChartConfig } from \"@/components/ui/chart\"\n\n/*\n * DistributionChart — Components tier, real Recharts (replaces a\n * hand-rolled div/Flex \"SegmentedBar\", which looked cheap next to actual\n * charts). One horizontal stacked bar per category: each named segment\n * proportional, the remainder (if segments don't sum to the category's own\n * 100%) rendered as a muted \"rest\" filler.\n */\nexport type DistributionSegment = { label: string; count: string; widthPct: number }\nexport type DistributionGroup = { name: string; total: string; segments: DistributionSegment[] }\n\nconst SEGMENT_COLORS = [color.accent, color.chart2, color.chart3, color.chart4, color.chart5]\nconst MAX_SEGMENTS = 5\n\nexport function DistributionChart({ groups, rowHeight = 40 }: { groups: DistributionGroup[]; rowHeight?: number }) {\n const config: ChartConfig = {}\n for (let i = 0; i < MAX_SEGMENTS; i++) {\n config[`seg${i}`] = { label: `Позиция ${i + 1}`, color: SEGMENT_COLORS[i] }\n }\n config.rest = { label: \"Остальное\", color: color.muted }\n\n const data = groups.map((g) => {\n const row: Record<string, unknown> = { name: g.name, total: g.total }\n let sum = 0\n g.segments.slice(0, MAX_SEGMENTS).forEach((seg, i) => {\n row[`seg${i}`] = seg.widthPct\n row[`seg${i}_label`] = `${seg.label} — ${seg.count}`\n sum += seg.widthPct\n })\n row.rest = Math.max(0, 100 - sum)\n return row\n })\n\n return (\n <ChartContainer config={config} style={{ height: groups.length * rowHeight + 24 }} className=\"w-full\">\n <BarChart data={data} layout=\"vertical\" margin={{ left: 0, right: 12, top: 4, bottom: 4 }}>\n <CartesianGrid horizontal={false} stroke={color.input} />\n <XAxis type=\"number\" domain={[0, 100]} hide />\n <YAxis type=\"category\" dataKey=\"name\" tickLine={false} axisLine={false} width={130} fontSize={12} />\n <ChartTooltip\n content={\n <ChartTooltipContent\n hideLabel\n formatter={(_value, name, item) => {\n if (name === \"rest\") return null\n const label = (item?.payload as Record<string, string>)?.[`${name}_label`]\n return label ?? null\n }}\n />\n }\n />\n {Array.from({ length: MAX_SEGMENTS }, (_, i) => (\n <Bar key={i} dataKey={`seg${i}`} stackId=\"dist\" fill={`var(--color-seg${i})`} isAnimationActive={false} />\n ))}\n <Bar dataKey=\"rest\" stackId=\"dist\" fill=\"var(--color-rest)\" isAnimationActive={false} />\n </BarChart>\n </ChartContainer>\n )\n}\n","import { PieChart, Pie, Cell } from \"recharts\"\nimport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, type ChartConfig } from \"@/components/ui/chart\"\n\n/** DonutChart — Components tier, real Recharts (categorical breakdown). */\nexport type DonutSlice = { key: string; label: string; value: number; color: string }\n\nexport type DonutChartProps = {\n data: DonutSlice[]\n height?: number\n showLegend?: boolean\n}\n\nexport function DonutChart({ data, height = 260, showLegend = true }: DonutChartProps) {\n const config: ChartConfig = Object.fromEntries(data.map((d) => [d.key, { label: d.label, color: d.color }]))\n return (\n <ChartContainer config={config} style={{ height }} className=\"w-full\">\n <PieChart>\n <ChartTooltip content={<ChartTooltipContent nameKey=\"key\" />} />\n {showLegend && <ChartLegend content={<ChartLegendContent nameKey=\"key\" />} />}\n <Pie data={data} dataKey=\"value\" nameKey=\"key\" innerRadius=\"60%\" outerRadius=\"90%\" strokeWidth={2} isAnimationActive={false}>\n {data.map((d) => <Cell key={d.key} fill={`var(--color-${d.key})`} />)}\n </Pie>\n </PieChart>\n </ChartContainer>\n )\n}\n","import { LineChart as RLineChart, Line, XAxis, YAxis, CartesianGrid } from \"recharts\"\nimport { color } from \"@/foundation\"\nimport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, type ChartConfig } from \"@/components/ui/chart\"\nimport type { ChartSeries } from \"./BarChart\"\n\n/** LineChart — Components tier, real Recharts (multi-series trend line). */\nexport type LineChartProps = {\n data: Record<string, unknown>[]\n xKey: string\n series: ChartSeries[]\n height?: number\n showLegend?: boolean\n}\n\nexport function LineChart({ data, xKey, series, height = 260, showLegend = series.length > 1 }: LineChartProps) {\n const config: ChartConfig = Object.fromEntries(series.map((s) => [s.key, { label: s.label, color: s.color }]))\n return (\n <ChartContainer config={config} style={{ height }} className=\"w-full\">\n <RLineChart data={data}>\n <CartesianGrid vertical={false} stroke={color.input} />\n <XAxis dataKey={xKey} tickLine={false} axisLine={false} fontSize={12} />\n <YAxis tickLine={false} axisLine={false} fontSize={12} width={32} />\n <ChartTooltip content={<ChartTooltipContent />} />\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n {series.map((s) => (\n <Line key={s.key} dataKey={s.key} type=\"monotone\" stroke={`var(--color-${s.key})`} strokeWidth={2} dot={false} isAnimationActive={false} />\n ))}\n </RLineChart>\n </ChartContainer>\n )\n}\n","import { useEffect, useRef, useState, type ReactNode } from \"react\"\nimport { Icon } from \"@/primitives/Icon\"\nimport { Chip } from \"@/components/composed/Chip\"\nimport { MessageBubble } from \"@/components/composed/MessageBubble\"\nimport { TypingIndicator } from \"@/components/composed/TypingIndicator\"\nimport \"./AssistantDock.css\"\n\n/*\n * AssistantDock — a SECTION, and deliberately one of the few bespoke\n * \"organisms\" in the system (same category as SidebarNav). Real state\n * machine (idle pill → open panel → collapsed \"orb\" after scrolling away\n * and closing), not a static snapshot.\n *\n * Built from: Surface (glow/panel backdrops), Icon (spark/send/close),\n * Chip (suggestion pills), MessageBubble (chat), TypingIndicator (the\n * \"thinking\" delay) — everything else (gradient button, glass field with a\n * gradient border, the spinning blob icon, ambient glow) is real CSS in\n * AssistantDock.css, not expressible as Foundation-level generic primitives\n * without inventing fiction.\n *\n * `intro`/`fallbackAnswer`/`chips` have no client-specific defaults —\n * pass real copy per product, don't rely on the placeholders below.\n */\n\nexport type ChipQuestion = { question: string; answer: ReactNode }\n\nexport type AssistantDockProps = {\n title?: string\n intro?: string\n chips?: ChipQuestion[]\n fallbackAnswer?: ReactNode\n placeholder?: string\n}\n\ntype Mode = \"idle\" | \"open\" | \"orb\"\ntype Msg = { id: number; from: \"user\" | \"bot\"; content: ReactNode }\n\nlet msgId = 0\n\nexport function AssistantDock({\n title = \"Ассистент\",\n intro = \"Спросите что угодно или начните с подсказки:\",\n chips = [],\n fallbackAnswer = \"Уточните вопрос — разберём подробнее.\",\n placeholder = \"Задайте вопрос…\",\n}: AssistantDockProps) {\n const [mode, setMode] = useState<Mode>(\"idle\")\n const [messages, setMessages] = useState<Msg[]>([])\n const [typing, setTyping] = useState(false)\n const [value, setValue] = useState(\"\")\n const fieldRef = useRef<HTMLInputElement>(null)\n const msgsRef = useRef<HTMLDivElement>(null)\n\n // closeAsk(): if the page has scrolled away from the top, collapse to the\n // floating \"orb\" instead of the idle pill — verbatim source behavior.\n const close = () => {\n setMode(window.scrollY > 120 ? \"orb\" : \"idle\")\n fieldRef.current?.blur()\n document.body.style.overflow = \"\"\n }\n\n const open = () => {\n setMode(\"open\")\n document.body.style.overflow = \"hidden\"\n requestAnimationFrame(() => fieldRef.current?.focus())\n }\n\n useEffect(() => {\n if (mode !== \"open\") return\n const onKey = (e: KeyboardEvent) => { if (e.key === \"Escape\") close() }\n document.addEventListener(\"keydown\", onKey)\n return () => document.removeEventListener(\"keydown\", onKey)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode])\n\n useEffect(() => {\n msgsRef.current?.scrollTo({ top: msgsRef.current.scrollHeight })\n }, [messages, typing])\n\n const ask = (question: string, answer: ReactNode) => {\n setMode(\"open\")\n document.body.style.overflow = \"hidden\"\n setMessages((m) => [...m, { id: ++msgId, from: \"user\", content: question }])\n setTyping(true)\n setTimeout(() => {\n setTyping(false)\n setMessages((m) => [...m, { id: ++msgId, from: \"bot\", content: answer ?? fallbackAnswer }])\n }, 650)\n }\n\n const send = () => {\n const v = value.trim()\n if (!v) { fieldRef.current?.focus(); return }\n ask(v, null)\n setValue(\"\")\n fieldRef.current?.focus()\n }\n\n const handleBtnClick = () => { if (mode === \"open\") send(); else open() }\n\n const handleKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") send()\n else if (e.key === \"Escape\") { setValue(\"\"); close() }\n }\n\n return (\n <div className={`assistant-dock assistant-dock--${mode === \"open\" ? \"open\" : mode === \"orb\" ? \"orb\" : \"idle\"}`}>\n <div className=\"assistant-dock-panel\">\n <div className=\"assistant-dock-glow\" aria-hidden=\"true\">\n <span className=\"blob blob1\" /><span className=\"blob blob2\" /><span className=\"blob blob3\" />\n </div>\n <div className=\"assistant-dock-inner\">\n <div className=\"assistant-dock-head\">\n <span className=\"assistant-dock-title\">{title}</span>\n <button\n type=\"button\"\n className=\"assistant-dock-close\"\n aria-label=\"Закрыть\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={close}\n >\n <Icon name=\"close\" size={16} />\n </button>\n </div>\n <div className=\"assistant-dock-msgs\" ref={msgsRef}>\n {messages.length === 0 && (\n <>\n <div className=\"assistant-dock-sub\">{intro}</div>\n <div className=\"assistant-dock-chips\">\n {chips.map((c) => (\n <Chip\n key={c.question}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => { ask(c.question, c.answer); fieldRef.current?.focus() }}\n >\n {c.question}\n </Chip>\n ))}\n </div>\n </>\n )}\n {messages.map((m) => <MessageBubble key={m.id} from={m.from}>{m.content}</MessageBubble>)}\n {typing && <TypingIndicator />}\n </div>\n </div>\n </div>\n\n <div className=\"assistant-dock-input\">\n <input\n ref={fieldRef}\n className=\"assistant-dock-field\"\n placeholder={placeholder}\n autoComplete=\"off\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKey}\n />\n <div className=\"assistant-dock-blob\" aria-hidden=\"true\"><i /><i /><i /><i /></div>\n <button\n type=\"button\"\n className=\"assistant-dock-btn\"\n aria-label=\"Спросить ассистента\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={handleBtnClick}\n >\n <span className=\"assistant-dock-btn-label\"><Icon name=\"spark\" size={16} /> Спросить ассистента</span>\n <span className=\"assistant-dock-miniico\"><Icon name=\"spark\" size={16} /></span>\n <Icon name=\"send\" size={22} className=\"assistant-dock-send\" />\n </button>\n </div>\n </div>\n )\n}\n","import \"./SidebarNav.css\"\nimport { Icon, type IconName } from \"@/primitives/Icon\"\n\n/*\n * SidebarNav — the app-shell left rail. Deliberately one of the few bespoke\n * Sections (a layout fixture, not content). Visuals live in SidebarNav.css;\n * the icons come from our Icon base primitive (Phosphor), so the rail\n * consumes the same governed icon set as everything else.\n *\n * Brand mark stays a literal SVG — it's an identity asset, not an icon.\n * `items`/`clientLabel` are required-or-omitted on purpose: Артефакт serves\n * several clients, so nothing here defaults to any one of them.\n */\n\nconst BRAND_LOGO_PATH =\n \"M450.313 0C769.313 0 944.528 245.166 864.813 542.666C852.313 581.666 848.967 591.728 838.813 623.165L872.813 664.166C962.596 778.457 980.313 929.666 937.814 1104.77H624.813C746.313 944.666 814.313 782.166 825.313 711.666L814.313 696.165C714.974 976.165 548.411 1115.92 359.862 1115.92C151.313 1115.92 0 972.665 0 794.466C0 582.558 193.313 444.512 450.313 444.512C625.327 444.512 730.313 526.666 783.813 571.665L796.313 532.666C781.813 463.166 613.813 360.364 436.813 360.364C329.862 360.364 239.313 386.166 144.313 437.165L20 114.335C134.313 49.6655 286.313 0 450.313 0ZM543.813 547.665C425.012 547.665 349.862 633.349 349.862 720.165C349.862 791.982 413.313 872.992 493.663 872.992C605.327 872.992 712.813 785.665 764.813 639.665C704.313 582.666 621.859 547.665 543.813 547.665Z\"\n\nexport type NavItem = { key: string; label: string; icon: IconName }\n\n// example nav — a real 4-item set from one product screen. Not a silent\n// default consumers get by accident: SidebarNav requires `items` (below),\n// this is exported only as a starting point / Storybook fixture.\nexport const EXAMPLE_NAV_ITEMS: NavItem[] = [\n { key: \"home\", label: \"Главная\", icon: \"home\" },\n { key: \"team\", label: \"Команда\", icon: \"team\" },\n { key: \"orders\", label: \"Заказы\", icon: \"orders\" },\n { key: \"knowledge\", label: \"Знания\", icon: \"knowledge\" },\n]\n\nconst NI = 22 // sidebar icon size\n\nexport type SidebarNavProps = {\n active?: string\n items: NavItem[]\n avatarInitials?: string\n avatarTitle?: string\n showSettings?: boolean\n /** Which client's dashboard this is (Артефакт serves several). Omit to\n * hide the chip entirely — DON'T default this to any one client's name. */\n clientLabel?: string\n /** Single-letter badge for the chip; falls back to `clientLabel`'s first\n * character if omitted. */\n clientInitial?: string\n}\n\nexport function SidebarNav({\n active,\n items,\n avatarInitials = \"\",\n avatarTitle,\n showSettings = true,\n clientLabel,\n clientInitial,\n}: SidebarNavProps) {\n return (\n <aside className=\"sidebar\">\n {/* brand — orange accent mark */}\n <div className=\"brand\" title=\"Артефакт\">\n <svg\n className=\"brand-logo\"\n viewBox=\"0 0 960 1116\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d={BRAND_LOGO_PATH} />\n </svg>\n </div>\n\n {/* client chip — white backing + green inner badge. Only rendered when\n the consumer actually passes a client — no fallback to any one\n real client's name. */}\n {clientLabel && (\n <div className=\"client\" aria-label={clientLabel}>\n <span className=\"bd\">{(clientInitial ?? clientLabel.charAt(0)).toUpperCase()}</span>\n <span className=\"tip\">{clientLabel}</span>\n </div>\n )}\n\n {/* primary nav */}\n <nav className=\"nav\" aria-label=\"Навигация\">\n {items.map((item) => (\n <a\n key={item.key}\n href=\"#\"\n className={item.key === active ? \"active\" : undefined}\n aria-label={item.label}\n aria-current={item.key === active ? \"page\" : undefined}\n >\n <Icon name={item.icon} size={NI} />\n <span className=\"tip\">{item.label}</span>\n </a>\n ))}\n </nav>\n\n {/* foot — avatar + optional settings, pinned to the bottom */}\n <div className=\"side-foot\">\n <span className=\"avatar\" title={avatarTitle}>\n {avatarInitials}\n </span>\n {showSettings && (\n <span className=\"ico-btn\" aria-label=\"Настройки\">\n <Icon name=\"settings\" size={NI} />\n <span className=\"tip\">Настройки</span>\n </span>\n )}\n </div>\n </aside>\n )\n}\n"],"mappings":"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","names":["radius","jsx","radius","jsx","jsx","jsxs","jsx","color","jsx","radius","jsx","jsx","jsx","cva","jsx","cva","cva","Slot","jsx","cva","Slot","cva","Slot","jsx","jsx","cva","Slot","jsx","React","jsx","jsxs","config","color","jsx","jsx","jsxs","CheckIcon","jsx","jsxs","cva","jsx","cva","useMemo","cva","jsx","jsx","jsxs","cva","useMemo","jsx","type","cva","jsx","jsx","cva","type","cva","Slot","jsx","cva","Slot","cva","jsx","jsxs","cva","ChevronRightIcon","jsx","jsxs","jsx","jsx","ChevronDownIcon","CheckIcon","jsx","jsxs","jsx","Loader2Icon","jsx","jsx","jsx","cva","jsx","cva","cva","jsx","cva","React","jsx","spacing","jsx","jsxs","Tooltip","jsx","jsxs","jsx","jsx","jsxs","Fragment","jsx","jsxs","jsx","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","XAxis","YAxis","CartesianGrid","jsx","jsxs","CartesianGrid","XAxis","YAxis","BarChart","Bar","XAxis","YAxis","CartesianGrid","jsx","jsxs","BarChart","CartesianGrid","XAxis","YAxis","Bar","jsx","jsxs","XAxis","YAxis","CartesianGrid","jsx","jsxs","CartesianGrid","XAxis","YAxis","Fragment","jsx","jsxs","jsx","jsxs"]}
|