@deriv-ds/design-intelligence-layer 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -6
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +7 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/ui/accordion.tsx","../lib/utils.ts","../components/ui/badge.tsx","../components/ui/notification.tsx","../components/ui/section-message.tsx","../components/ui/aspect-ratio.tsx","../components/ui/avatar.tsx","../components/ui/tag.tsx","../components/ui/breadcrumb.tsx","../components/ui/button.tsx","../components/ui/chip.tsx","../components/ui/calendar.tsx","../components/ui/card.tsx","../components/ui/carousel.tsx","../components/ui/chart.tsx","../components/ui/checkbox.tsx","../components/ui/collapsible.tsx","../components/ui/list-item.tsx","../components/ui/separator.tsx","../components/ui/combobox.tsx","../components/ui/input-group.tsx","../components/ui/textarea.tsx","../components/ui/command.tsx","../components/ui/dialog.tsx","../components/ui/context-menu.tsx","../components/ui/direction.tsx","../components/ui/drawer.tsx","../components/ui/dropdown-menu.tsx","../components/ui/empty.tsx","../components/ui/field.tsx","../components/ui/label.tsx","../components/ui/form.tsx","../components/ui/hover-card.tsx","../components/ui/input.tsx","../components/ui/search-field.tsx","../components/ui/input-otp.tsx","../components/ui/code-input.tsx","../components/ui/kbd.tsx","../components/ui/link.tsx","../components/ui/native-select.tsx","../components/ui/pagination.tsx","../components/ui/popover.tsx","../components/ui/progress.tsx","../components/ui/radio-group.tsx","../components/ui/resizable.tsx","../components/ui/scroll-area.tsx","../components/ui/select.tsx","../components/ui/sheet.tsx","../components/ui/sidebar.tsx","../hooks/use-mobile.ts","../components/ui/skeleton.tsx","../components/ui/tooltip.tsx","../components/ui/slider.tsx","../components/ui/snackbar.tsx","../components/ui/stepper.tsx","../components/ui/spinner.tsx","../components/ui/loading-spinner.tsx","../components/ui/switch.tsx","../components/ui/table.tsx","../components/ui/segmented-control.tsx","../components/ui/tab.tsx","../components/ui/toggle.tsx","../components/ui/toggle-group.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n// ── Types ────────────────────────────────────────────────────────────\n\ntype AccordionVariant = \"fill\" | \"elevate\" | \"outline\" | \"flush\"\ntype AccordionSize = \"xs\" | \"sm\" | \"md\" | \"lg\"\n\n// ── Context ──────────────────────────────────────────────────────────\n\nconst AccordionContext = React.createContext<{\n variant: AccordionVariant\n size: AccordionSize\n}>({ variant: \"fill\", size: \"md\" })\n\nfunction useAccordionCtx() {\n return React.useContext(AccordionContext)\n}\n\n// ── Size maps ─────────────────────────────────────────────────────────\n\n/** Trigger padding and inter-column gap */\nconst TRIGGER_PADDING: Record<AccordionSize, string> = {\n xs: \"p-4 gap-4\",\n sm: \"p-6 gap-6\",\n md: \"p-6 gap-6\",\n lg: \"p-6 gap-6\",\n}\n\n/** Content area padding */\nconst CONTENT_PADDING: Record<AccordionSize, string> = {\n xs: \"p-4\",\n sm: \"p-6\",\n md: \"p-6\",\n lg: \"p-6\",\n}\n\n/** Title typography — size scales from body/md (xs,sm) → body/lg (md) → body/xl (lg) */\nconst TITLE_CLASSES: Record<AccordionSize, string> = {\n xs: \"text-base leading-6\",\n sm: \"text-base leading-6\",\n md: \"text-lg leading-7\",\n lg: \"text-xl leading-[1.5]\",\n}\n\n/** Subtitle typography — size scales from body/sm (xs,sm) → body/md (md) → body/lg (lg) */\nconst SUBTITLE_CLASSES: Record<AccordionSize, string> = {\n xs: \"text-sm leading-5\",\n sm: \"text-sm leading-5\",\n md: \"text-base leading-6\",\n lg: \"text-lg leading-7\",\n}\n\n// ── Accordion (root) ──────────────────────────────────────────────────\n\n/**\n * Root accordion container. Sets variant and size for all child items.\n *\n * @example\n * // Fill accordion (default), medium size\n * <Accordion type=\"single\" collapsible>\n * <AccordionItem value=\"item-1\">\n * <AccordionTrigger title=\"Title\" subtitle=\"Subtitle\" />\n * <AccordionContent>Content here</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n *\n * @example\n * // Elevate accordion (fill + shadow), medium size\n * <Accordion type=\"single\" collapsible variant=\"elevate\">…</Accordion>\n *\n * @example\n * // Outline accordion, small size\n * <Accordion type=\"multiple\" variant=\"outline\" size=\"sm\">…</Accordion>\n *\n * @example\n * // Flush accordion with custom trigger content\n * <Accordion type=\"single\" collapsible variant=\"flush\">\n * <AccordionItem value=\"item-1\">\n * <AccordionTrigger><MyCustomHeader /></AccordionTrigger>\n * <AccordionContent>Content</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n */\nfunction Accordion({\n variant = \"fill\",\n size = \"md\",\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /** Visual style of each accordion card. @default \"fill\" */\n variant?: AccordionVariant\n /** Controls padding, font size, and trigger height. @default \"md\" */\n size?: AccordionSize\n}) {\n return (\n <AccordionContext.Provider value={{ variant, size }}>\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"flex w-full flex-col\",\n // Fill, elevate, and outline items are spaced apart; flush items stack flush\n variant !== \"flush\" && \"gap-2\",\n className\n )}\n {...props}\n />\n </AccordionContext.Provider>\n )\n}\n\n// ── AccordionItem ─────────────────────────────────────────────────────\n\n/**\n * Individual accordion item. Styling is derived from the parent `Accordion`\n * variant — no extra props required.\n */\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n const { variant } = useAccordionCtx()\n\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n \"relative\",\n\n // ── Fill ──────────────────────────────────────────────────────\n // Flat white card, no shadow.\n variant === \"fill\" && [\n \"overflow-hidden rounded-[var(--accordion-radius)]\",\n \"bg-accordion-bg-default\",\n \"data-[state=open]:bg-accordion-bg-expand\",\n ],\n\n // ── Elevate ───────────────────────────────────────────────────\n // White card with drop-shadow. overflow-hidden is intentionally\n // omitted here because it clips the box-shadow painted outside the\n // border-box. The trigger's own border-radius clips hover/active\n // backgrounds instead.\n variant === \"elevate\" && [\n \"rounded-[var(--accordion-radius)]\",\n \"bg-accordion-bg-default shadow-accordion-fill\",\n \"data-[state=open]:bg-accordion-bg-expand\",\n ],\n\n // ── Outline ───────────────────────────────────────────────────\n // Bordered card; no background change on expand.\n // overflow-hidden is intentionally omitted: applying it to a\n // transparent element with a border causes browsers to square off\n // the border corners. The trigger's own border-radius handles\n // clipping of hover/active backgrounds instead.\n variant === \"outline\" && [\n \"rounded-[var(--accordion-radius)]\",\n \"border-2 border-accordion-border\",\n ],\n\n // ── Flush ─────────────────────────────────────────────────────\n // Flat items separated by thin dividers; background tints when open\n variant === \"flush\" && [\n \"border-t border-accordion-border last:border-b\",\n \"data-[state=open]:bg-accordion-bg-expand\",\n ],\n\n className\n )}\n {...props}\n />\n )\n}\n\n// ── AccordionTrigger ──────────────────────────────────────────────────\n\n/**\n * Clickable trigger row that expands/collapses the accordion item.\n *\n * **Default layout** (when `title` prop is supplied):\n * Three-column structure — `[icon] [title + subtitle] [chevron]`\n *\n * **Custom layout** (when `title` is omitted):\n * Pass arbitrary `children`; the chevron is always appended automatically.\n *\n * @example\n * // Default — structured header\n * <AccordionTrigger\n * icon={<UserIcon />}\n * title=\"Account settings\"\n * subtitle=\"Manage your profile\"\n * />\n *\n * @example\n * // Default — no icon, no subtitle\n * <AccordionTrigger title=\"Frequently asked questions\" />\n *\n * @example\n * // Custom — free-form header slot\n * <AccordionTrigger><MyBadge /><MyTag /></AccordionTrigger>\n */\nfunction AccordionTrigger({\n className,\n children,\n icon,\n title,\n subtitle,\n titleBold = false,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & {\n /**\n * Optional leading icon (default layout only).\n * Pass any React node — typically a 24 × 24 icon from lucide-react.\n */\n icon?: React.ReactNode\n /**\n * Title text. When provided the trigger uses the **default three-column layout**.\n * Omit to render `children` in a custom layout.\n */\n title?: string\n /** Secondary line below the title (default layout only). */\n subtitle?: string\n /** Render title in semibold weight. @default false */\n titleBold?: boolean\n}) {\n const { variant, size } = useAccordionCtx()\n const isDefaultLayout = Boolean(title)\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n // ── Base ──────────────────────────────────────────────────\n \"group flex w-full cursor-pointer items-center outline-none\",\n \"transition-colors duration-base ease-standard\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:pointer-events-none\",\n\n // ── Size-based padding and column gap ─────────────────────\n TRIGGER_PADDING[size],\n\n // ── Interactive state backgrounds ─────────────────────────\n \"hover:bg-accordion-bg-hover\",\n \"active:bg-accordion-bg-active\",\n\n // ── Fill / elevate / outline: rounded on all corners when closed,\n // square bottom corners when open so header connects to content\n (variant === \"fill\" || variant === \"elevate\" || variant === \"outline\") && [\n \"rounded-[var(--accordion-radius)]\",\n \"data-[state=open]:rounded-b-none\",\n ],\n\n className\n )}\n {...props}\n >\n {/* ── Default layout: [icon] [title + subtitle] [chevron] ── */}\n {isDefaultLayout ? (\n <>\n {icon !== undefined && (\n <span\n className=\"flex size-6 shrink-0 items-center justify-center text-accordion-icon group-disabled:text-accordion-icon-disabled\"\n aria-hidden\n >\n {icon}\n </span>\n )}\n\n <div className=\"flex min-w-0 flex-1 flex-col gap-1 text-left\">\n <span\n className={cn(\n \"font-body text-accordion-title group-disabled:text-accordion-title-disabled\",\n TITLE_CLASSES[size],\n titleBold ? \"font-semibold\" : \"font-normal\"\n )}\n >\n {title}\n </span>\n {subtitle && (\n <span\n className={cn(\n \"font-body font-normal text-accordion-subtitle group-disabled:text-accordion-subtitle-disabled\",\n SUBTITLE_CLASSES[size]\n )}\n >\n {subtitle}\n </span>\n )}\n </div>\n </>\n ) : (\n /* ── Custom layout: arbitrary children slot ── */\n <div className=\"flex min-w-0 flex-1 items-center\">{children}</div>\n )}\n\n {/* ── Chevron (always present) ── */}\n <ChevronDownIcon\n className={cn(\n \"ml-auto size-5 shrink-0 text-accordion-icon group-disabled:text-accordion-icon-disabled\",\n \"transition-transform duration-base ease-standard\",\n \"group-data-[state=open]:rotate-180\"\n )}\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\n// ── AccordionContent ──────────────────────────────────────────────────\n\n/**\n * Collapsible content area. Accepts any React children as the body slot.\n * Padding automatically matches the parent accordion's size.\n */\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n const { size } = useAccordionCtx()\n\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(CONTENT_PADDING[size], className)}>\n {children}\n </div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\nexport type { AccordionVariant, AccordionSize }\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","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Badge({\n count,\n className,\n ...props\n}: React.ComponentProps<\"span\"> & {\n count: number\n}) {\n const display = count > 99 ? \"+99\" : String(count)\n return (\n <span\n data-slot=\"badge\"\n className={cn(\n \"inline-flex items-center justify-center shrink-0 font-body text-badge-text bg-badge-bg-number rounded-[var(--badge-md-radius)] [font-weight:var(--badge-font-weight)] h-[var(--badge-md-height)] min-w-[var(--badge-md-min-width)] max-w-[var(--badge-md-max-width)] px-[var(--badge-md-padding-horizontal)] [font-size:var(--badge-md-font-size)]\",\n className\n )}\n {...props}\n >\n {display}\n </span>\n )\n}\n\nconst dotColorMap = {\n red: \"bg-badge-status-red\",\n yellow: \"bg-badge-status-yellow\",\n green: \"bg-badge-status-green\",\n blue: \"bg-badge-status-blue\",\n} as const\n\nfunction BadgeDot({\n size = \"md\",\n color = \"red\",\n className,\n ...props\n}: React.ComponentProps<\"span\"> & {\n size?: \"sm\" | \"md\"\n color?: keyof typeof dotColorMap\n}) {\n return (\n <span\n data-slot=\"badge-dot\"\n className={cn(\n \"inline-block rounded-full shrink-0\",\n dotColorMap[color],\n size === \"sm\"\n ? \"h-[var(--badge-sm-dot-size)] w-[var(--badge-sm-dot-size)]\"\n : \"h-[var(--badge-md-dot-size)] w-[var(--badge-md-dot-size)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Badge, BadgeDot }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n AlertCircle,\n AlertTriangle,\n CheckCircle,\n Info,\n Mail,\n MailOpen,\n Trash2,\n X,\n} from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { BadgeDot } from \"./badge\"\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype NotificationVariant = \"information\" | \"success\" | \"warning\" | \"danger\"\n\n// ─── Variant maps ─────────────────────────────────────────────────────────────\n\nconst variantIconMap: Record<NotificationVariant, React.ElementType> = {\n information: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n danger: AlertCircle,\n}\n\nconst variantIconBgClass: Record<NotificationVariant, string> = {\n information: \"bg-notification-bg-icon-information\",\n success: \"bg-notification-bg-icon-success\",\n warning: \"bg-notification-bg-icon-warning\",\n danger: \"bg-notification-bg-icon-danger\",\n}\n\n/** Icon colour inside the tinted item container */\nconst variantIconNormalClass: Record<NotificationVariant, string> = {\n information: \"text-notification-icon-normal-information\",\n success: \"text-notification-icon-normal-success\",\n warning: \"text-notification-icon-normal-warning\",\n danger: \"text-notification-icon-normal-danger\",\n}\n\n// ─── NotificationBanner ───────────────────────────────────────────────────────\n// Static display — no internal state. Parent is responsible for unmounting.\n// Grid layout mirrors section-message: icon col aligns to the title's first line.\n\ninterface NotificationBannerProps {\n title: React.ReactNode\n description?: React.ReactNode\n /** Optional content before the default Info icon (e.g. anatomy markers). */\n slotBeforeIcon?: React.ReactNode\n /** Optional content before the close button when onClose is set (e.g. anatomy markers). */\n slotBeforeClose?: React.ReactNode\n onClose?: () => void\n className?: string\n}\n\nfunction NotificationBanner({\n title,\n description,\n slotBeforeIcon,\n slotBeforeClose,\n onClose,\n className,\n}: NotificationBannerProps) {\n return (\n <div\n data-slot=\"notification-banner\"\n className={cn(\n // Grid: [icon] [text] [close] — icon aligns to title start (same as section-message pattern)\n \"grid w-full rounded-[var(--notification-radius)] bg-notification-bg-banner\",\n \"min-w-[var(--notification-min-width-banner)] max-w-[var(--notification-max-width-banner)]\",\n \"grid-cols-[auto_1fr_auto] items-start gap-x-[var(--notification-gap-md)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n className\n )}\n >\n {/* Icon row: fixed height for title alignment; min-width only so slotBeforeIcon (e.g. anatomy Num) + icon fit */}\n <div className=\"flex h-[var(--notification-size-icon-banner)] min-w-[var(--notification-size-icon-banner)] shrink-0 items-center justify-center gap-1\">\n {slotBeforeIcon}\n <Info\n className=\"text-notification-icon-inverse-information\"\n style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }}\n />\n </div>\n\n {/* Text */}\n <div className=\"flex flex-col\" style={{ gap: 0 }}>\n <p\n className=\"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis whitespace-nowrap text-notification-title-banner leading-[1.5]\"\n style={{\n fontSize: \"var(--notification-font-size-md)\",\n fontWeight: \"var(--notification-font-weight-semibold)\",\n }}\n >\n {title}\n </p>\n {description != null && description !== \"\" && (\n <p\n className=\"flex w-full min-w-0 items-center gap-1 text-notification-description-banner leading-[1.5]\"\n style={{\n fontSize: \"var(--notification-font-size-sm)\",\n fontWeight: \"var(--notification-font-weight-regular)\",\n }}\n >\n {description}\n </p>\n )}\n </div>\n\n {/* Close — [INFERRED] colour: text-notification-title-banner (no dedicated close token) */}\n {onClose && (\n <div className=\"flex items-center justify-center gap-1 self-center\">\n {slotBeforeClose}\n <button\n type=\"button\"\n onClick={onClose}\n className=\"flex items-center justify-center text-notification-title-banner opacity-60 hover:opacity-100 transition-opacity\"\n style={{ width: \"var(--button-sm-icon-size)\", height: \"var(--button-sm-icon-size)\" }}\n aria-label=\"Close notification\"\n >\n <X\n style={{ width: \"var(--semantic-size-width-height-16)\", height: \"var(--semantic-size-width-height-16)\" }}\n />\n </button>\n </div>\n )}\n </div>\n )\n}\n\n// ─── NotificationItem ─────────────────────────────────────────────────────────\n// Purely controlled. isRead is a prop; swipe position is ephemeral UI state.\n// Pointer-capture approach keeps drag tracking reliable on desktop and touch.\n\ninterface NotificationItemProps {\n variant?: NotificationVariant\n title: React.ReactNode\n description?: React.ReactNode\n dateTime?: React.ReactNode\n /** Optional content before the variant icon column (e.g. anatomy markers). */\n slotBeforeIcon?: React.ReactNode\n /** Optional content after the icon + badge cell (e.g. anatomy markers for the unread dot). */\n slotAfterIcon?: React.ReactNode\n /** Optional content before the desktop action buttons (e.g. anatomy markers). */\n slotBeforeActions?: React.ReactNode\n isRead: boolean\n /** desktop=true → hover reveals icon-only actions (no swipe). default false = mobile swipe mode. */\n desktop?: boolean\n onRead?: () => void\n onUnread?: () => void\n onDelete?: () => void\n className?: string\n}\n\n// ── Shared inner content (icon + text block) used in both mobile and desktop ──\nfunction NotificationItemContent({\n variant,\n title,\n description,\n dateTime,\n isRead,\n slotBeforeIcon,\n slotAfterIcon,\n}: Pick<\n NotificationItemProps,\n | \"variant\"\n | \"title\"\n | \"description\"\n | \"dateTime\"\n | \"isRead\"\n | \"slotBeforeIcon\"\n | \"slotAfterIcon\"\n>) {\n const Icon = variantIconMap[variant ?? \"information\"]\n return (\n <>\n {/* Icon with optional unread badge dot */}\n <div className=\"flex shrink-0 items-start gap-1\">\n {slotBeforeIcon}\n <div className=\"relative shrink-0\">\n <div\n className={cn(\"flex items-center justify-center rounded-[var(--notification-radius-icon)]\", variantIconBgClass[variant ?? \"information\"])}\n style={{ width: \"var(--notification-size-icon-container)\", height: \"var(--notification-size-icon-container)\" }}\n >\n <Icon\n className={variantIconNormalClass[variant ?? \"information\"]}\n style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }}\n />\n </div>\n {!isRead && (\n <BadgeDot color=\"red\" size=\"sm\" className=\"absolute top-0 left-6\" />\n )}\n </div>\n {slotAfterIcon}\n </div>\n\n {/* Text column */}\n <div\n className=\"flex h-full min-w-0 flex-1 flex-col items-start justify-center leading-[1.5] whitespace-nowrap\"\n style={{ gap: \"var(--notification-gap-sm)\" }}\n >\n <div className=\"flex w-full flex-col items-start\">\n <p\n className=\"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis text-notification-title-item\"\n style={{ fontSize: \"var(--notification-font-size-md)\", fontWeight: \"var(--notification-font-weight-semibold)\" }}\n >\n {title}\n </p>\n {description != null && description !== \"\" && (\n <p\n className={cn(\n \"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis\",\n isRead ? \"text-notification-description-item-read\" : \"text-notification-description-item-unread\"\n )}\n style={{\n fontSize: \"var(--notification-font-size-sm)\",\n fontWeight: isRead ? \"var(--notification-font-weight-regular)\" : \"var(--notification-font-weight-medium)\",\n }}\n >\n {description}\n </p>\n )}\n </div>\n {dateTime != null && dateTime !== \"\" && (\n <span\n className=\"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis text-notification-date-time-item\"\n style={{ fontSize: \"var(--notification-font-size-xs)\", fontWeight: \"var(--notification-font-weight-regular)\" }}\n >\n {dateTime}\n </span>\n )}\n </div>\n </>\n )\n}\n\n// ── Desktop variant — hover-reveal icon-only actions, no hooks needed ──────────\nfunction NotificationItemDesktop({\n variant = \"information\",\n title,\n description,\n dateTime,\n isRead,\n slotBeforeIcon,\n slotAfterIcon,\n slotBeforeActions,\n onRead,\n onUnread,\n onDelete,\n className,\n}: Omit<NotificationItemProps, \"desktop\">) {\n return (\n <div\n data-slot=\"notification-item\"\n data-read={isRead}\n data-desktop=\"true\"\n className={cn(\n \"group relative flex items-start\",\n \"h-[var(--notification-height-item)]\",\n \"gap-[var(--notification-gap-icon-content)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n \"bg-notification-bg-item-default\",\n \"transition-colors duration-[var(--duration-fast,150ms)]\",\n \"hover:bg-notification-bg-item-hover\",\n \"cursor-default select-none\",\n className\n )}\n >\n <NotificationItemContent\n variant={variant}\n title={title}\n description={description}\n dateTime={dateTime}\n isRead={isRead}\n slotBeforeIcon={slotBeforeIcon}\n slotAfterIcon={slotAfterIcon}\n />\n\n {/* Action icons — no labels, appear on group-hover */}\n <div\n className={cn(\n \"flex shrink-0 items-center self-center\",\n \"gap-[var(--notification-gap-md)]\",\n \"opacity-0 transition-opacity duration-[var(--duration-fast,150ms)]\",\n \"group-hover:opacity-100\"\n )}\n aria-hidden=\"true\"\n >\n {slotBeforeActions}\n <button\n type=\"button\"\n className=\"flex items-center justify-center rounded text-notification-icon-read-unread hover:bg-notification-bg-button-press active:bg-notification-bg-button-press transition-colors\"\n style={{ width: \"var(--notification-size-icon-container)\", height: \"var(--notification-size-icon-container)\" }}\n onClick={() => { if (!isRead) onRead?.(); else onUnread?.() }}\n aria-label={isRead ? \"Mark as unread\" : \"Mark as read\"}\n >\n {isRead\n ? <Mail style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n : <MailOpen style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n }\n </button>\n <button\n type=\"button\"\n className=\"flex items-center justify-center rounded text-notification-icon-delete hover:bg-notification-bg-button-press active:bg-notification-bg-button-press transition-colors\"\n style={{ width: \"var(--notification-size-icon-container)\", height: \"var(--notification-size-icon-container)\" }}\n onClick={() => onDelete?.()}\n aria-label=\"Delete notification\"\n >\n <Trash2 style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n </button>\n </div>\n </div>\n )\n}\n\n// ── Mobile variant — swipe-to-reveal labelled actions ───────────────────────\n// All hooks live here unconditionally, satisfying React's Rules of Hooks.\nfunction NotificationItemMobile({\n variant = \"information\",\n title,\n description,\n dateTime,\n isRead,\n slotBeforeIcon,\n slotAfterIcon,\n slotBeforeActions: _slotBeforeActions,\n onRead,\n onUnread,\n onDelete,\n className,\n}: Omit<NotificationItemProps, \"desktop\">) {\n // isSwiped drives only a11y attributes (tabIndex / aria-hidden).\n // The visual transform is applied directly to the DOM via contentRef\n // so React re-renders are never triggered during a drag — zero lag.\n const [isSwiped, setIsSwiped] = React.useState(false)\n const [readPressed, setReadPressed] = React.useState(false)\n const [deletePressed, setDeletePressed] = React.useState(false)\n const isSwipedRef = React.useRef(false)\n const contentRef = React.useRef<HTMLDivElement>(null)\n const actionsRef = React.useRef<HTMLDivElement>(null)\n const startXRef = React.useRef<number>(0)\n\n const SNAP_THRESHOLD = 40 // px delta to commit open/close\n const TAP_THRESHOLD = 5 // px delta below which we treat as tap\n\n const actionsWidth = () => actionsRef.current?.offsetWidth ?? 161\n\n const move = (x: number, animate: boolean) => {\n const el = contentRef.current\n if (!el) return\n el.style.transition = animate ? \"transform var(--duration-fast, 150ms) ease\" : \"none\"\n el.style.transform = `translateX(${x}px)`\n }\n\n const collapse = React.useCallback(() => {\n isSwipedRef.current = false\n setIsSwiped(false)\n move(0, true)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handlePointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.pointerType === \"mouse\" && e.button !== 0) return\n startXRef.current = e.clientX\n contentRef.current?.setPointerCapture(e.pointerId)\n move(isSwipedRef.current ? -actionsWidth() : 0, false)\n }\n\n const handlePointerMove = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!contentRef.current?.hasPointerCapture(e.pointerId)) return\n const base = isSwipedRef.current ? -actionsWidth() : 0\n const clamped = Math.min(0, Math.max(-actionsWidth(), base + (e.clientX - startXRef.current)))\n move(clamped, false)\n }\n\n const handlePointerUp = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!contentRef.current?.hasPointerCapture(e.pointerId)) return\n contentRef.current.releasePointerCapture(e.pointerId)\n\n const delta = e.clientX - startXRef.current\n\n if (Math.abs(delta) < TAP_THRESHOLD) {\n if (isSwipedRef.current) collapse()\n return\n }\n\n const target = (isSwipedRef.current ? -actionsWidth() : 0) + delta\n\n if (target < -SNAP_THRESHOLD) {\n isSwipedRef.current = true\n setIsSwiped(true)\n move(-actionsWidth(), true)\n } else {\n collapse()\n }\n }\n\n return (\n <div\n data-slot=\"notification-item\"\n data-read={isRead}\n className={cn(\n \"relative overflow-hidden bg-notification-bg-item-default\",\n \"h-[var(--notification-height-item)]\",\n className\n )}\n >\n {/* Action buttons — fixed at right-0, revealed when content slides left */}\n <div ref={actionsRef} className=\"absolute inset-y-0 right-0 flex\" aria-hidden={!isSwiped}>\n {/* Read / Unread */}\n <button\n type=\"button\"\n tabIndex={isSwiped ? 0 : -1}\n className={cn(\n \"flex h-full flex-col items-center justify-center gap-[var(--notification-gap-sm)] overflow-hidden\",\n \"text-notification-text-read-unread\",\n readPressed ? \"bg-notification-bg-button-press\" : \"bg-notification-bg-button-default\"\n )}\n style={{ width: \"var(--notification-width-button)\" }}\n onMouseDown={() => setReadPressed(true)}\n onMouseUp={() => {\n setReadPressed(false)\n if (!isRead) onRead?.(); else onUnread?.()\n collapse()\n }}\n onMouseLeave={() => setReadPressed(false)}\n onTouchStart={(e) => { e.stopPropagation(); setReadPressed(true) }}\n onTouchEnd={(e) => {\n e.preventDefault(); e.stopPropagation()\n setReadPressed(false)\n if (!isRead) onRead?.(); else onUnread?.()\n collapse()\n }}\n aria-label={isRead ? \"Mark as unread\" : \"Mark as read\"}\n >\n {isRead\n ? <Mail className=\"shrink-0 text-notification-icon-read-unread\" style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n : <MailOpen className=\"shrink-0 text-notification-icon-read-unread\" style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n }\n <span className=\"text-center leading-[1.5]\" style={{ fontSize: \"var(--notification-font-size-xs)\", fontWeight: \"var(--notification-font-weight-medium)\" }}>\n {isRead ? \"Unread\" : \"Read\"}\n </span>\n </button>\n\n {/* Divider */}\n <div className=\"h-full bg-notification-bg-divider\" style={{ width: \"var(--notification-width-divider)\" }} />\n\n {/* Delete */}\n <button\n type=\"button\"\n tabIndex={isSwiped ? 0 : -1}\n className={cn(\n \"flex h-full flex-col items-center justify-center gap-[var(--notification-gap-sm)] overflow-hidden\",\n \"text-notification-text-delete\",\n deletePressed ? \"bg-notification-bg-button-press\" : \"bg-notification-bg-button-default\"\n )}\n style={{ width: \"var(--notification-width-button)\" }}\n onMouseDown={() => setDeletePressed(true)}\n onMouseUp={() => { setDeletePressed(false); onDelete?.() }}\n onMouseLeave={() => setDeletePressed(false)}\n onTouchStart={(e) => { e.stopPropagation(); setDeletePressed(true) }}\n onTouchEnd={(e) => {\n e.preventDefault(); e.stopPropagation()\n setDeletePressed(false); onDelete?.()\n }}\n aria-label=\"Delete notification\"\n >\n <Trash2 className=\"shrink-0 text-notification-icon-delete\" style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n <span className=\"text-center leading-[1.5]\" style={{ fontSize: \"var(--notification-font-size-xs)\", fontWeight: \"var(--notification-font-weight-medium)\" }}>\n Delete\n </span>\n </button>\n </div>\n\n {/* Main content — transform driven directly via DOM ref, no React re-render during drag */}\n <div\n ref={contentRef}\n className={cn(\n \"absolute inset-0 flex items-start touch-pan-y\",\n \"gap-[var(--notification-gap-icon-content)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n \"bg-notification-bg-item-default\",\n \"cursor-default select-none\"\n )}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n >\n <NotificationItemContent\n variant={variant}\n title={title}\n description={description}\n dateTime={dateTime}\n isRead={isRead}\n slotBeforeIcon={slotBeforeIcon}\n slotAfterIcon={slotAfterIcon}\n />\n </div>\n </div>\n )\n}\n\n// ── Public API — thin wrapper, delegates to the correct internal component ────\nfunction NotificationItem({ desktop = false, ...props }: NotificationItemProps) {\n if (desktop) return <NotificationItemDesktop {...props} />\n return <NotificationItemMobile {...props} />\n}\n\n// ─── NotificationDivider ─────────────────────────────────────────────────────\n\nfunction NotificationDivider({ className }: { className?: string }) {\n return (\n <div\n data-slot=\"notification-divider\"\n className={cn(\"w-full bg-notification-bg-divider\", className)}\n style={{ height: \"var(--notification-width-divider)\" }}\n />\n )\n}\n\nexport { NotificationBanner, NotificationItem, NotificationDivider }\n\nexport type { NotificationVariant, NotificationBannerProps, NotificationItemProps }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst sectionMessageVariants = cva(\n \"relative w-full rounded-[var(--section-message-radius)] border-0 px-[var(--section-message-padding-horizontal)] py-[var(--section-message-padding-vertical)] text-section-message-title has-[>svg]:grid has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:items-center has-[>svg]:gap-x-[var(--section-message-gap-horizontal)] [&>svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n /* ── token-backed section-message variants ── */\n default:\n \"bg-section-message-fill-bg-default [&>svg]:text-section-message-icon-close\",\n danger:\n \"bg-section-message-fill-bg-danger [&>svg]:text-section-message-icon-danger\",\n information:\n \"bg-section-message-fill-bg-information [&>svg]:text-section-message-icon-information\",\n success:\n \"bg-section-message-fill-bg-success [&>svg]:text-section-message-icon-success\",\n warning:\n \"bg-section-message-fill-bg-warning [&>svg]:text-section-message-icon-warning\",\n info: \"bg-section-message-fill-bg-information [&>svg]:text-section-message-icon-information\",\n error:\n \"bg-section-message-fill-bg-danger [&>svg]:text-section-message-icon-danger\",\n },\n size: {\n sm: [\n \"[font-size:var(--section-message-sm-font-size-message)]\",\n \"[&>svg:not([class*='size-'])]:size-[var(--section-message-sm-icon-size)]\",\n \"[&_[data-slot=section-message-title]]:text-[length:var(--section-message-sm-font-size-title)]\",\n \"[&_[data-slot=section-message-description]]:gap-[var(--section-message-sm-gap-vertical-2)]\",\n ],\n md: [\n \"[font-size:var(--section-message-md-font-size-message)]\",\n \"[&>svg:not([class*='size-'])]:size-[var(--section-message-md-icon-size)]\",\n \"[&_[data-slot=section-message-title]]:text-[length:var(--section-message-md-font-size-title)]\",\n \"[&_[data-slot=section-message-description]]:gap-[var(--section-message-md-gap-vertical-2)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction SectionMessage({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof sectionMessageVariants>) {\n return (\n <div\n data-slot=\"section-message\"\n role=\"alert\"\n className={cn(sectionMessageVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nfunction SectionMessageTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"section-message-title\"\n className={cn(\n \"col-start-2 font-bold leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SectionMessageDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"section-message-description\"\n className={cn(\n \"col-start-2 grid justify-items-start gap-[var(--section-message-gap-vertical-1)] text-section-message-description [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { SectionMessage, SectionMessageTitle, SectionMessageDescription }\n","\"use client\"\n\nimport { AspectRatio as AspectRatioPrimitive } from \"radix-ui\"\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: \"default\" | \"sm\" | \"lg\" | \"xl\"\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 data-[size=sm]:size-6 data-[size=lg]:size-10 data-[size=xl]:[width:var(--avatar-size-xl)] data-[size=xl]:[height:var(--avatar-size-xl)]\",\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(\"aspect-square size-full overflow-hidden rounded-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex size-full items-center justify-center overflow-hidden rounded-full bg-secondary-surface text-sm text-subtle group-data-[size=sm]/avatar:text-xs group-data-[size=xl]/avatar:text-base\",\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-prominent-static-inverse ring-2 ring-primary-surface 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 \"group-data-[size=xl]/avatar:size-3.5 group-data-[size=xl]/avatar:[&>svg]:size-2.5\",\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-primary-surface\",\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-secondary-surface text-sm text-subtle ring-2 ring-primary-surface group-has-data-[size=sm]/avatar-group:size-6 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=xl]/avatar-group:[width:var(--avatar-size-xl)] group-has-data-[size=xl]/avatar-group:[height:var(--avatar-size-xl)] [&>svg]:size-4 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=xl]/avatar-group:[&>svg]:size-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarBadge,\n AvatarGroup,\n AvatarGroupCount,\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 tagVariants = cva(\n \"inline-flex w-fit shrink-0 items-center justify-center overflow-hidden border font-body font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:pointer-events-none [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n /* ── fill: tinted background, no border ── */\n \"fill-neutral\": \"bg-tag-fill-bg-neutral text-tag-text-neutral border-transparent [&>svg]:text-tag-icon-default\",\n \"fill-red\": \"bg-tag-fill-bg-red text-tag-text-red border-transparent [&>svg]:text-tag-icon-red\",\n \"fill-yellow\": \"bg-tag-fill-bg-yellow text-tag-text-yellow border-transparent [&>svg]:text-tag-icon-yellow\",\n \"fill-green\": \"bg-tag-fill-bg-green text-tag-text-green border-transparent [&>svg]:text-tag-icon-green\",\n \"fill-blue\": \"bg-tag-fill-bg-blue text-tag-text-blue border-transparent [&>svg]:text-tag-icon-blue\",\n /* ── outline: transparent background, coloured border ── */\n \"outline-neutral\": \"bg-transparent border-tag-outline-border-neutral text-tag-text-neutral [&>svg]:text-tag-icon-default\",\n \"outline-red\": \"bg-transparent border-tag-outline-border-red text-tag-text-red [&>svg]:text-tag-icon-red\",\n \"outline-yellow\": \"bg-transparent border-tag-outline-border-yellow text-tag-text-yellow [&>svg]:text-tag-icon-yellow\",\n \"outline-green\": \"bg-transparent border-tag-outline-border-green text-tag-text-green [&>svg]:text-tag-icon-green\",\n \"outline-blue\": \"bg-transparent border-tag-outline-border-blue text-tag-text-blue [&>svg]:text-tag-icon-blue\",\n },\n size: {\n sm: [\n \"h-[var(--tag-sm-height)]\",\n \"min-w-[var(--tag-sm-min-width)]\",\n \"px-[var(--tag-sm-padding-horizontal)]\",\n \"gap-[var(--tag-sm-gap)]\",\n \"[font-size:var(--tag-sm-font-size)]\",\n \"[font-weight:var(--tag-sm-font-weight)]\",\n \"rounded-[var(--tag-sm-radius)]\",\n \"[&>svg]:[width:var(--tag-sm-icon-size)] [&>svg]:[height:var(--tag-sm-icon-size)]\",\n ],\n md: [\n \"h-[var(--tag-md-height)]\",\n \"min-w-[var(--tag-md-min-width)]\",\n \"px-[var(--tag-md-padding-horizontal)]\",\n \"gap-[var(--tag-md-gap)]\",\n \"[font-size:var(--tag-md-font-size)]\",\n \"[font-weight:var(--tag-md-font-weight)]\",\n \"rounded-[var(--tag-md-radius)]\",\n \"[&>svg]:[width:var(--tag-md-icon-size)] [&>svg]:[height:var(--tag-md-icon-size)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"fill-neutral\",\n size: \"md\",\n },\n }\n)\n\nfunction Tag({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof tagVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"tag\"\n data-variant={variant}\n className={cn(tagVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Tag, tagVariants }\n","import * as React from \"react\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\ntype BreadcrumbSize = \"sm\" | \"md\"\n\nconst BreadcrumbContext = React.createContext<{ size: BreadcrumbSize }>({ size: \"md\" })\n\n/**\n * Breadcrumb navigation container.\n *\n * @param size - \"sm\" (14px) | \"md\" (16px). Default: \"md\"\n *\n * @example\n * <Breadcrumb size=\"sm\">\n * <BreadcrumbList>\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbSeparator />\n * <BreadcrumbItem>\n * <BreadcrumbPage>Current</BreadcrumbPage>\n * </BreadcrumbItem>\n * </BreadcrumbList>\n * </Breadcrumb>\n */\nfunction Breadcrumb({\n size = \"md\",\n ...props\n}: React.ComponentProps<\"nav\"> & { size?: BreadcrumbSize }) {\n return (\n <BreadcrumbContext.Provider value={{ size }}>\n <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n </BreadcrumbContext.Provider>\n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n const { size } = React.useContext(BreadcrumbContext)\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex flex-wrap items-center break-words\",\n size === \"sm\" ? \"gap-1 text-sm\" : \"gap-1 text-base\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n )\n}\n\n/**\n * Navigable breadcrumb link — \"default\" state in Figma.\n * Uses `text-breadcrumb-default` (72% opacity) with hover lift to `text-prominent`.\n */\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"a\"\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\n \"text-breadcrumb-default transition-colors hover:text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\n/**\n * Current / active page — \"selected\" state in Figma.\n * Renders muted (48% opacity), non-interactive, aria-current=\"page\".\n */\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-breadcrumb-selected\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n const { size } = React.useContext(BreadcrumbContext)\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n \"text-breadcrumb-sep\",\n size === \"sm\" ? \"[&>svg]:size-3.5\" : \"[&>svg]:size-4\",\n className\n )}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center text-breadcrumb-default\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\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 buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-24 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display font-semibold\",\n {\n variants: {\n variant: {\n primary:\n \"border-transparent bg-button-primary-bg text-button-primary-text hover:bg-button-primary-bg-hover active:bg-button-primary-bg-pressed\",\n secondary:\n \"bg-transparent border-button-secondary-border text-button-secondary-text hover:bg-button-secondary-bg-hover active:bg-button-secondary-bg-pressed\",\n tertiary:\n \"border-transparent bg-button-tertiary-bg text-button-tertiary-text hover:bg-button-tertiary-bg-hover active:bg-button-tertiary-bg-pressed\",\n ghost:\n \"border-transparent bg-transparent text-button-ghost-text hover:bg-button-ghost-bg-hover active:bg-button-ghost-bg-pressed\",\n },\n size: {\n lg: \"h-[var(--button-lg-height)] w-fit min-w-[var(--button-lg-min-width)] gap-[var(--button-lg-gap)] rounded-[var(--button-lg-radius)] px-[var(--button-lg-padding-horizontal)] [font-size:var(--button-lg-font-size)] [border-width:var(--button-lg-border-width)] [&_svg:not([class*='size-'])]:size-5\",\n md: \"h-[var(--button-md-height)] w-fit min-w-[var(--button-md-min-width)] gap-[var(--button-md-gap)] rounded-[var(--button-md-radius)] px-[var(--button-md-padding-horizontal)] [font-size:var(--button-md-font-size)] [border-width:var(--button-md-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n sm: \"h-[var(--button-sm-height)] w-fit min-w-[var(--button-sm-min-width)] gap-[var(--button-sm-gap)] rounded-[var(--button-sm-radius)] px-[var(--button-sm-padding-horizontal)] [font-size:var(--button-sm-font-size)] [border-width:var(--button-sm-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n xs: \"h-6 w-fit gap-1 rounded-full px-2 text-xs [border-width:1.5px] [&_svg:not([class*='size-'])]:size-3\", /* no token — kept as-is */\n icon: \"size-[var(--button-lg-icon-size)] rounded-[var(--button-lg-radius)] [border-width:var(--button-lg-border-width)] [&_svg:not([class*='size-'])]:size-5\",\n \"icon-lg\": \"size-[var(--button-lg-icon-size)] rounded-[var(--button-lg-radius)] [border-width:var(--button-lg-border-width)] [&_svg:not([class*='size-'])]:size-5\",\n \"icon-md\": \"size-[var(--button-md-icon-size)] rounded-[var(--button-md-radius)] [border-width:var(--button-md-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n \"icon-sm\": \"size-[var(--button-sm-icon-size)] rounded-[var(--button-sm-radius)] [border-width:var(--button-sm-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n \"icon-xs\": \"size-6 rounded-full [border-width:1.5px] [&_svg:not([class*='size-'])]:size-3\", /* no token — kept as-is */\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"lg\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"primary\",\n size = \"lg\",\n asChild = false,\n loading = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n loading?: 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 data-loading={loading || undefined}\n className={cn(buttonVariants({ variant, size, className }), loading && \"pointer-events-none opacity-24\")}\n aria-busy={loading || undefined}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst chipVariants = cva(\n [\n /* layout */\n \"inline-flex w-fit shrink-0 items-center justify-center whitespace-nowrap\",\n /* typography */\n \"font-body font-medium text-chip-text-prominent\",\n /* border + shape */\n \"border border-chip-border-default bg-transparent\",\n \"[border-width:var(--chip-border-width)]\",\n \"rounded-[var(--chip-radius)]\",\n /* interactive states */\n \"cursor-pointer\",\n \"hover:bg-chip-bg-hover\",\n \"active:bg-chip-bg-pressed\",\n /* selected state */\n \"data-[selected]:bg-chip-bg-selected\",\n \"data-[selected]:border-chip-border-selected\",\n \"data-[selected]:[border-width:var(--chip-border-width-selected)]\",\n /* disabled state */\n \"disabled:pointer-events-none\",\n \"disabled:text-chip-text-disabled\",\n \"disabled:border-chip-border-disabled\",\n \"disabled:[&>svg]:text-chip-icon-disabled\",\n /* icon */\n \"[&>svg]:pointer-events-none [&>svg]:shrink-0 [&>svg]:text-chip-icon-prominent\",\n /* focus */\n \"outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n /* transitions */\n \"transition-[color,background-color,border-color,border-width]\",\n ],\n {\n variants: {\n size: {\n sm: [\n \"h-[var(--chip-sm-height)]\",\n \"px-[var(--chip-sm-padding-horizontal)]\",\n \"gap-[var(--chip-sm-gap)]\",\n \"[font-size:var(--chip-sm-font-size)]\",\n \"[&>svg]:[width:var(--chip-sm-icon-size)] [&>svg]:[height:var(--chip-sm-icon-size)]\",\n ],\n md: [\n \"h-[var(--chip-md-height)]\",\n \"px-[var(--chip-md-padding-horizontal)]\",\n \"gap-[var(--chip-md-gap)]\",\n \"[font-size:var(--chip-md-font-size)]\",\n \"[&>svg]:[width:var(--chip-md-icon-size)] [&>svg]:[height:var(--chip-md-icon-size)]\",\n ],\n lg: [\n \"h-[var(--chip-lg-height)]\",\n \"px-[var(--chip-lg-padding-horizontal)]\",\n \"gap-[var(--chip-lg-gap)]\",\n \"[font-size:var(--chip-lg-font-size)]\",\n \"[&>svg]:[width:var(--chip-lg-icon-size)] [&>svg]:[height:var(--chip-lg-icon-size)]\",\n ],\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nfunction Chip({\n className,\n size,\n selected = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof chipVariants> & {\n selected?: boolean\n }) {\n return (\n <button\n type=\"button\"\n data-slot=\"chip\"\n data-selected={selected || undefined}\n aria-pressed={selected}\n className={cn(chipVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nexport { Chip, chipVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button, buttonVariants } from \"./button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker>) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-card rounded-md border border-border/50 p-4 [--cell-size:--spacing(10)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=card-content]_&]:border-0 [[data-slot=card-content]_&]:shadow-none [[data-slot=popover-content]_&]:bg-transparent [[data-slot=popover-content]_&]:border-0 [[data-slot=popover-content]_&]:shadow-none\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"relative flex flex-col gap-4 md:flex-row\",\n defaultClassNames.months\n ),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon-sm\" }),\n \"p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon-sm\" }),\n \"p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute inset-0 bg-primary-surface opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"font-body font-medium select-none\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-subtle\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"flex-1 rounded-md text-[0.8rem] font-body font-normal text-subtle select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n week_number_header: cn(\n \"w-(--cell-size) select-none\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] text-subtle select-none\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-md\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-xs bg-prominent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-xs bg-prominent\", defaultClassNames.range_end),\n today: defaultClassNames.today,\n outside: cn(\n \"text-subtle aria-selected:text-subtle\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-subtle opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"tertiary\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-today={modifiers.today || undefined}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-body font-normal rounded-xs bg-transparent border-transparent shadow-none text-prominent hover:!bg-secondary-hover hover:text-prominent hover:no-underline hover:shadow-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 data-[range-end=true]:rounded-xs data-[range-end=true]:bg-prominent data-[range-end=true]:border-transparent data-[range-end=true]:text-primary-surface data-[range-end=true]:hover:!bg-prominent data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-prominent/10 data-[range-middle=true]:text-prominent data-[range-start=true]:rounded-xs data-[range-start=true]:bg-prominent data-[range-start=true]:border-transparent data-[range-start=true]:text-primary-surface data-[range-start=true]:hover:!bg-prominent data-[selected-single=true]:bg-prominent data-[selected-single=true]:border-transparent data-[selected-single=true]:text-primary-surface data-[selected-single=true]:hover:!bg-prominent [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// ── Card ──────────────────────────────────────────────────────────────────────\n\nconst cardVariants = cva(\n \"flex flex-col gap-6 rounded-2xl py-6 text-prominent\",\n {\n variants: {\n variant: {\n /** Elevated card — white surface lifted by a shadow, no border */\n elevate: \"bg-card border border-transparent shadow-accordion-fill\",\n /** Outlined card — white surface with a subtle 8% border, no shadow */\n outline: \"bg-card border border-default/50\",\n },\n },\n defaultVariants: {\n variant: \"outline\",\n },\n }\n)\n\nfunction Card({\n className,\n variant = \"outline\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof cardVariants>) {\n return (\n <div\n data-slot=\"card\"\n data-variant={variant}\n className={cn(cardVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\n// ── CardHeader ────────────────────────────────────────────────────────────────\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── CardTitle ─────────────────────────────────────────────────────────────────\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\n// ── CardDescription ───────────────────────────────────────────────────────────\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-subtle\", className)}\n {...props}\n />\n )\n}\n\n// ── CardAction ────────────────────────────────────────────────────────────────\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\n// ── CardContent ───────────────────────────────────────────────────────────────\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\n// ── CardFooter ────────────────────────────────────────────────────────────────\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n cardVariants,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"secondary\",\n size = \"icon-md\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute rounded-sm\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"secondary\",\n size = \"icon-md\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute rounded-sm\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR } — light-only\nconst THEMES = { light: \"\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\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 ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\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 {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 }) {\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 as keyof typeof config]?.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-[8rem] items-start gap-1.5 rounded-lg border border-default/50 bg-primary-surface 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={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-subtle\",\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-subtle\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium text-prominent tabular-nums\">\n {item.value.toLocaleString()}\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 Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\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) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-subtle\"\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\n// Helper to extract item config from a payload.\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\n ? config[configLabelKey]\n : config[key as keyof typeof config]\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 { CheckIcon, InfoIcon, MinusIcon } from \"lucide-react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Checkbox — raw Radix primitive */\n/* */\n/* Visual model (matches Figma Quill spec): */\n/* • unchecked — transparent bg, ~50% opacity prominent border */\n/* • checked — bg-selected fill (dark in light / white in dark mode) */\n/* • indeterminate — same fill as checked, minus icon instead of check */\n/* */\n/* Indicator uses text-background for the icon so it automatically contrasts */\n/* against bg-selected in both light (near-white on dark) and dark (dark on */\n/* white) modes — no separate token registration needed. */\n/* ─────────────────────────────────────────────────────────────────────────── */\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 size-4 shrink-0 rounded-[2px] border border-prominent/50\",\n \"transition-colors duration-instant outline-none\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-selected data-[state=checked]:border-selected\",\n \"data-[state=indeterminate]:bg-selected data-[state=indeterminate]:border-selected\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-background transition-none\"\n >\n {/*\n * Radix Indicator sets data-state on itself (\"checked\" | \"indeterminate\").\n * Hide the icon that does NOT match, leaving the correct one visible.\n * text-background on the Indicator gives near-white (light mode) or\n * dark (dark mode), contrasting correctly against bg-selected in both modes.\n */}\n <CheckIcon className=\"size-3.5 [[data-state=indeterminate]_&]:hidden\" />\n <MinusIcon className=\"size-3.5 [[data-state=checked]_&]:hidden\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CheckboxField — composite: checkbox + label + optional info icon */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype CheckboxFieldProps = Omit<\n React.ComponentProps<typeof CheckboxPrimitive.Root>,\n \"children\"\n> & {\n /**\n * Visual size variant.\n * - `sm` → 14 px label, 14 px info icon\n * - `md` → 16 px label, 16 px info icon (default)\n */\n size?: \"sm\" | \"md\"\n /** Label text rendered next to the checkbox. */\n label?: React.ReactNode\n /** When `true`, renders a Lucide `InfoIcon` after the label text. */\n info?: boolean\n}\n\nfunction CheckboxField({\n id,\n label,\n info = false,\n size = \"md\",\n disabled,\n className,\n ...props\n}: CheckboxFieldProps) {\n return (\n <label\n data-slot=\"checkbox-field\"\n data-size={size}\n className={cn(\n \"inline-flex items-center gap-2 cursor-pointer select-none\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n className\n )}\n >\n <Checkbox id={id} disabled={disabled} {...props} />\n\n {label != null && (\n <span\n className={cn(\n \"inline-flex items-center gap-2 text-prominent\",\n size === \"sm\" ? \"text-sm leading-5\" : \"text-base leading-6\"\n )}\n >\n <span>{label}</span>\n {info && (\n <InfoIcon\n aria-hidden\n className={cn(\n \"shrink-0 text-prominent\",\n size === \"sm\" ? \"size-3.5\" : \"size-4\"\n )}\n />\n )}\n </span>\n )}\n </label>\n )\n}\n\nexport { Checkbox, CheckboxField }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { ListItem } from \"./list-item\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Collapsible */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CollapsibleTrigger */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CollapsibleContent */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction CollapsibleContent({\n className,\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n className={cn(\"flex flex-col gap-0.5\", className)}\n {...props}\n />\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CollapsibleItem */\n/* */\n/* A thin wrapper over ListItem locked to type=\"primary\" size=\"md\". */\n/* Renders each row inside CollapsibleContent with the exact same visual */\n/* as a primary md list item (bg, hover, pressed, selected, disabled states). */\n/* Pass asChild to render as a button/link for interactive items. */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction CollapsibleItem({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof ListItem>, \"type\" | \"size\">) {\n return (\n <ListItem\n data-slot=\"collapsible-item\"\n type=\"primary\"\n size=\"md\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nexport {\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n CollapsibleItem,\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\"\nimport { Separator } from \"./separator\"\n\n// ── ListItemGroup ─────────────────────────────────────────────────────────────\n\nfunction ListItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"list-item-group\"\n className={cn(\"group/list-item-group flex flex-col\", className)}\n {...props}\n />\n )\n}\n\n// ── ListItemSeparator ─────────────────────────────────────────────────────────\n\nfunction ListItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"list-item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n )\n}\n\n// ── ListItem ──────────────────────────────────────────────────────────────────\n\nconst listItemVariants = cva(\n [\n \"group/list-item flex flex-wrap items-center\",\n \"rounded-[var(--list-item-radius)]\",\n \"border border-transparent\",\n \"transition-colors duration-instant\",\n \"outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"text-list-item-text-prominent [font-weight:var(--list-item-md-font-weight,400)]\",\n // icon slot inherits token color\n \"[&_[data-slot=list-item-icon]]:text-list-item-icon-prominent\",\n // disabled: mute text, icons, and block interaction\n \"data-[disabled]:text-list-item-text-disabled\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"data-[disabled]:[&_[data-slot=list-item-icon]]:text-list-item-icon-disabled\",\n ].join(\" \"),\n {\n variants: {\n type: {\n /** Primary surface — default bg, no border */\n primary: [\n \"bg-list-item-primary-bg-default\",\n \"hover:bg-list-item-primary-bg-hover\",\n \"active:bg-list-item-primary-bg-pressed\",\n \"data-[selected]:bg-list-item-primary-bg-selected data-[selected]:border-list-item-border-selected\",\n \"data-[disabled]:bg-list-item-primary-bg-disabled\",\n ],\n /** Secondary surface — used for lists on elevated or card backgrounds */\n secondary: [\n \"bg-list-item-secondary-bg-default\",\n \"hover:bg-list-item-secondary-bg-hover\",\n \"active:bg-list-item-secondary-bg-pressed\",\n \"data-[selected]:bg-list-item-secondary-bg-selected data-[selected]:border-list-item-border-selected\",\n \"data-[disabled]:bg-list-item-secondary-bg-disabled\",\n ],\n },\n size: {\n md: \"gap-[var(--list-item-md-gap)] px-[var(--list-item-md-padding-horizontal)] min-h-[var(--list-item-md-height)] py-2 [font-size:var(--list-item-md-font-size)]\",\n sm: \"gap-[var(--list-item-sm-gap)] px-[var(--list-item-sm-padding-horizontal)] min-h-[var(--list-item-sm-height)] py-1 [font-size:var(--list-item-sm-font-size)]\",\n },\n },\n defaultVariants: {\n type: \"primary\",\n size: \"md\",\n },\n }\n)\n\nfunction ListItem({\n className,\n type = \"primary\",\n size = \"md\",\n selected,\n disabled,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof listItemVariants> & {\n asChild?: boolean\n selected?: boolean\n disabled?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"div\"\n return (\n <Comp\n role=\"listitem\"\n data-slot=\"list-item\"\n data-type={type}\n data-size={size}\n data-selected={selected || undefined}\n data-disabled={disabled || undefined}\n className={cn(listItemVariants({ type, size }), className)}\n {...props}\n />\n )\n}\n\n// ── ListItemIcon ──────────────────────────────────────────────────────────────\n// Bare Lucide icon wrapper. Color is set by the parent ListItem via\n// [data-slot=list-item-icon] selectors, mapping to icon-prominent/icon-disabled tokens.\n\nfunction ListItemIcon({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"list-item-icon\"\n aria-hidden=\"true\"\n className={cn(\n \"shrink-0 flex items-center justify-center\",\n \"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-5\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemFlag ──────────────────────────────────────────────────────────────\n// Country flag thumbnail. Renders a coloured placeholder when no src is given.\n\nfunction ListItemFlag({\n src,\n alt = \"\",\n className,\n ...props\n}: Omit<React.ComponentProps<\"div\">, \"children\"> & {\n src?: string\n alt?: string\n}) {\n return (\n <div\n data-slot=\"list-item-flag\"\n className={cn(\n \"shrink-0 h-4 w-6 overflow-hidden rounded-2xs bg-list-item-flag-placeholder\",\n className\n )}\n {...props}\n >\n {src && (\n <img src={src} alt={alt} className=\"size-full object-cover\" />\n )}\n </div>\n )\n}\n\n// ── ListItemMedia ─────────────────────────────────────────────────────────────\n// Structural media container: use variant=\"icon\" for a boxed icon cell,\n// variant=\"image\" for a thumbnail, or leave as default for a bare icon.\n\nconst listItemMediaVariants = cva(\n [\n \"flex shrink-0 items-center justify-center gap-2\",\n \"group-has-[[data-slot=list-item-description]]/list-item:translate-y-0.5\",\n \"group-has-[[data-slot=list-item-description]]/list-item:self-start\",\n \"[&_svg]:pointer-events-none\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-sm border bg-secondary-surface [&_svg:not([class*='size-'])]:size-4\",\n image: \"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ListItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof listItemMediaVariants>) {\n return (\n <div\n data-slot=\"list-item-media\"\n data-variant={variant}\n className={cn(listItemMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\n// ── ListItemContent ───────────────────────────────────────────────────────────\n\nfunction ListItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 [&+[data-slot=list-item-content]]:flex-none\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemTitle ─────────────────────────────────────────────────────────────\n\nfunction ListItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-title\"\n className={cn(\n \"flex w-fit items-center gap-2 [font-size:var(--list-item-md-font-size)] leading-snug font-medium text-list-item-text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemDescription ───────────────────────────────────────────────────────\n\nfunction ListItemDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"list-item-description\"\n className={cn(\n \"line-clamp-2 text-sm leading-normal font-normal text-balance text-subtle\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemActions ───────────────────────────────────────────────────────────\n\nfunction ListItemActions({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\n// ── ListItemHeader ────────────────────────────────────────────────────────────\n\nfunction ListItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemFooter ────────────────────────────────────────────────────────────\n\nfunction ListItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-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 ListItem,\n ListItemGroup,\n ListItemSeparator,\n ListItemIcon,\n ListItemFlag,\n ListItemMedia,\n ListItemContent,\n ListItemTitle,\n ListItemDescription,\n ListItemActions,\n ListItemHeader,\n ListItemFooter,\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 // Only apply h-full as the default for vertical when the consumer hasn't\n // provided an explicit height class. This prevents specificity conflicts\n // where data-[orientation=vertical]:h-full would override a passed h-* class.\n const hasHeightClass = /\\bh-/.test(className ?? \"\")\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border-subtle data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px\",\n orientation === \"vertical\" && !hasHeightClass && \"h-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { CheckIcon, ChevronDownIcon, XIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"./input-group\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n <ChevronDownIcon\n data-slot=\"combobox-trigger-icon\"\n className=\"pointer-events-none size-4 text-subtle\"\n />\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"secondary\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n showTrigger = true,\n showClear = false,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n}) {\n return (\n <InputGroup className={cn(\"w-auto\", className)}>\n <ComboboxPrimitive.Input\n render={<InputGroupInput disabled={disabled} />}\n {...props}\n />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"secondary\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <ComboboxTrigger />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"isolate z-[65]\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={cn(\n \"group/combobox-content relative max-h-96 w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-primary-surface text-prominent shadow-md ring-1 ring-default duration-100 data-[chips=true]:min-w-(--anchor-width) 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=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none 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 </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={cn(\n \"max-h-[min(calc(--spacing(96)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-primary/10 data-highlighted:text-prominent 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 {children}\n <ComboboxPrimitive.ItemIndicator\n data-slot=\"combobox-item-indicator\"\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <CheckIcon className=\"pointer-events-none size-4 pointer-coarse:size-5\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn(\n \"px-2 py-1.5 text-xs text-subtle pointer-coarse:px-3 pointer-coarse:py-2 pointer-coarse:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n \"hidden w-full justify-center py-2 text-center text-sm text-subtle group-data-empty/combobox-content:flex\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxChips({\n className,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={cn(\n \"flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxChip({\n className,\n children,\n showRemove = true,\n ...props\n}: ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean\n}) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n \"flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm bg-secondary-surface px-1.5 text-xs font-medium whitespace-nowrap text-prominent has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\",\n className\n )}\n {...props}\n >\n {children}\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"secondary\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({\n className,\n children: _children,\n ...props\n}: ComboboxPrimitive.Input.Props) {\n return (\n <ComboboxPrimitive.Input\n data-slot=\"combobox-chip-input\"\n className={cn(\"min-w-16 flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxContent,\n ComboboxList,\n ComboboxItem,\n ComboboxGroup,\n ComboboxLabel,\n ComboboxCollection,\n ComboboxEmpty,\n ComboboxSeparator,\n ComboboxChips,\n ComboboxChip,\n ComboboxChipsInput,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n}\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 \"./button\"\nimport { Textarea } from \"./textarea\"\n\nconst inputGroupVariants = cva(\n [\n \"group/input-group relative flex w-full items-center min-w-0 overflow-hidden\",\n \"[border-width:var(--semantic-size-border-1)] border-solid\",\n \"transition-[color,border-color,border-width,background-color,box-shadow] duration-200\",\n \"h-[var(--field-height)] rounded-[var(--field-radius)]\",\n \"focus-within:[border-width:var(--semantic-size-border-1-5)]\",\n // Disabled when the input control itself is disabled (not just a button at min/max boundary)\n \"has-[[data-slot=input-group-control]:disabled]:pointer-events-none has-[[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[[data-slot=input-group-control]:disabled]:opacity-50\",\n // Disabled when the group is explicitly marked disabled via data-disabled (e.g. labelled stepper with no input control)\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50\",\n \"has-[>[data-align=inline-start]]:[&_[data-slot=input-group-control]]:pl-[var(--semantic-size-spacing-8)]\",\n \"has-[>[data-align=inline-end]]:[&_[data-slot=input-group-control]]:pr-[var(--semantic-size-spacing-8)]\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&_[data-slot=input-group-control]]:pb-[var(--semantic-size-spacing-12)]\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&_[data-slot=input-group-control]]:pt-[var(--semantic-size-spacing-12)]\",\n \"has-[>textarea]:h-auto\",\n ].join(\" \"),\n {\n variants: {\n // Size sets the field height and font-size on the wrapper; children inherit font-size.\n // Mirrors the same pattern used in inputWrapperVariants (input.tsx).\n size: {\n md: \"[font-size:var(--field-font-size-md)]\",\n sm: \"h-[var(--field-sm-height)] [font-size:var(--semantic-size-width-height-14)]\",\n },\n variant: {\n outline: [\n \"bg-field-outline-bg-default border-field-outline-border-default\",\n \"hover:bg-field-outline-bg-hover\",\n \"focus-within:bg-field-outline-bg-focus focus-within:border-field-outline-border-focus\",\n \"has-[:disabled]:bg-field-outline-bg-disabled has-[:disabled]:border-field-outline-border-disabled\",\n ].join(\" \"),\n fill: [\n \"bg-field-fill-bg-default border-transparent\",\n \"hover:bg-field-fill-bg-hover\",\n \"focus-within:bg-field-fill-bg-focus focus-within:border-field-fill-border-focus\",\n \"has-[:disabled]:bg-field-fill-bg-disabled\",\n ].join(\" \"),\n },\n status: {\n default: \"\",\n success: \"border-field-outline-border-success\",\n error: \"border-field-outline-border-error\",\n },\n },\n compoundVariants: [\n {\n variant: \"outline\",\n status: \"success\",\n className: \"focus-within:border-field-outline-border-success\",\n },\n {\n variant: \"outline\",\n status: \"error\",\n className: \"focus-within:border-field-outline-border-error\",\n },\n {\n variant: \"fill\",\n status: \"success\",\n className: [\n \"bg-field-fill-bg-success-default hover:bg-field-fill-bg-success-hover\",\n \"focus-within:bg-field-fill-bg-success-focus focus-within:border-field-fill-border-success\",\n \"border-transparent\",\n ].join(\" \"),\n },\n {\n variant: \"fill\",\n status: \"error\",\n className: [\n \"bg-field-fill-bg-error-default hover:bg-field-fill-bg-error-hover\",\n \"focus-within:bg-field-fill-bg-error-focus focus-within:border-field-fill-border-error\",\n \"border-transparent\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n size: \"md\",\n variant: \"outline\",\n status: \"default\",\n },\n }\n)\n\nfunction InputGroup({\n className,\n size,\n variant,\n status,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupVariants>) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(inputGroupVariants({ size, variant, status }), className)}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n [\n \"flex h-full cursor-text items-center justify-center select-none\",\n \"gap-[var(--semantic-size-spacing-8)]\",\n \"text-field-text-subtle\",\n \"[&>svg:not([class*='size-'])]:size-4\",\n ].join(\" \"),\n {\n variants: {\n align: {\n \"inline-start\": \"order-first px-[var(--semantic-size-spacing-12)]\",\n \"inline-end\": [\n \"order-last px-[var(--semantic-size-spacing-12)]\",\n \"has-[>button]:pl-0 has-[>button]:pr-[var(--semantic-size-spacing-8)]\",\n ].join(\" \"),\n \"block-start\": \"order-first w-full justify-start px-[var(--semantic-size-spacing-16)] pt-[var(--semantic-size-spacing-8)]\",\n \"block-end\": \"order-last w-full justify-start px-[var(--semantic-size-spacing-16)] pb-[var(--semantic-size-spacing-8)]\",\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)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 min-w-0 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 min-w-0 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 = \"secondary\",\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-[var(--semantic-size-spacing-8)] text-field-text-subtle [&_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 h-full min-w-0 rounded-none border-0 bg-transparent outline-none shadow-none\",\n \"px-[var(--semantic-size-spacing-16)]\",\n \"[font-weight:var(--field-font-weight)]\",\n \"text-field-text-prominent placeholder:text-field-text-subtle\",\n \"disabled:text-field-text-disabled disabled:pointer-events-none disabled:cursor-not-allowed\",\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"focus-visible:ring-0\",\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-3 shadow-none focus-visible:ring-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n inputGroupVariants,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Wrapper: flex row, items-start so icons align to top of the field.\n// Border grows 1px → 1.5px on focus, matching input.tsx behaviour.\nconst textareaWrapperVariants = cva(\n [\n \"flex items-start w-full min-w-0 cursor-text\",\n \"gap-[var(--semantic-size-spacing-8)]\",\n \"[border-width:var(--semantic-size-border-1)] border-solid\",\n \"transition-[color,border-color,border-width,background-color,box-shadow] duration-200\",\n \"rounded-[var(--field-radius)]\",\n \"focus-within:[border-width:var(--semantic-size-border-1-5)]\",\n \"group has-[:disabled]:pointer-events-none has-[:disabled]:cursor-not-allowed\",\n \"pb-px\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n outline: [\n \"bg-field-outline-bg-default border-field-outline-border-default\",\n \"hover:bg-field-outline-bg-hover\",\n \"focus-within:bg-field-outline-bg-focus focus-within:border-field-outline-border-focus\",\n \"has-[:disabled]:bg-field-outline-bg-disabled has-[:disabled]:border-field-outline-border-disabled\",\n ].join(\" \"),\n fill: [\n \"bg-field-fill-bg-default border-transparent\",\n \"hover:bg-field-fill-bg-hover\",\n \"focus-within:bg-field-fill-bg-focus focus-within:border-field-fill-border-focus\",\n \"has-[:disabled]:bg-field-fill-bg-disabled\",\n ].join(\" \"),\n },\n status: {\n default: \"\",\n success: \"border-field-outline-border-success\",\n error: \"border-field-outline-border-error\",\n },\n },\n compoundVariants: [\n {\n variant: \"outline\",\n status: \"success\",\n className: \"focus-within:border-field-outline-border-success\",\n },\n {\n variant: \"outline\",\n status: \"error\",\n className: \"focus-within:border-field-outline-border-error\",\n },\n {\n variant: \"fill\",\n status: \"success\",\n className: [\n \"bg-field-fill-bg-success-default hover:bg-field-fill-bg-success-hover\",\n \"focus-within:bg-field-fill-bg-success-focus focus-within:border-field-fill-border-success\",\n \"border-transparent\",\n ].join(\" \"),\n },\n {\n variant: \"fill\",\n status: \"error\",\n className: [\n \"bg-field-fill-bg-error-default hover:bg-field-fill-bg-error-hover\",\n \"focus-within:bg-field-fill-bg-error-focus focus-within:border-field-fill-border-error\",\n \"border-transparent\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n variant: \"outline\",\n status: \"default\",\n },\n }\n)\n\ninterface TextareaProps\n extends Omit<React.ComponentProps<\"textarea\">, \"size\">\n , VariantProps<typeof textareaWrapperVariants> {\n label?: string\n helperText?: string\n iconLeft?: React.ReactNode\n iconRight?: React.ReactNode\n /**\n * When `true` (default), renders a floating label above the text area.\n * When `false`, renders the labelless variant where the label acts as a\n * placeholder that cross-fades with the typed text.\n */\n labeled?: boolean\n /**\n * Controls the minimum height for the **labelless** variant only.\n * - `\"md\"` (default) → 128 px\n * - `\"sm\"` → 104 px\n *\n * Ignored when `labeled={true}`, which always uses the 128 px height.\n */\n size?: \"sm\" | \"md\"\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea({\n className,\n variant,\n size = \"md\",\n status,\n label,\n helperText,\n iconLeft,\n iconRight,\n labeled = true,\n required,\n maxLength,\n value,\n defaultValue,\n disabled,\n readOnly,\n placeholder,\n id: idProp,\n autoFocus,\n onChange,\n onFocus,\n onBlur,\n ...props\n}, ref) {\n const generatedId = React.useId()\n const id = idProp ?? generatedId\n const descriptionId = `${id}-description`\n\n const internalRef = React.useRef<HTMLTextAreaElement>(null)\n React.useImperativeHandle(ref, () => internalRef.current!)\n\n const [charCount, setCharCount] = React.useState<number>(() => {\n if (typeof defaultValue === \"string\") return defaultValue.length\n return 0\n })\n const [isFocused, setIsFocused] = React.useState(false)\n\n React.useEffect(() => {\n if (autoFocus && internalRef.current === document.activeElement) {\n setIsFocused(true)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const controlledLength = value !== undefined ? String(value).length : null\n const currentLength = controlledLength ?? charCount\n\n const isFloating = isFocused || currentLength > 0\n const hasDescription = helperText !== undefined || maxLength !== undefined\n\n // Accept `placeholder` as a label fallback for back-compat; the label is\n // the visual placeholder in both the labelled and labelless variants.\n const effectiveLabel = label ?? placeholder ?? \"Label\"\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) setCharCount(e.target.value.length)\n onChange?.(e)\n }\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setIsFocused(true)\n onFocus?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setIsFocused(false)\n onBlur?.(e)\n }\n\n const labelColorClass = disabled\n ? \"text-field-text-disabled\"\n : status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n const isSmLabelless = !labeled && size === \"sm\"\n\n // Sizing: labelled always uses the same padding/height as \"md\".\n // min-h values (128 px / 104 px) are component-specific layout constraints\n // — no token exists for textarea heights.\n const wrapperSizeClasses = isSmLabelless\n ? \"min-h-[104px] pt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-8)] text-sm\"\n : \"min-h-[128px] pt-[var(--semantic-size-spacing-6)] px-[var(--semantic-size-spacing-16)] text-base\"\n\n // Icon spans: no extra vertical offset — items-start on the wrapper already\n // aligns them to the top of the content area alongside the label/text.\n const iconSpanClass =\n \"shrink-0 flex items-start justify-center text-field-text-subtle group-has-[:disabled]:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\"\n\n // Base classes shared by every <textarea> element in both variants.\n // field-sizing-content lets the element auto-grow with typed content,\n // consistent with the old Textarea implementation and input.tsx behaviour.\n const textareaBaseClass = cn(\n \"w-full resize-none field-sizing-content bg-transparent border-0 outline-none ring-0\",\n \"leading-[1.5] [font-weight:var(--field-font-weight)]\",\n \"text-field-text-prominent\",\n \"disabled:text-field-text-disabled\",\n \"placeholder:text-field-text-subtle\",\n )\n\n // Description row px mirrors the wrapper's horizontal padding per size.\n const descriptionPaddingClass = isSmLabelless\n ? \"px-[var(--semantic-size-spacing-8)]\"\n : \"px-[var(--semantic-size-spacing-16)]\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div\n data-slot=\"textarea\"\n data-variant={variant ?? \"outline\"}\n data-status={status ?? \"default\"}\n className={cn(\n textareaWrapperVariants({ variant, status }),\n wrapperSizeClasses,\n readOnly && \"cursor-default\",\n )}\n onClick={(e) => {\n if (e.target !== internalRef.current) internalRef.current?.focus()\n }}\n >\n {iconLeft && (\n <span className={iconSpanClass}>\n {iconLeft}\n </span>\n )}\n\n {labeled ? (\n /* ── Labelled layout ─────────────────────────────────────────────\n Label is always rendered at the top of the column. Its font-size\n transitions from 16 px (body) when empty/unfocused → 12 px\n (caption) when floating. The textarea uses field-sizing-content\n so it auto-grows, and the wrapper's min-h ensures a visual floor. */\n <div className=\"flex-1 flex flex-col min-w-0\">\n <div className=\"flex items-start gap-[var(--semantic-size-spacing-4)] shrink-0\">\n <label\n htmlFor={id}\n className={cn(\n \"pointer-events-none select-none leading-[1.5]\",\n \"transition-all duration-200 ease-out\",\n labelColorClass,\n isFloating\n ? \"[font-size:var(--field-font-size-sm)]\"\n : \"text-base\",\n )}\n >\n {effectiveLabel}\n </label>\n {required && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"text-field-text-error leading-[1.5] transition-all duration-200\",\n isFloating ? \"[font-size:var(--field-font-size-sm)]\" : \"text-base\",\n )}\n >\n *\n </span>\n )}\n </div>\n\n <div\n className={cn(\n \"transition-opacity duration-200\",\n isFloating ? \"opacity-100\" : \"opacity-0 pointer-events-none\",\n )}\n >\n <textarea\n ref={internalRef}\n id={id}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n textareaBaseClass,\n \"pb-[var(--semantic-size-spacing-16)]\",\n )}\n {...props}\n />\n </div>\n </div>\n ) : (\n /* ── Labelless layout ───────────────────────────────────────────\n Label and textarea share the same grid cell via [grid-area:1/1].\n They cross-fade on focus / value change, matching the labelless\n behaviour in input.tsx. field-sizing-content auto-grows the\n textarea; the wrapper's min-h sets the visual floor. */\n <div className=\"flex-1 min-w-0 grid items-start\">\n <label\n htmlFor={id}\n className={cn(\n \"[grid-area:1/1] flex items-start gap-[var(--semantic-size-spacing-4)]\",\n \"pointer-events-none select-none leading-[1.5]\",\n \"transition-opacity duration-200 ease-out\",\n labelColorClass,\n isFloating ? \"opacity-0\" : \"opacity-100\",\n )}\n >\n <span>{effectiveLabel}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </label>\n\n <textarea\n ref={internalRef}\n id={id}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n textareaBaseClass,\n \"[grid-area:1/1] pb-[var(--semantic-size-spacing-16)]\",\n \"transition-opacity duration-200 ease-out\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n {...props}\n />\n </div>\n )}\n\n {iconRight && (\n <span className={iconSpanClass}>\n {iconRight}\n </span>\n )}\n </div>\n\n {hasDescription && (\n <div\n id={descriptionId}\n className={cn(\n \"flex w-full items-center justify-between\",\n \"mt-[var(--semantic-size-spacing-4)]\",\n descriptionPaddingClass,\n \"[font-size:var(--field-font-size-sm)]\",\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\",\n )}\n >\n <span>{helperText ?? \"\"}</span>\n {maxLength !== undefined && (\n <span>{currentLength}/{maxLength}</span>\n )}\n </div>\n )}\n </div>\n )\n})\n\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea, textareaWrapperVariants as textareaVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-sm bg-primary-surface text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-subtle [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-subtle disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"overflow-hidden p-1 text-prominent [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-primary/10 data-[selected=true]:text-prominent [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Card } from \"./card\"\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 z-[70] bg-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n type = \"text\",\n icon,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n type?: \"text\" | \"icon-and-text\"\n icon?: React.ReactNode\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-[50%] left-[50%] z-[70] w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] duration-base outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-[512px]\",\n className\n )}\n {...props}\n >\n <Card className=\"relative gap-0 rounded-4xl border-0 p-0 shadow-lg overflow-hidden\">\n {type === \"icon-and-text\" && (\n <div\n data-slot=\"dialog-icon-zone\"\n className=\"flex w-full shrink-0 items-center justify-center bg-primary-surface py-6\"\n >\n {icon}\n </div>\n )}\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n data-slot=\"dialog-close\"\n className=\"absolute top-4 right-4\"\n aria-label=\"Close\"\n >\n <XIcon />\n </Button>\n </DialogPrimitive.Close>\n )}\n </Card>\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-8 px-8 pt-8 pb-6\", 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 \"flex flex-col gap-2 px-8 pt-6 pb-8 [&_[data-slot=button]]:!w-full [&_[data-slot=dialog-close]]:!w-full\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"secondary\" size=\"lg\">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(\"text-2xl font-extrabold leading-8 font-display text-prominent\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-base leading-6 text-dialog-description\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { ContextMenu as ContextMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-secondary-hover data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-subtle\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"z-[65] min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border border-default bg-primary-surface p-1 text-prominent shadow-lg 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"z-[65] max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-default bg-primary-surface p-1 text-prominent shadow-md 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-subtle data-[variant=destructive]:*:[svg]:text-destructive!\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-secondary-hover 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\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-secondary-hover 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\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium text-prominent data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Direction } from \"radix-ui\"\n\nfunction DirectionProvider({\n dir,\n direction,\n children,\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\n direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\"dir\"]\n}) {\n return (\n <Direction.DirectionProvider dir={direction ?? dir}>\n {children}\n </Direction.DirectionProvider>\n )\n}\n\nconst useDirection = Direction.useDirection\n\nexport { DirectionProvider, useDirection }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n \"fixed inset-0 z-[70] bg-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"group/drawer-content fixed z-[70] flex h-auto flex-col bg-primary-surface\",\n \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=top]:border-default\",\n \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-[24px] data-[vaul-drawer-direction=bottom]:pb-6\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:border-default data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:border-default data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className\n )}\n {...props}\n >\n <div\n className=\"hidden w-full items-center justify-center group-data-[vaul-drawer-direction=bottom]/drawer-content:flex h-8 shrink-0\"\n >\n <div\n className=\"h-[4px] w-[40px] rounded-full\"\n style={{ backgroundColor: \"var(--bottom-sheet-bg-handle-bar)\" }}\n />\n </div>\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4 [&>*]:w-full\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\n \"font-semibold font-display text-prominent\",\n \"group-data-[vaul-drawer-direction=bottom]/drawer-content:text-xl group-data-[vaul-drawer-direction=bottom]/drawer-content:leading-[1.4] group-data-[vaul-drawer-direction=bottom]/drawer-content:font-extrabold\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-sm text-subtle\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\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 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 className={cn(\n \"z-[65] max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--field-radius)] border border-dropdown-field-outline-border-default bg-dropdown-field-outline-bg-default p-1 text-dropdown-field-text-prominent shadow-md 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\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 \"relative flex cursor-default items-center gap-2 rounded-[var(--field-radius)] px-[var(--semantic-size-spacing-8)] py-1.5 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none hover:bg-dropdown-field-fill-bg-neutral-hover focus:bg-dropdown-field-fill-bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:text-dropdown-field-text-disabled data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-dropdown-field-text-error data-[variant=destructive]:focus:bg-dropdown-field-fill-bg-error-hover [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-dropdown-field-text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-[var(--field-radius)] py-1.5 pr-2 pl-8 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none hover:bg-dropdown-field-fill-bg-neutral-hover focus:bg-dropdown-field-fill-bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:text-dropdown-field-text-disabled 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 className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\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 ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-[var(--field-radius)] py-1.5 pr-2 pl-8 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none hover:bg-dropdown-field-fill-bg-neutral-hover focus:bg-dropdown-field-fill-bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:text-dropdown-field-text-disabled 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 className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\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-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\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-subtle\",\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-2 rounded-[var(--field-radius)] px-[var(--semantic-size-spacing-8)] py-1.5 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none focus:bg-dropdown-field-fill-bg-neutral-hover data-[inset]:pl-8 data-[state=open]:bg-dropdown-field-fill-bg-neutral-hover [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-dropdown-field-text-subtle\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\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(\n \"z-[65] min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-[var(--field-radius)] border border-dropdown-field-outline-border-default bg-dropdown-field-outline-bg-default p-1 text-dropdown-field-text-prominent shadow-lg 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\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 min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-sm border-dashed p-6 text-center text-balance md:p-12\",\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(\n \"flex max-w-sm flex-col items-center gap-1 text-center\",\n className\n )}\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-10 shrink-0 items-center justify-center rounded-lg bg-secondary-surface text-prominent [&_svg:not([class*='size-'])]:size-6\",\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(\"text-base leading-6 font-bold text-prominent\", className)}\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 leading-5 text-section-message-description [&>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-4 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","\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Label } from \"./label\"\nimport { Separator } from \"./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-6\",\n \"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-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\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-7 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-3 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\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n responsive: [\n \"flex-col @md/field-group:flex-row @md/field-group:items-center [&>*]:w-full @md/field-group:[&>*]:w-auto [&>.sr-only]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\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-1.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\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\",\n \"has-data-[state=checked]:border-primary has-data-[state=checked]:bg-primary/5\",\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 leading-snug 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-sm leading-normal font-normal text-subtle group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\",\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-primary-surface px-2 text-subtle\"\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","\"use client\"\n\nimport * 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","\"use client\"\n\nimport * as React from \"react\"\nimport type { Label as LabelPrimitive } from \"radix-ui\"\nimport { Slot } from \"radix-ui\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Label } from \"./label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot.Root>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot.Root\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-sm text-subtle\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-sm text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-[65] w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border border-default bg-primary-surface p-4 text-prominent shadow-md outline-hidden 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Wrapper: flex row with icons + content. Border grows 1px → 1.5px on focus.\nconst inputWrapperVariants = cva(\n [\n \"flex items-center w-full min-w-0 cursor-text\",\n \"gap-[var(--semantic-size-spacing-8)] px-[var(--semantic-size-spacing-16)]\",\n \"[border-width:var(--semantic-size-border-1)] border-solid\",\n \"transition-[color,border-color,border-width,background-color,box-shadow] duration-200\",\n \"rounded-[var(--field-radius)]\",\n \"focus-within:[border-width:var(--semantic-size-border-1-5)]\",\n \"group has-[:disabled]:pointer-events-none has-[:disabled]:cursor-not-allowed\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n outline: [\n \"bg-field-outline-bg-default border-field-outline-border-default\",\n \"hover:bg-field-outline-bg-hover\",\n \"focus-within:bg-field-outline-bg-focus focus-within:border-field-outline-border-focus\",\n \"has-[:disabled]:bg-field-outline-bg-disabled has-[:disabled]:border-field-outline-border-disabled\",\n ].join(\" \"),\n fill: [\n \"bg-field-fill-bg-default border-transparent\",\n \"hover:bg-field-fill-bg-hover\",\n \"focus-within:bg-field-fill-bg-focus focus-within:border-field-fill-border-focus\",\n \"has-[:disabled]:bg-field-fill-bg-disabled\",\n ].join(\" \"),\n },\n size: {\n sm: \"h-[var(--field-sm-height)] text-sm\",\n md: \"h-[var(--field-md-height)] text-base\",\n lg: \"h-[var(--field-lg-height)] text-base\",\n },\n status: {\n default: \"\",\n success: \"border-field-outline-border-success\",\n error: \"border-field-outline-border-error\",\n },\n },\n compoundVariants: [\n {\n variant: \"outline\",\n status: \"success\",\n className: \"focus-within:border-field-outline-border-success\",\n },\n {\n variant: \"outline\",\n status: \"error\",\n className: \"focus-within:border-field-outline-border-error\",\n },\n {\n variant: \"fill\",\n status: \"success\",\n className: [\n \"bg-field-fill-bg-success-default hover:bg-field-fill-bg-success-hover\",\n \"focus-within:bg-field-fill-bg-success-focus focus-within:border-field-fill-border-success\",\n \"border-transparent\",\n ].join(\" \"),\n },\n {\n variant: \"fill\",\n status: \"error\",\n className: [\n \"bg-field-fill-bg-error-default hover:bg-field-fill-bg-error-hover\",\n \"focus-within:bg-field-fill-bg-error-focus focus-within:border-field-fill-border-error\",\n \"border-transparent\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n variant: \"outline\",\n size: \"lg\",\n status: \"default\",\n },\n }\n)\n\ninterface InputProps\n extends Omit<React.ComponentProps<\"input\">, \"size\">\n , VariantProps<typeof inputWrapperVariants> {\n label?: string\n helperText?: string\n iconLeft?: React.ReactNode\n iconRight?: React.ReactNode\n /** When false, renders the labelless variant: label and input cross-fade at the same size. */\n labeled?: boolean\n /** Horizontal text alignment for both label and input. Default is \"left\". */\n align?: \"left\" | \"center\"\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(function Input({\n className,\n type,\n variant,\n size,\n status,\n label = \"Label\",\n helperText,\n iconLeft,\n iconRight,\n labeled = true,\n align = \"left\",\n required,\n maxLength,\n value,\n defaultValue,\n disabled,\n readOnly,\n id: idProp,\n autoFocus,\n onChange,\n onFocus,\n onBlur,\n ...props\n}, ref) {\n const generatedId = React.useId()\n const id = idProp ?? generatedId\n const descriptionId = `${id}-description`\n\n const internalRef = React.useRef<HTMLInputElement>(null)\n React.useImperativeHandle(ref, () => internalRef.current!)\n\n const [charCount, setCharCount] = React.useState<number>(() => {\n if (typeof defaultValue === \"string\") return defaultValue.length\n if (typeof defaultValue === \"number\") return String(defaultValue).length\n return 0\n })\n const [isFocused, setIsFocused] = React.useState(false)\n\n React.useEffect(() => {\n if (autoFocus && internalRef.current === document.activeElement) {\n setIsFocused(true)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const controlledLength = value !== undefined ? String(value).length : null\n const currentLength = controlledLength ?? charCount\n\n const isFloating = isFocused || currentLength > 0\n const hasDescription = helperText !== undefined || maxLength !== undefined\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) setCharCount(e.target.value.length)\n onChange?.(e)\n }\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true)\n onFocus?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false)\n onBlur?.(e)\n }\n\n const labelColorClass = disabled\n ? \"text-field-text-disabled\"\n : status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div\n data-slot=\"input\"\n data-variant={variant ?? \"outline\"}\n data-status={status ?? \"default\"}\n className={cn(\n inputWrapperVariants({ variant, size, status }),\n readOnly && \"cursor-default\",\n )}\n onClick={(e) => {\n if (e.target !== internalRef.current) internalRef.current?.focus()\n }}\n >\n {iconLeft && (\n <span className=\"shrink-0 flex items-center justify-center text-field-text-subtle group-has-[:disabled]:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\">\n {iconLeft}\n </span>\n )}\n\n {labeled ? (\n /* ── Labelled layout: label floats to top, input fades in below ── */\n <div className=\"relative flex-1 min-w-0 h-full\">\n <label\n htmlFor={id}\n className={cn(\n \"absolute pointer-events-none select-none leading-[1.5]\",\n \"left-0 flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-all duration-200 ease-out\",\n labelColorClass,\n isFloating\n ? \"top-[var(--semantic-size-spacing-8)] [font-size:var(--field-font-size-sm)]\"\n : \"top-1/2 -translate-y-1/2\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </label>\n\n <input\n ref={internalRef}\n id={id}\n type={type}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n \"absolute left-0 right-0 bottom-[var(--semantic-size-spacing-6)] p-0\",\n \"[padding:0_var(--semantic-size-spacing-16)]\",\n \"bg-transparent border-0 outline-none ring-0 leading-[1.5]\",\n \"[font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out\",\n \"placeholder:text-field-text-subtle\",\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"text-field-text-prominent\",\n \"disabled:text-field-text-disabled\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n {...props}\n />\n </div>\n ) : (\n /* ── Labelless layout: label and input cross-fade at the same size/position ── */\n <div className=\"relative flex-1 min-w-0 h-full\">\n {/* Label — shown when field is empty and unfocused */}\n <label\n htmlFor={id}\n className={cn(\n \"absolute inset-0 pointer-events-none select-none leading-[1.5]\",\n \"flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-opacity duration-200 ease-out\",\n labelColorClass,\n align === \"center\" ? \"justify-center\" : \"justify-start\",\n isFloating ? \"opacity-0\" : \"opacity-100\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </label>\n\n {/* Input — shown when focused or has a value */}\n <input\n ref={internalRef}\n id={id}\n type={type}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n \"absolute inset-0 p-0 w-full\",\n \"bg-transparent border-0 outline-none ring-0 leading-[1.5]\",\n \"[font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out\",\n \"placeholder:text-field-text-subtle\",\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"text-field-text-prominent\",\n \"disabled:text-field-text-disabled\",\n align === \"center\" ? \"text-center\" : \"text-left\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n {...props}\n />\n </div>\n )}\n\n {iconRight && (\n <span className=\"shrink-0 flex items-center justify-center text-field-text-subtle group-has-[:disabled]:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\">\n {iconRight}\n </span>\n )}\n </div>\n\n {hasDescription && (\n <div\n id={descriptionId}\n className={cn(\n \"flex w-full items-center justify-between\",\n \"mt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-4)]\",\n \"[font-size:var(--field-font-size-sm)]\",\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\",\n )}\n >\n <span>{helperText ?? \"\"}</span>\n {maxLength !== undefined && (\n <span>{currentLength}/{maxLength}</span>\n )}\n </div>\n )}\n </div>\n )\n})\n\nInput.displayName = \"Input\"\n\nexport { Input, inputWrapperVariants as inputVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Search, X } from \"lucide-react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst searchFieldVariants = cva(\n [\n \"flex items-center\",\n \"rounded-[var(--search-field-radius)]\",\n \"[font-weight:var(--search-field-font-weight)]\",\n \"border\",\n \"transition-colors\",\n ],\n {\n variants: {\n variant: {\n outline: [\n \"bg-search-field-outline-bg-default\",\n \"border-search-field-outline-border-default\",\n \"hover:bg-search-field-outline-bg-hover\",\n \"focus-within:bg-search-field-outline-bg-focus\",\n \"focus-within:[border-width:1.5px]\",\n \"focus-within:border-search-field-outline-border-focus\",\n \"has-[:disabled]:pointer-events-none\",\n \"has-[:disabled]:bg-search-field-outline-bg-disabled\",\n \"has-[:disabled]:border-search-field-outline-border-disabled\",\n ],\n fill: [\n \"bg-search-field-fill-bg-default\",\n \"border-transparent\",\n \"hover:bg-search-field-fill-bg-hover\",\n \"focus-within:bg-search-field-fill-bg-focus\",\n \"focus-within:[border-width:1.5px]\",\n \"focus-within:border-search-field-fill-border-focus\",\n \"has-[:disabled]:pointer-events-none\",\n \"has-[:disabled]:bg-search-field-fill-bg-disabled\",\n ],\n },\n size: {\n sm: [\n \"h-[var(--search-field-sm-height)]\",\n \"px-[var(--search-field-sm-padding-horizontal)]\",\n \"gap-[var(--search-field-sm-gap)]\",\n \"[font-size:var(--search-field-sm-font-size)]\",\n \"[--sf-icon:var(--search-field-sm-icon-size)]\",\n ],\n md: [\n \"h-[var(--search-field-md-height)]\",\n \"px-[var(--search-field-md-padding-horizontal)]\",\n \"gap-[var(--search-field-md-gap)]\",\n \"[font-size:var(--search-field-md-font-size)]\",\n \"[--sf-icon:var(--search-field-md-icon-size)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"outline\",\n size: \"md\",\n },\n }\n)\n\ntype SearchFieldProps = Omit<React.ComponentProps<\"div\">, \"children\"> &\n VariantProps<typeof searchFieldVariants> & {\n placeholder?: string\n disabled?: boolean\n value?: string\n defaultValue?: string\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n }\n\nfunction SearchField({\n variant,\n size,\n className,\n placeholder = \"Search\",\n disabled,\n value,\n defaultValue,\n onChange,\n ...props\n}: SearchFieldProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\")\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n if (!isControlled) setInternalValue(e.target.value)\n onChange?.(e)\n }\n\n function handleClear() {\n if (!isControlled) setInternalValue(\"\")\n onChange?.({ target: { value: \"\" } } as React.ChangeEvent<HTMLInputElement>)\n }\n\n return (\n <div\n data-slot=\"search-field\"\n className={cn(searchFieldVariants({ variant, size }), className)}\n {...props}\n >\n <Search\n data-slot=\"search-field-icon\"\n aria-hidden\n className=\"shrink-0 w-[var(--sf-icon)] h-[var(--sf-icon)] text-search-field-icon-subtle\"\n />\n <input\n type=\"text\"\n data-slot=\"search-field-input\"\n disabled={disabled}\n placeholder={placeholder}\n value={currentValue}\n onChange={handleChange}\n className=\"flex-1 min-w-0 bg-transparent outline-none text-search-field-text-prominent placeholder:text-search-field-text-subtle disabled:text-search-field-text-disabled\"\n />\n {currentValue && !disabled && (\n <button\n type=\"button\"\n aria-label=\"Clear search\"\n onClick={handleClear}\n className=\"shrink-0 text-search-field-icon-subtle hover:text-search-field-text-prominent transition-colors\"\n >\n <X className=\"w-[var(--sf-icon)] h-[var(--sf-icon)]\" />\n </button>\n )}\n </div>\n )\n}\n\nexport { SearchField, searchFieldVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nconst inputOTPSlotVariants = cva(\n \"relative flex items-center justify-center border bg-code-input-fill-bg-default text-code-input-text-prominent [font-size:var(--code-input-font-size)] [font-weight:var(--code-input-font-weight)] font-body rounded-[var(--code-input-radius)] transition-[color,box-shadow] outline-none first:rounded-l-[var(--code-input-radius)] last:rounded-r-[var(--code-input-radius)] border-transparent hover:bg-code-input-fill-bg-hover data-[active=true]:bg-code-input-fill-bg-focus data-[active=true]:border-code-input-fill-border-focus data-[active=true]:z-10 disabled:bg-code-input-fill-bg-disabled disabled:text-code-input-text-disabled\",\n {\n variants: {\n size: {\n sm: \"h-[var(--code-input-sm-height)] w-[var(--code-input-sm-width)]\",\n md: \"h-[var(--code-input-md-height)] w-[var(--code-input-md-width)]\",\n },\n status: {\n default: \"\",\n success:\n \"bg-code-input-fill-bg-success border-code-input-fill-border-success text-code-input-text-success data-[active=true]:bg-code-input-fill-bg-success data-[active=true]:border-code-input-fill-border-success\",\n error:\n \"bg-code-input-fill-bg-error border-code-input-fill-border-error text-code-input-text-error data-[active=true]:bg-code-input-fill-bg-error data-[active=true]:border-code-input-fill-border-error\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n }\n)\n\nfunction InputOTPSlot({\n index,\n className,\n size,\n status,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n} & VariantProps<typeof inputOTPSlotVariants>) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(inputOTPSlotVariants({ size, status }), className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-code-input-text-prominent duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator, inputOTPSlotVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction CodeInput({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"code-input\"\n containerClassName={cn(\n // has-disabled:opacity-50 — invented: no container opacity token in component-code-input\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction CodeInputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"code-input-group\"\n className={cn(\"flex items-center gap-[var(--code-input-gap)]\", className)}\n {...props}\n />\n )\n}\n\nconst codeInputSlotVariants = cva(\n // first/last rounded corners — invented: shadcn group-rounding pattern, no grouped-cell token\n // ring-primary/[0.08] — invented: pending standardisation per design-tokens.mdc\n // animate-caret-blink — invented: no animation token in component-code-input\n \"relative flex items-center justify-center border bg-code-input-fill-bg-default text-code-input-text-prominent [font-size:var(--code-input-font-size)] [font-weight:var(--code-input-font-weight)] font-body rounded-[var(--code-input-radius)] transition-[color,box-shadow] outline-none first:rounded-l-[var(--code-input-radius)] last:rounded-r-[var(--code-input-radius)] border-transparent hover:bg-code-input-fill-bg-hover data-[active=true]:bg-code-input-fill-bg-focus data-[active=true]:border-code-input-fill-border-focus data-[active=true]:[border-width:var(--code-input-border-width-focus)] data-[active=true]:ring-[3px] data-[active=true]:ring-primary/[0.08] data-[active=true]:z-10 disabled:bg-code-input-fill-bg-disabled disabled:text-code-input-text-disabled\",\n {\n variants: {\n size: {\n sm: \"h-[var(--code-input-sm-height)] w-[var(--code-input-sm-width)]\",\n md: \"h-[var(--code-input-md-height)] w-[var(--code-input-md-width)]\",\n },\n status: {\n default: \"\",\n success:\n \"bg-code-input-fill-bg-success border-code-input-fill-border-success text-code-input-text-success data-[active=true]:bg-code-input-fill-bg-success data-[active=true]:border-code-input-fill-border-success\",\n error:\n \"bg-code-input-fill-bg-error border-code-input-fill-border-error text-code-input-text-error data-[active=true]:bg-code-input-fill-bg-error data-[active=true]:border-code-input-fill-border-error\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n }\n)\n\nfunction CodeInputSlot({\n index,\n className,\n size,\n status,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n} & VariantProps<typeof codeInputSlotVariants>) {\n const codeInputContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = codeInputContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"code-input-slot\"\n data-active={isActive}\n className={cn(codeInputSlotVariants({ size, status }), className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-code-input-text-prominent duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\n// Legacy: CodeInputSeparator — no separator concept in component-code-input tokens\nfunction CodeInputSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"code-input-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n )\n}\n\nexport { CodeInput, CodeInputGroup, CodeInputSlot, CodeInputSeparator, codeInputSlotVariants }\n","import { cn } from \"../../lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-secondary-surface px-1 font-sans text-xs font-medium text-subtle select-none\",\n \"[&_svg:not([class*='size-'])]:size-3\",\n \"[[data-slot=tooltip-content]_&]:bg-border [[data-slot=tooltip-content]_&]:text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n )\n}\n\nexport { Kbd, KbdGroup }\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 linkVariants = cva(\n // ⚑ hover:underline, focus-visible:ring, active:opacity-60, gap-1.5, shrink-0, whitespace-nowrap, svg sizing — not in tokens.json (shadcn/UX additions, preserved)\n \"inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 active:opacity-60 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:inline font-sans normal-case underline decoration-2 underline-offset-4\",\n {\n variants: {\n variant: {\n primary:\n \"text-link-primary-default aria-disabled:text-link-primary-disabled aria-disabled:pointer-events-none\",\n \"secondary-normal\":\n \"text-link-secondary-normal-default dark:text-link-secondary-inverse-default aria-disabled:text-link-secondary-normal-disabled dark:aria-disabled:text-link-secondary-inverse-disabled aria-disabled:pointer-events-none\",\n \"secondary-inverse\":\n \"text-link-secondary-inverse-default aria-disabled:text-link-secondary-inverse-disabled aria-disabled:pointer-events-none\",\n \"secondary-static-light\":\n \"text-link-secondary-static-light-default aria-disabled:text-link-secondary-static-light-disabled aria-disabled:pointer-events-none\",\n \"secondary-static-dark\":\n \"text-link-secondary-static-dark-default aria-disabled:text-link-secondary-static-dark-disabled aria-disabled:pointer-events-none\",\n },\n size: {\n lg: \"[font-size:var(--link-lg-font-size)] [font-weight:var(--link-lg-font-weight)] [&_svg:not([class*='size-'])]:size-4\",\n md: \"[font-size:var(--link-md-font-size)] [font-weight:var(--link-md-font-weight)] [&_svg:not([class*='size-'])]:size-4\",\n sm: \"[font-size:var(--link-sm-font-size)] [font-weight:var(--link-sm-font-weight)] [&_svg:not([class*='size-'])]:size-3.5\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"lg\",\n },\n }\n)\n\nfunction Link({\n className,\n variant = \"primary\",\n size = \"lg\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"a\"> &\n VariantProps<typeof linkVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"a\"\n\n return (\n <Comp\n data-slot=\"link\"\n data-size={size}\n data-variant={variant}\n className={cn(linkVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Link, linkVariants }\n","import * as React from \"react\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction NativeSelect({\n className,\n size = \"default\",\n ...props\n}: Omit<React.ComponentProps<\"select\">, \"size\"> & { size?: \"sm\" | \"default\" }) {\n return (\n <div\n className=\"group/native-select relative w-fit has-[select:disabled]:opacity-50\"\n data-slot=\"native-select-wrapper\"\n >\n <select\n data-slot=\"native-select\"\n data-size={size}\n className={cn(\n \"h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-prominent-static-inverse placeholder:text-subtle disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1\",\n \"focus-visible:border-field-outline-border-focus\",\n className\n )}\n {...props}\n />\n <ChevronDownIcon\n className=\"pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-subtle opacity-50 select-none\"\n aria-hidden=\"true\"\n data-slot=\"native-select-icon\"\n />\n </div>\n )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n className,\n ...props\n}: React.ComponentProps<\"optgroup\">) {\n return (\n <optgroup\n data-slot=\"native-select-optgroup\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button, type Button as ButtonType } from \"./button\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\"\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 flex-row items-center gap-[var(--pagination-gap)]\", 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 ButtonType>, \"size\"> &\n React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\n size: _size = \"icon-md\",\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center h-[var(--pagination-number-height)] w-[var(--pagination-number-width)] rounded-[var(--pagination-radius)] [font-size:var(--pagination-font-size)] font-display uppercase tracking-wide whitespace-nowrap transition-[color,background-color,border-color] outline-none border\",\n isActive\n ? \"bg-[var(--pagination-bg-number-selected)] border-[var(--pagination-border-number-selected)] [border-width:var(--pagination-border-width-selected)] [font-weight:var(--pagination-font-selected-weight)] text-[var(--pagination-text-default)]\"\n : \"bg-[var(--pagination-bg-number-default)] border-transparent [font-weight:var(--pagination-font-default-weight)] text-[var(--pagination-text-default)] hover:bg-[var(--pagination-bg-number-hover)] active:bg-[var(--pagination-bg-number-pressed)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<\"a\">) {\n return (\n <Button asChild variant=\"ghost\" size=\"icon-md\" className={cn(className)}>\n <a aria-label=\"Go to previous page\" data-slot=\"pagination-link\" {...props}>\n <ChevronLeftIcon className=\"size-5\" />\n </a>\n </Button>\n )\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<\"a\">) {\n return (\n <Button asChild variant=\"ghost\" size=\"icon-md\" className={cn(className)}>\n <a aria-label=\"Go to next page\" data-slot=\"pagination-link\" {...props}>\n <ChevronRightIcon className=\"size-5\" />\n </a>\n </Button>\n )\n}\n\n// ── PaginationEllipsis ────────────────────────────────────────────────────────\n// Without `pages`: renders a static decorative \"…\" (backward-compatible).\n// With `pages`: renders an interactive button that opens a compact dropdown\n// listing the hidden page numbers.\n\ntype PaginationEllipsisProps = {\n /** Hidden page numbers this ellipsis represents. Makes the ellipsis interactive. */\n pages?: number[]\n /** Called with the selected page number when the user picks one from the dropdown. */\n onPageSelect?: (page: number) => void\n} & Omit<React.ComponentProps<\"span\">, \"onClick\">\n\nfunction PaginationEllipsis({\n className,\n pages,\n onPageSelect,\n ...props\n}: PaginationEllipsisProps) {\n const [open, setOpen] = React.useState(false)\n\n const sharedClass = cn(\n \"flex h-[var(--pagination-number-height)] w-[var(--pagination-number-width)] items-center justify-center rounded-[var(--pagination-radius)]\",\n className\n )\n\n if (!pages?.length) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={sharedClass}\n {...props}\n >\n <span aria-hidden>...</span>\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n aria-label=\"Show more pages\"\n aria-expanded={open}\n data-slot=\"pagination-ellipsis\"\n className={cn(\n sharedClass,\n \"cursor-pointer border border-transparent transition-colors duration-instant outline-none\",\n \"bg-[var(--pagination-bg-number-default)]\",\n \"hover:bg-[var(--pagination-bg-number-hover)]\",\n \"active:bg-[var(--pagination-bg-number-pressed)]\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n )}\n >\n <span aria-hidden>...</span>\n </button>\n </PopoverTrigger>\n\n <PopoverContent\n align=\"center\"\n sideOffset={4}\n className={cn(\n \"z-[65] w-12 p-1\",\n \"bg-card border border-default/50 rounded-md\",\n \"shadow-[var(--menu-shadow)]\",\n \"max-h-[440px] overflow-y-auto overflow-x-hidden\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"origin-(--radix-popover-content-transform-origin)\"\n )}\n >\n {pages.map((page) => (\n <button\n key={page}\n type=\"button\"\n onClick={() => {\n onPageSelect?.(page)\n setOpen(false)\n }}\n className={cn(\n \"flex h-8 w-full items-center justify-center rounded-md\",\n \"[font-size:var(--pagination-font-size)] font-display [font-weight:var(--pagination-font-default-weight)] tracking-wide text-list-item-text-prominent\",\n \"transition-colors duration-instant cursor-pointer outline-none\",\n \"bg-transparent\",\n \"hover:bg-list-item-secondary-bg-hover\",\n \"active:bg-list-item-secondary-bg-pressed\",\n \"focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n )}\n >\n {page}\n </button>\n ))}\n </PopoverContent>\n </Popover>\n )\n}\n\n// ── PaginationBullets ─────────────────────────────────────────────────────────\n// Dot-style pagination. All tokens reuse the existing --pagination-* set.\n\ntype PaginationBulletsProps = {\n /** Total number of pages (= number of dots). */\n count: number\n /** Currently active page (1-based). */\n page: number\n /** Called with the new page number when a dot or nav button is clicked. */\n onPageChange?: (page: number) => void\n /** Show prev/next chevron buttons. Default: true. */\n showNavigation?: boolean\n className?: string\n}\n\nfunction PaginationBullets({\n count,\n page,\n onPageChange,\n showNavigation = true,\n className,\n}: PaginationBulletsProps) {\n return (\n <div\n data-slot=\"pagination-bullets\"\n className={cn(\"flex items-center justify-center gap-[var(--pagination-gap)]\", className)}\n >\n {showNavigation && (\n <PaginationPrevious\n href=\"#\"\n onClick={(e) => { e.preventDefault(); onPageChange?.(page - 1) }}\n aria-disabled={page <= 1}\n className={page <= 1 ? \"pointer-events-none opacity-40\" : \"\"}\n />\n )}\n\n {Array.from({ length: count }, (_, i) => {\n const dotPage = i + 1\n const isActive = dotPage === page\n return (\n <button\n key={dotPage}\n type=\"button\"\n aria-label={`Go to page ${dotPage}`}\n aria-current={isActive ? \"page\" : undefined}\n onClick={() => !isActive && onPageChange?.(dotPage)}\n className={cn(\n \"size-[var(--pagination-dot-size)] shrink-0 rounded-full\",\n \"outline-none transition-colors duration-instant\",\n \"focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n isActive\n ? \"bg-[var(--pagination-bg-dot-selected)] cursor-default\"\n : \"bg-[var(--pagination-bg-dot-default)] cursor-pointer hover:bg-[var(--pagination-bg-dot-hover)]\",\n )}\n />\n )\n })}\n\n {showNavigation && (\n <PaginationNext\n href=\"#\"\n onClick={(e) => { e.preventDefault(); onPageChange?.(page + 1) }}\n aria-disabled={page >= count}\n className={page >= count ? \"pointer-events-none opacity-40\" : \"\"}\n />\n )}\n </div>\n )\n}\n\nexport {\n Pagination,\n PaginationBullets,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-[65] w-72 origin-(--radix-popover-content-transform-origin) rounded-md border border-default bg-primary-surface p-4 text-prominent shadow-md outline-hidden 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-1 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n return (\n <div\n data-slot=\"popover-title\"\n className={cn(\"font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"popover-description\"\n className={cn(\"text-subtle\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst progressVariants = cva(\n \"relative w-full overflow-hidden\",\n {\n variants: {\n size: {\n sm: \"h-[var(--progress-sm-height)] rounded-[var(--progress-sm-radius)]\",\n md: \"h-[var(--progress-md-height)] rounded-[var(--progress-md-radius)]\",\n },\n variant: {\n normal: \"bg-[var(--progress-bar-bg-normal-track-default)]\",\n inverse: \"bg-[var(--progress-bar-bg-inverse-track-default)]\",\n },\n color: {\n default: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-default)]\",\n green: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-green)]\",\n red: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-red)]\",\n yellow: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-yellow)]\",\n blue: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-blue)]\",\n },\n },\n compoundVariants: [\n {\n variant: \"inverse\",\n color: \"default\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"green\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"red\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"yellow\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"blue\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n ],\n defaultVariants: {\n size: \"md\",\n variant: \"normal\",\n color: \"default\",\n },\n }\n)\n\nfunction Progress({\n className,\n value,\n size = \"md\",\n variant = \"normal\",\n color = \"default\",\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> &\n VariantProps<typeof progressVariants>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n data-size={size}\n className={cn(progressVariants({ size, variant, color }), className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress, progressVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { InfoIcon } from \"lucide-react\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* RadioGroup — root wrapper */\n/* ─────────────────────────────────────────────────────────────────────────── */\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 gap-3\", className)}\n {...props}\n />\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* RadioGroupItem — raw Radix primitive */\n/* */\n/* Visual model (Figma Quill spec, node 24504-1814): */\n/* • unselected — transparent bg, ~50% opacity prominent border (circle) */\n/* • selected — entire circle fills with bg-selected (dark ↔ light mode) */\n/* Indicator renders a bg-background hole in the centre, */\n/* replicating the Figma circle-dot icon (●◌) appearance */\n/* • disabled — opacity-50 on the item itself */\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 \"peer aspect-square size-4 shrink-0 rounded-full border border-prominent/50\",\n \"transition-colors duration-instant outline-none\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n // selected: fill entire circle dark (light mode) / white (dark mode)\n \"data-[state=checked]:bg-selected data-[state=checked]:border-selected\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex items-center justify-center\"\n >\n {/* bg-background circle punches a hole through bg-selected,\n producing the circle-dot (●◌) appearance from the Figma spec */}\n <span className=\"size-[6px] rounded-full bg-background\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* RadioGroupField — composite: radio item + label + optional info icon */\n/* */\n/* Mirrors CheckboxField pattern exactly: */\n/* • size=\"sm\" → 14px label, size-3.5 info icon */\n/* • size=\"md\" → 16px label, size-4 info icon (default) */\n/* • items-center alignment for correct single-line layout */\n/* • has-[:disabled]:opacity-50 dims the full field uniformly */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype RadioGroupFieldProps = React.ComponentProps<\n typeof RadioGroupPrimitive.Item\n> & {\n /**\n * Visual size variant.\n * - `sm` → 14 px label, 14 px info icon\n * - `md` → 16 px label, 16 px info icon (default)\n */\n size?: \"sm\" | \"md\"\n /** Label text rendered next to the radio button. */\n label?: React.ReactNode\n /** When `true`, renders a Lucide `InfoIcon` after the label text. */\n info?: boolean\n}\n\nfunction RadioGroupField({\n id,\n label,\n info = false,\n size = \"md\",\n disabled,\n className,\n ...props\n}: RadioGroupFieldProps) {\n return (\n <label\n data-slot=\"radio-group-field\"\n data-size={size}\n className={cn(\n \"inline-flex items-center gap-2 cursor-pointer select-none\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n className\n )}\n >\n <RadioGroupItem id={id} disabled={disabled} {...props} />\n\n {label != null && (\n <span\n className={cn(\n \"inline-flex items-center gap-2 text-prominent\",\n size === \"sm\" ? \"text-sm leading-5\" : \"text-base leading-6\"\n )}\n >\n <span>{label}</span>\n {info && (\n <InfoIcon\n aria-hidden\n className={cn(\n \"shrink-0 text-prominent\",\n size === \"sm\" ? \"size-3.5\" : \"size-4\"\n )}\n />\n )}\n </span>\n )}\n </label>\n )\n}\n\nexport { RadioGroup, RadioGroupItem, RadioGroupField }\n","\"use client\"\n\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: ResizablePrimitive.GroupProps) {\n return (\n <ResizablePrimitive.Group\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n withHandle?: boolean\n}) {\n return (\n <ResizablePrimitive.Separator\n data-slot=\"resizable-handle\"\n className={cn(\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.Separator>\n )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"relative flex-1 rounded-full bg-border\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { AlertTriangleIcon, CheckCircle2Icon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { inputVariants } from \"./input\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\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 readOnly = false,\n children,\n label,\n labeled = true,\n align = \"left\",\n required,\n status = \"default\",\n variant = \"outline\",\n iconLeft,\n helperText,\n disabled,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"md\" | \"lg\" | \"default\"\n readOnly?: boolean\n label?: string\n /** When false, label and value cross-fade at the same position instead of floating. Default true. */\n labeled?: boolean\n align?: \"left\" | \"center\"\n status?: \"default\" | \"success\" | \"error\"\n variant?: \"outline\" | \"fill\"\n iconLeft?: React.ReactNode\n helperText?: string\n required?: boolean\n}) {\n const effectiveSize = (size === \"default\" ? \"lg\" : size) as \"sm\" | \"md\" | \"lg\"\n\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n const isFocusedRef = React.useRef(false)\n const [isFloating, setIsFloating] = React.useState(false)\n const descriptionId = React.useId()\n\n const updateFloating = React.useCallback(() => {\n const el = triggerRef.current\n if (!el || !label) return\n const hasValue = !el.hasAttribute(\"data-placeholder\")\n const open = el.getAttribute(\"data-state\") === \"open\"\n setIsFloating(isFocusedRef.current || hasValue || open)\n }, [label])\n\n React.useEffect(() => {\n const el = triggerRef.current\n if (!el || !label) return\n updateFloating()\n const observer = new MutationObserver(updateFloating)\n observer.observe(el, {\n attributes: true,\n attributeFilter: [\"data-placeholder\", \"data-state\"],\n })\n return () => observer.disconnect()\n }, [label, updateFloating])\n\n const handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n isFocusedRef.current = true\n updateFloating()\n onFocusProp?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n isFocusedRef.current = false\n updateFloating()\n onBlurProp?.(e)\n }\n\n const labelColorClass = disabled\n ? \"text-field-text-disabled\"\n : status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <SelectPrimitive.Trigger\n ref={triggerRef}\n data-slot=\"select-trigger\"\n data-size={effectiveSize}\n data-readonly={readOnly ? \"\" : undefined}\n disabled={readOnly || disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={helperText ? descriptionId : undefined}\n className={cn(\n inputVariants({ variant, size: effectiveSize, status }),\n // Override cursor-text → cursor-pointer for button element\n \"cursor-pointer text-left\",\n // Override has-[:disabled]: (doesn't fire on button itself) with disabled:\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n variant === \"outline\" && \"disabled:bg-field-outline-bg-disabled disabled:border-field-outline-border-disabled\",\n variant === \"fill\" && \"disabled:bg-field-fill-bg-disabled\",\n // Maintain focus visual state when dropdown is open (focus moves to portal)\n \"data-[state=open]:[border-width:var(--semantic-size-border-1-5)]\",\n variant === \"outline\" && \"data-[state=open]:bg-field-outline-bg-focus data-[state=open]:border-field-outline-border-focus\",\n variant === \"fill\" && \"data-[state=open]:bg-field-fill-bg-focus data-[state=open]:border-field-fill-border-focus\",\n \"data-[readonly]:cursor-default data-[readonly]:opacity-100\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n )}\n {...props}\n >\n {/* Icon left */}\n {iconLeft && (\n <span className=\"shrink-0 flex items-center justify-center text-field-text-subtle group-disabled:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\">\n {iconLeft}\n </span>\n )}\n\n {/* Content area */}\n {label ? (\n labeled ? (\n /* Floating label: label rises to top, value fades in below */\n <div className=\"relative flex-1 min-w-0 h-full\">\n <span\n className={cn(\n \"absolute pointer-events-none select-none leading-[1.5]\",\n \"left-0 flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-all duration-200 ease-out\",\n labelColorClass,\n isFloating\n ? \"top-[var(--semantic-size-spacing-8)] [font-size:var(--field-font-size-sm)]\"\n : \"top-1/2 -translate-y-1/2\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </span>\n <span\n className={cn(\n \"absolute left-0 right-0 bottom-[var(--semantic-size-spacing-6)]\",\n \"leading-[1.5] [font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out truncate\",\n \"text-field-text-prominent group-data-[placeholder]:text-field-text-subtle\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n >\n {children}\n </span>\n </div>\n ) : (\n /* Labelless: label and value cross-fade at same position */\n <div className=\"relative flex-1 min-w-0 h-full\">\n <span\n className={cn(\n \"absolute inset-0 pointer-events-none select-none leading-[1.5]\",\n \"flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-opacity duration-200 ease-out\",\n labelColorClass,\n align === \"center\" ? \"justify-center\" : \"justify-start\",\n isFloating ? \"opacity-0\" : \"opacity-100\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </span>\n <span\n className={cn(\n \"absolute inset-0 flex items-center\",\n \"leading-[1.5] [font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out\",\n \"text-field-text-prominent\",\n align === \"center\" ? \"justify-center\" : \"justify-start\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n >\n {children}\n </span>\n </div>\n )\n ) : (\n /* No label — backwards-compatible bare-bones layout */\n <span className=\"flex-1 min-w-0 flex items-center gap-2 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 group-data-[placeholder]:text-dropdown-field-text-subtle\">\n {children}\n </span>\n )}\n\n {/* Status icon */}\n {status === \"error\" && !readOnly && !disabled && (\n <AlertTriangleIcon className=\"size-5 shrink-0 text-field-text-error\" />\n )}\n {status === \"success\" && !readOnly && !disabled && (\n <CheckCircle2Icon className=\"size-5 shrink-0 text-field-text-success\" />\n )}\n\n {/* Chevron */}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className={cn(\"size-4 shrink-0\", readOnly ? \"opacity-30\" : \"opacity-50\")} />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n {helperText && (\n <div\n id={descriptionId}\n className={cn(\n \"flex w-full items-center\",\n \"mt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-4)]\",\n \"[font-size:var(--field-font-size-sm)]\",\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\",\n )}\n >\n {helperText}\n </div>\n )}\n </div>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"relative z-[65] max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--field-radius)] border border-dropdown-field-outline-border-default bg-dropdown-field-outline-bg-default text-dropdown-field-text-prominent shadow-md 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n sideOffset={sideOffset}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-2\",\n position === \"popper\" &&\n \"w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\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-4 py-1.5 [font-size:var(--field-font-size-sm)] text-subtle\", 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 h-12 w-full cursor-default items-center gap-2 rounded-xs px-4 [font-size:var(--field-font-size-md)] outline-hidden select-none focus:bg-dropdown-field-fill-bg-neutral-hover focus:text-dropdown-field-text-prominent data-[state=checked]:!bg-dropdown-field-fill-bg-neutral-selected data-[state=checked]:!text-dropdown-field-text-selected data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-dropdown-field-text-subtle *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\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 \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\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 \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { Drawer as VaulPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Context lets every sub-component know which primitive family is in use.\ntype SheetSide = \"top\" | \"right\" | \"bottom\" | \"left\"\nconst SheetSideContext = React.createContext<SheetSide>(\"right\")\n\n// ── Sheet (root) ─────────────────────────────────────────────────────────────\n// side=\"bottom\" → Vaul (drag-to-dismiss). All other sides → Radix Dialog.\n\nfunction Sheet({\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Root> & { side?: SheetSide }) {\n return (\n <SheetSideContext.Provider value={side}>\n {side === \"bottom\" ? (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <VaulPrimitive.Root direction=\"bottom\" data-slot=\"sheet\" {...(props as any)} />\n ) : (\n <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n )}\n </SheetSideContext.Provider>\n )\n}\n\n// ── SheetTrigger ─────────────────────────────────────────────────────────────\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n const side = React.useContext(SheetSideContext)\n if (side === \"bottom\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <VaulPrimitive.Trigger data-slot=\"sheet-trigger\" {...(props as any)} />\n }\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\n// ── SheetClose ───────────────────────────────────────────────────────────────\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n const side = React.useContext(SheetSideContext)\n if (side === \"bottom\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <VaulPrimitive.Close data-slot=\"sheet-close\" {...(props as any)} />\n }\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\n// ── SheetPortal ──────────────────────────────────────────────────────────────\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n const side = React.useContext(SheetSideContext)\n if (side === \"bottom\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <VaulPrimitive.Portal {...(props as any)} />\n }\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\n// ── SheetOverlay ─────────────────────────────────────────────────────────────\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n const side = React.useContext(SheetSideContext)\n const baseClass = cn(\n \"fixed inset-0 z-[70] bg-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )\n if (side === \"bottom\") {\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <VaulPrimitive.Overlay data-slot=\"sheet-overlay\" className={baseClass} {...(props as any)} />\n )\n }\n return (\n <SheetPrimitive.Overlay data-slot=\"sheet-overlay\" className={baseClass} {...props} />\n )\n}\n\n// ── SheetContent ─────────────────────────────────────────────────────────────\n\nfunction SheetContent({\n className,\n children,\n side: sideProp,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: SheetSide\n showCloseButton?: boolean\n}) {\n const sideContext = React.useContext(SheetSideContext)\n const side = sideProp ?? sideContext\n\n // Bottom sheet → Vaul (drag-to-dismiss, rounded top, handle bar)\n if (sideContext === \"bottom\") {\n return (\n <SheetPortal>\n <SheetOverlay />\n <VaulPrimitive.Content\n data-slot=\"sheet-content\"\n data-side=\"bottom\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {...(props as any)}\n className={cn(\n \"group/sheet-content bg-primary-surface\",\n \"fixed inset-x-0 bottom-0 z-[70]\",\n \"mt-24 flex max-h-[80vh] flex-col pb-6 overflow-hidden\",\n className\n )}\n style={{\n borderTopLeftRadius: \"var(--bottom-sheet-radius)\",\n borderTopRightRadius: \"var(--bottom-sheet-radius)\",\n }}\n >\n {/* Handle bar — 40px wide, 4px tall; inherits sheet background */}\n <div className=\"flex w-full shrink-0 items-center justify-center h-8\">\n <div\n className=\"h-[4px] w-[40px] rounded-full\"\n style={{ backgroundColor: \"var(--bottom-sheet-bg-handle-bar)\" }}\n />\n </div>\n {children}\n </VaulPrimitive.Content>\n </SheetPortal>\n )\n }\n\n // All other sides → Radix Dialog (unchanged)\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\n \"group/sheet-content fixed z-[70] flex flex-col gap-4 bg-primary-surface shadow-lg transition ease-standard data-[state=closed]:animate-out data-[state=closed]:duration-slow data-[state=open]:animate-in data-[state=open]:duration-open\",\n side === \"right\" &&\n \"inset-y-0 right-0 h-full w-3/4 border-l border-default data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n side === \"left\" &&\n \"inset-y-0 left-0 h-full w-3/4 border-r border-default data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n side === \"top\" &&\n \"inset-x-0 top-0 h-auto border-b border-default data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\n// ── SheetHeader ──────────────────────────────────────────────────────────────\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\n \"flex flex-col gap-1.5 p-4\",\n \"group-data-[side=bottom]/sheet-content:text-center\",\n className,\n )}\n {...props}\n />\n )\n}\n\n// ── SheetFooter ──────────────────────────────────────────────────────────────\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4 [&>*]:w-full\", className)}\n {...props}\n />\n )\n}\n\n// ── SheetTitle ───────────────────────────────────────────────────────────────\n// Vaul has no Dialog context, so render a plain element for bottom sheets.\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n const side = React.useContext(SheetSideContext)\n const cls = cn(\"font-semibold text-prominent\", className)\n const bottomCls = cn(\"text-xl leading-[1.4] font-extrabold font-display text-prominent\", className)\n if (side === \"bottom\") {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={bottomCls}\n {...props}\n />\n )\n }\n return (\n <SheetPrimitive.Title data-slot=\"sheet-title\" className={cls} {...props} />\n )\n}\n\n// ── SheetDescription ─────────────────────────────────────────────────────────\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n const cls = cn(\"text-sm text-subtle\", className)\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cls}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nimport { useIsMobile } from \"../../hooks/use-mobile\"\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Separator } from \"./separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\"\nimport { Skeleton } from \"./skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-base ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-base ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"secondary\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"relative flex w-full flex-1 flex-col bg-primary-surface\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"h-8 w-full bg-primary-surface shadow-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"div\"\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-sm p-2 text-left text-sidebar-foreground text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-secondary-hover hover:text-primary focus-visible:ring-2 active:bg-secondary-hover active:text-primary disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-secondary-hover data-[active=true]:font-semibold data-[active=true]:text-primary data-[active=true]:hover:bg-secondary-hover data-[active=true]:hover:text-primary data-[state=open]:hover:bg-secondary-hover data-[state=open]:hover:text-primary [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-primary\",\n {\n variants: {\n variant: {\n default: \"\",\n outline:\n \"bg-primary-surface ring-1 ring-sidebar-border hover:ring-primary/40 data-[active=true]:ring-primary/40\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot.Root : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground data-[state=open]:opacity-100 md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n}) {\n // Fixed width for skeleton bars (avoids impure Math.random in render; still reads like varied line length).\n const width = \"70%\"\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"a\"\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-sm px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden hover:bg-secondary-hover hover:text-primary focus-visible:ring-2 active:bg-secondary-hover active:text-primary disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-primary\",\n \"data-[active=true]:bg-secondary-hover data-[active=true]:text-primary\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","import { cn } from \"../../lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"animate-pulse rounded-md bg-secondary-surface\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","\"use client\"\n\nimport * 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 = 6,\n variant = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n variant?: \"default\" | \"error\"\n}) {\n const bgVar = variant === \"error\" ? \"var(--tooltip-bg-error)\" : \"var(--tooltip-bg-default)\"\n const textVar = variant === \"error\" ? \"var(--tooltip-text-error)\" : \"var(--tooltip-text-default)\"\n\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n data-variant={variant}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-[var(--tooltip-radius)] border-0 px-[var(--tooltip-padding-horizontal)] py-[var(--tooltip-padding-vertical)] min-w-[var(--tooltip-min-width)] max-w-[var(--tooltip-max-width)] [font-size:var(--tooltip-font-size)] [font-weight:var(--tooltip-font-weight)] text-balance fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n className\n )}\n style={{ backgroundColor: bgVar, color: textVar }}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow style={{ fill: bgVar }} />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Slider as SliderPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root> & {\n size?: \"sm\" | \"default\"\n}) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min],\n [value, defaultValue, min]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n data-size={size}\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"group/slider relative flex w-full touch-none items-center select-none\",\n \"data-[disabled]:opacity-50\",\n \"data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"relative grow overflow-hidden rounded-full bg-slider-track\",\n \"data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full\",\n \"group-data-[size=sm]/slider:data-[orientation=horizontal]:h-1 group-data-[size=sm]/slider:data-[orientation=vertical]:w-1\",\n \"group-data-[size=default]/slider:data-[orientation=horizontal]:h-1.5 group-data-[size=default]/slider:data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className=\"absolute bg-slider-range data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className={cn(\n \"block shrink-0 rounded-full bg-toggle-knob border-0 cursor-pointer\",\n \"shadow-sm transition-[color,box-shadow] duration-fast ease-standard\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"group-data-[size=sm]/slider:size-4\",\n \"group-data-[size=default]/slider:size-5\",\n )}\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","\"use client\"\n\n/**\n * Snackbar — Quill equivalent of shadcn's Sonner.\n * Renamed from sonner.tsx. Same imperative API: import { toast } from \"sonner\".\n *\n * Variants: default | fail (only variants in component-snackbar tokens.json)\n *\n * Flagged — present in original sonner.tsx but no token match; removed:\n * • success / info / warning / loading icon overrides — no variants in tokens\n * • --normal-border — no border token in component-snackbar\n *\n * Fixed from original:\n * • --border-radius now uses --snackbar-radius (was pointing to global --radius)\n *\n * Icons: suppressed on all variants — no icons per design spec.\n */\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as SonnerToaster, type ToasterProps } from \"sonner\"\n\nimport { buttonVariants } from \"./button\"\n\nconst Snackbar = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <SonnerToaster\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n position=\"bottom-center\"\n richColors\n closeButton\n toastOptions={{\n classNames: {\n /* button.tsx ghost/sm: height 32px, radius 999px, font-size 14px, padding-h 12px.\n Color states are enforced via !important overrides in globals.css using\n --snackbar-btn-* → component-button/sm ghost-static-dark (light) / ghost-static-light (dark). */\n actionButton: buttonVariants({ variant: \"ghost\", size: \"sm\" }),\n cancelButton: buttonVariants({ variant: \"ghost\", size: \"sm\" }),\n /* button.tsx ghost/icon-sm: 32×32 circle.\n Pulled into inline flex flow via CSS override; sonner's built-in X SVG is coloured\n via --snackbar-btn-text (white in light mode, dark in dark mode). */\n closeButton: buttonVariants({ variant: \"ghost\", size: \"icon-sm\" }),\n },\n }}\n style={\n {\n /* component-snackbar/mode-1 colour tokens */\n \"--normal-bg\": \"var(--snackbar-bg-default)\",\n \"--normal-text\": \"var(--snackbar-text)\",\n \"--error-bg\": \"var(--snackbar-bg-fail)\",\n \"--error-text\": \"var(--snackbar-text-fail)\",\n\n /* component-snackbar/mode-1 size tokens — only vars sonner actually reads */\n \"--border-radius\": \"var(--snackbar-radius)\",\n \"--width\": \"var(--snackbar-max-width)\",\n\n /* Remove sonner's default borders — no border in component-snackbar tokens */\n \"--normal-border\": \"transparent\",\n \"--error-border\": \"transparent\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Snackbar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Minus, Plus } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n type inputGroupVariants,\n} from \"./input-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\ntype InputGroupVariantProps = VariantProps<typeof inputGroupVariants>\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max)\n}\n\nfunction getDecimalPlaces(n: number) {\n const s = String(n)\n const i = s.indexOf(\".\")\n return i === -1 ? 0 : s.length - i - 1\n}\n\nfunction formatValue(value: number, decimalPlaces: number) {\n return decimalPlaces > 0 ? value.toFixed(decimalPlaces) : String(value)\n}\n\ninterface StepperProps {\n value?: number\n defaultValue?: number\n onValueChange?: (value: number) => void\n min?: number\n max?: number\n step?: number\n disabled?: boolean\n placeholder?: string\n className?: string\n id?: string\n name?: string\n \"aria-label\"?: string\n /** \"split\" — [−] on far left, editable input centered, [+] on far right.\n * \"right-aligned\" — editable input left-aligned (flex-1), both [−][+] grouped on the right. */\n layout?: \"split\" | \"right-aligned\"\n /** When provided, renders the labelled variant: uses Input as the base with a\n * floating label and stepper buttons in the iconRight slot. */\n label?: string\n /** Short unit/currency label inside the field, right of the decrement button (split only). */\n labelLeft?: string\n /** Short unit/currency label inside the field, left of the increment button (split only). */\n labelRight?: string\n /** Helper message shown in the footer row below the field. */\n helperText?: string\n /** When true, renders a currentValue/max counter on the right of the footer row. Requires a finite `max`. */\n showCounter?: boolean\n /** Visual style of the field. Defaults to \"outline\". */\n variant?: InputGroupVariantProps[\"variant\"]\n /** Validation state. Affects border colour and footer text colour. */\n status?: InputGroupVariantProps[\"status\"]\n /** Field height and font size. \"md\" (default, 56px / 16px) and \"sm\" (32px / 14px).\n * Applies to the labelless variant only — ignored when `label` is set. */\n size?: \"md\" | \"sm\"\n}\n\nfunction Stepper({\n value: controlledValue,\n defaultValue,\n onValueChange,\n min = -Infinity,\n max = Infinity,\n step = 1,\n disabled,\n placeholder,\n className,\n id,\n name,\n \"aria-label\": ariaLabel,\n layout = \"split\",\n label,\n labelLeft,\n labelRight,\n helperText,\n showCounter,\n variant,\n status,\n size = \"md\",\n}: StepperProps) {\n const isControlled = controlledValue !== undefined\n // Numeric state always has a value (defaults to 0) so buttons work even when display is empty\n const [internalValue, setInternalValue] = React.useState(\n clamp(defaultValue ?? 0, min, max)\n )\n const currentValue = isControlled ? controlledValue : internalValue\n const decimalPlaces = getDecimalPlaces(step)\n\n // Labeled mode without an explicit defaultValue starts empty so the floating\n // label sits at center (identical to an empty Input.tsx labelled field).\n // All other modes always show a formatted number.\n const [displayString, setDisplayString] = React.useState(() =>\n label !== undefined && defaultValue === undefined\n ? \"\"\n : formatValue(clamp(defaultValue ?? 0, min, max), decimalPlaces)\n )\n const [isFocused, setIsFocused] = React.useState(false)\n\n // Sync display string when controlled value changes externally (not while typing).\n // Skip the sync when labeled mode has an empty display — the user intentionally\n // cleared the field and the label should remain at center.\n React.useEffect(() => {\n if (!isFocused) {\n setDisplayString((prev) => {\n if (label && prev === \"\") return \"\"\n return formatValue(currentValue, decimalPlaces)\n })\n }\n }, [currentValue, decimalPlaces, isFocused, label])\n\n function commit(next: number) {\n const clamped = clamp(next, min, max)\n const rounded =\n decimalPlaces > 0\n ? parseFloat(clamped.toFixed(decimalPlaces))\n : Math.round(clamped)\n\n if (!isControlled) setInternalValue(rounded)\n setDisplayString(formatValue(rounded, decimalPlaces))\n onValueChange?.(rounded)\n }\n\n function handleDecrement() {\n commit(currentValue - step)\n }\n\n function handleIncrement() {\n commit(currentValue + step)\n }\n\n function handleInputChange(e: React.ChangeEvent<HTMLInputElement>) {\n setDisplayString(e.target.value)\n }\n\n function handleBlur() {\n setIsFocused(false)\n // Labeled mode: keep empty display so the floating label drops back to center.\n // Labelless mode: reset to the last valid number when cleared.\n if (displayString === \"\") {\n if (!label) setDisplayString(formatValue(currentValue, decimalPlaces))\n return\n }\n const parsed = parseFloat(displayString)\n if (Number.isNaN(parsed)) {\n setDisplayString(label ? \"\" : formatValue(currentValue, decimalPlaces))\n } else {\n commit(parsed)\n }\n }\n\n function handleFocus() {\n setIsFocused(true)\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"ArrowUp\") {\n e.preventDefault()\n handleIncrement()\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault()\n handleDecrement()\n } else if (e.key === \"Enter\") {\n e.preventDefault()\n const parsed = parseFloat(displayString)\n if (Number.isNaN(parsed)) {\n setDisplayString(formatValue(currentValue, decimalPlaces))\n } else {\n commit(parsed)\n }\n }\n }\n\n // ── Labelled variant: use Input as the base so the floating label works correctly ──\n if (label) {\n const stepperButtons = (\n // stopPropagation prevents Input's wrapper onClick from stealing focus when\n // the user clicks a stepper button\n <div\n className=\"flex items-center gap-[var(--semantic-size-spacing-8)]\"\n onClick={(e) => e.stopPropagation()}\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"rounded-full min-w-0\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Minus className=\"size-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"rounded-full min-w-0\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Plus className=\"size-4\" />\n </Button>\n </div>\n )\n\n return (\n <Input\n role=\"spinbutton\"\n aria-valuemin={min === -Infinity ? undefined : min}\n aria-valuemax={max === Infinity ? undefined : max}\n aria-valuenow={currentValue}\n aria-label={ariaLabel}\n id={id}\n name={name}\n label={label}\n variant={variant}\n status={status}\n value={displayString}\n placeholder={placeholder}\n helperText={helperText}\n disabled={disabled}\n inputMode=\"numeric\"\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n iconRight={stepperButtons}\n className={cn(\"w-full\", className)}\n />\n )\n }\n\n // ── Labelless variant: use InputGroup for the bare field ──\n const hasFooter = helperText !== undefined || (showCounter && max !== Infinity)\n const footerColorClass =\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n const isSm = size === \"sm\"\n const btnSize = isSm ? \"icon-xs\" : \"icon-sm\"\n const iconClass = isSm ? \"size-3\" : \"size-4\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <InputGroup\n data-slot=\"stepper\"\n data-disabled={disabled || undefined}\n size={size}\n variant={variant}\n status={status}\n >\n {layout === \"split\" ? (\n <>\n {/* pl-16 = field left edge; pr-0 = input's pl-8 (reduced by group rule) provides the gap */}\n <InputGroupAddon align=\"inline-start\" className=\"!pl-[var(--semantic-size-spacing-16)] !pr-0\">\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Minus className={iconClass} />\n </InputGroupButton>\n {labelLeft && (\n <InputGroupText>{labelLeft}</InputGroupText>\n )}\n </InputGroupAddon>\n\n <InputGroupInput\n type=\"text\"\n inputMode=\"numeric\"\n role=\"spinbutton\"\n aria-valuemin={min === -Infinity ? undefined : min}\n aria-valuemax={max === Infinity ? undefined : max}\n aria-valuenow={currentValue}\n aria-label={ariaLabel}\n value={displayString}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n id={id}\n name={name}\n className=\"text-center [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n />\n\n {/* input's pr-8 (reduced by group rule) provides the gap; pr-16 = field right edge */}\n <InputGroupAddon align=\"inline-end\" className=\"!pr-[var(--semantic-size-spacing-16)]\">\n {labelRight && (\n <InputGroupText>{labelRight}</InputGroupText>\n )}\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Plus className={iconClass} />\n </InputGroupButton>\n </InputGroupAddon>\n </>\n ) : (\n <>\n <InputGroupInput\n type=\"text\"\n inputMode=\"numeric\"\n role=\"spinbutton\"\n aria-valuemin={min === -Infinity ? undefined : min}\n aria-valuemax={max === Infinity ? undefined : max}\n aria-valuenow={currentValue}\n aria-label={ariaLabel}\n value={displayString}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n id={id}\n name={name}\n className=\"text-left [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n />\n {/* pr-16 = field right edge */}\n <InputGroupAddon align=\"inline-end\" className=\"!pr-[var(--semantic-size-spacing-16)]\">\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Minus className={iconClass} />\n </InputGroupButton>\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Plus className={iconClass} />\n </InputGroupButton>\n </InputGroupAddon>\n </>\n )}\n </InputGroup>\n\n {hasFooter && (\n <div className={cn(\"flex w-full items-center justify-between mt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-4)] [font-size:var(--field-font-size-sm)]\", footerColorClass)}>\n <span>{helperText ?? \"\"}</span>\n {showCounter && max !== Infinity && (\n <span>{currentValue}/{max}</span>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport { Stepper }\nexport type { StepperProps }\n","import { cn } from \"../../lib/utils\"\n\nconst PILL_COUNT = 8\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"relative inline-block size-4 text-current\", className)}\n {...props}\n >\n <style>{`\n @keyframes spinner-fade {\n 0% { opacity: 1; }\n 100% { opacity: 0.15; }\n }\n `}</style>\n {Array.from({ length: PILL_COUNT }, (_, i) => (\n <span\n key={i}\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: \"0\",\n width: \"12%\",\n height: \"30%\",\n borderRadius: \"9999px\",\n backgroundColor: \"var(--loading-spinner-bg-default)\",\n transformOrigin: \"50% 167%\",\n transform: `translateX(-50%) rotate(${i * 45}deg)`,\n animation: `spinner-fade 0.8s linear ${(i * 0.8) / PILL_COUNT}s infinite`,\n }}\n />\n ))}\n </div>\n )\n}\n\nexport { Spinner }\n","import { cn } from \"../../lib/utils\"\n\nfunction LoadingSpinner({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n data-slot=\"loading-spinner\"\n className={cn(\n \"inline-block animate-spin rounded-full\",\n \"border-2 border-loading-spinner-bg-default border-t-transparent\",\n \"size-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { LoadingSpinner }\n","\"use client\"\n\nimport * 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 cursor-pointer items-center rounded-full p-0.5\",\n \"transition-colors duration-fast outline-none\",\n \"bg-toggle-track-off hover:bg-toggle-track-off-hover active:bg-toggle-track-off-active\",\n \"data-[state=checked]:bg-toggle-track-on data-[state=checked]:hover:bg-toggle-track-on-hover data-[state=checked]:active:bg-toggle-track-on-active\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-info\",\n \"data-[size=default]:h-6 data-[size=default]:w-11\",\n \"data-[size=sm]:h-5 data-[size=sm]:w-9\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"pointer-events-none block rounded-full bg-toggle-knob shadow-sm\",\n \"transition-transform duration-fast\",\n \"data-[state=unchecked]:translate-x-0\",\n \"group-data-[size=default]/switch:size-5 data-[state=checked]:group-data-[size=default]/switch:translate-x-5\",\n \"group-data-[size=sm]/switch:size-4 data-[state=checked]:group-data-[size=sm]/switch:translate-x-4\",\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * 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-secondary-surface/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-secondary-surface/50 data-[state=selected]:bg-secondary-surface\",\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-prominent [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\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 [&>[role=checkbox]]:translate-y-[2px]\",\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-subtle\", 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","\"use client\"\n\nimport * 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\n// Quill component: SegmentedControl\n// tokens.json entry: component-segmented-control\n// Sizes from tokens.json: md (default), lg\n// Orientation: horizontal only (vertical not in tokens.json)\n// Icon position: inline only (iconPosition=\"top\" not in tokens.json)\n// Elevation: active segment shadow via --segmented-elevation-selected (two-layer alpha-black shadow)\n\nconst segmentedControlListVariants = cva(\n \"group/segmented-list inline-flex w-fit items-center bg-segmented-control-container-bg\",\n {\n variants: {\n size: {\n md: [\n \"h-[var(--segmented-md-container-height)]\",\n \"min-w-[var(--segmented-md-container-min-width)]\",\n \"rounded-[var(--segmented-md-container-radius)]\",\n \"p-[var(--segmented-md-container-padding)]\",\n \"gap-[var(--segmented-md-container-gap)]\",\n ],\n lg: [\n \"h-[var(--segmented-lg-container-height)]\",\n \"min-w-[var(--segmented-lg-container-min-width)]\",\n \"rounded-[var(--segmented-lg-container-radius)]\",\n \"p-[var(--segmented-lg-container-padding)]\",\n \"gap-[var(--segmented-lg-container-gap)]\",\n ],\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nfunction SegmentedControl({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"segmented-control\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SegmentedControlList({\n className,\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof segmentedControlListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"segmented-control-list\"\n data-size={size}\n className={cn(segmentedControlListVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction SegmentedControlTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"segmented-control-trigger\"\n className={cn(\n \"relative inline-flex flex-1 items-center justify-center gap-1.5 whitespace-nowrap transition-all\",\n // md defaults (container group is md)\n \"h-[var(--segmented-md-segment-height)]\",\n \"min-w-[var(--segmented-md-segment-min-width)]\",\n \"rounded-[var(--segmented-md-segment-radius)]\",\n \"px-[var(--segmented-md-segment-padding)]\",\n \"[font-size:var(--segmented-md-font-size)]\",\n \"[font-weight:var(--segmented-md-font-weight-default)]\",\n // lg overrides via parent data-size\n \"group-data-[size=lg]/segmented-list:h-[var(--segmented-lg-segment-height)]\",\n \"group-data-[size=lg]/segmented-list:min-w-[var(--segmented-lg-segment-min-width)]\",\n \"group-data-[size=lg]/segmented-list:rounded-[var(--segmented-lg-segment-radius)]\",\n \"group-data-[size=lg]/segmented-list:px-[var(--segmented-lg-segment-padding)]\",\n \"group-data-[size=lg]/segmented-list:[font-size:var(--segmented-lg-font-size)]\",\n // colors — default (unselected): 72% opacity; selected: solid\n \"text-segmented-control-text-default\",\n \"data-[state=active]:text-segmented-control-text-prominent\",\n \"[&_svg]:text-segmented-control-icon-prominent\",\n // icon sizes: md=20px, lg=24px\n \"group-data-[size=md]/segmented-list:[&_svg:not([class*='size-'])]:size-5\",\n \"group-data-[size=lg]/segmented-list:[&_svg:not([class*='size-'])]:size-6\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n // interactive states\n \"hover:bg-segmented-control-segment-bg-hover\",\n \"active:bg-segmented-control-segment-bg-pressed\",\n // disabled\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"disabled:text-segmented-control-text-disabled\",\n \"disabled:[&_svg]:text-segmented-control-icon-disabled\",\n // selected state — white pill + elevation shadow\n \"data-[state=active]:bg-segmented-control-segment-bg-selected\",\n \"data-[state=active]:[font-weight:var(--segmented-md-font-weight-selected)]\",\n \"group-data-[size=lg]/segmented-list:data-[state=active]:[font-weight:var(--segmented-lg-font-weight-selected)]\",\n \"data-[state=active]:shadow-[var(--segmented-elevation-selected)]\",\n // focus\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SegmentedControlContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"segmented-control-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport {\n SegmentedControl,\n SegmentedControlList,\n SegmentedControlTrigger,\n SegmentedControlContent,\n segmentedControlListVariants,\n}\n","\"use client\"\n\nimport * 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\n// Quill component: Tab (line / underline variant)\n// tokens.json entry: component-tab\n// Sizes from tokens.json: sm, md (default), lg\n// Orientation: horizontal and vertical\n// Icon position: inline\n\nconst tabListVariants = cva(\n \"group/tab-list inline-flex w-fit items-center gap-1 bg-transparent border-b border-border-subtle\",\n {\n variants: {\n size: {\n sm: \"h-[var(--tab-sm-height)]\",\n md: \"h-[var(--tab-md-height)]\",\n lg: \"h-[var(--tab-lg-height)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nfunction Tab({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tab\"\n className={cn(\n \"group/tab flex flex-col gap-2\",\n \"data-[orientation=vertical]:flex-row data-[orientation=vertical]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabList({\n className,\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tab-list\"\n data-size={size}\n className={cn(\n tabListVariants({ size }),\n // vertical: stack triggers in a column, auto height\n \"group-data-[orientation=vertical]/tab:flex-col group-data-[orientation=vertical]/tab:h-auto group-data-[orientation=vertical]/tab:w-fit\",\n \"group-data-[orientation=vertical]/tab:border-b-0 group-data-[orientation=vertical]/tab:border-r group-data-[orientation=vertical]/tab:border-border-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tab-trigger\"\n className={cn(\n \"relative inline-flex flex-1 items-center justify-center gap-1.5 bg-transparent whitespace-nowrap transition-all\",\n // md defaults\n \"h-full\",\n \"min-w-[var(--tab-md-min-width)]\",\n \"rounded-[var(--tab-md-radius)]\",\n \"px-[var(--tab-md-padding-horizontal)]\",\n \"[font-size:var(--tab-md-font-size)]\",\n \"[font-weight:var(--tab-md-font-weight-default)]\",\n // sm overrides\n \"group-data-[size=sm]/tab-list:gap-1\",\n \"group-data-[size=sm]/tab-list:min-w-[var(--tab-sm-min-width)]\",\n \"group-data-[size=sm]/tab-list:rounded-[var(--tab-sm-radius)]\",\n \"group-data-[size=sm]/tab-list:px-[var(--tab-sm-padding-horizontal)]\",\n \"group-data-[size=sm]/tab-list:[font-size:var(--tab-sm-font-size)]\",\n // lg overrides\n \"group-data-[size=lg]/tab-list:gap-2\",\n \"group-data-[size=lg]/tab-list:min-w-[var(--tab-lg-min-width)]\",\n \"group-data-[size=lg]/tab-list:rounded-[var(--tab-lg-radius)]\",\n \"group-data-[size=lg]/tab-list:px-[var(--tab-lg-padding-horizontal)]\",\n \"group-data-[size=lg]/tab-list:[font-size:var(--tab-lg-font-size)]\",\n // vertical layout — full width, left-aligned, fixed height from size token\n \"group-data-[orientation=vertical]/tab:w-full group-data-[orientation=vertical]/tab:justify-start\",\n \"group-data-[orientation=vertical]/tab:h-[var(--tab-md-height)]\",\n \"group-data-[size=sm]/tab-list:group-data-[orientation=vertical]/tab:h-[var(--tab-sm-height)]\",\n \"group-data-[size=lg]/tab-list:group-data-[orientation=vertical]/tab:h-[var(--tab-lg-height)]\",\n // colors\n \"text-tab-text border border-transparent\",\n \"hover:bg-transparent hover:text-primary\",\n \"active:bg-tab-bg-pressed\",\n // disabled\n \"disabled:pointer-events-none disabled:text-tab-text-disabled disabled:opacity-50\",\n // focus\n \"focus-visible:border-tab-border-focus focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring\",\n // icons\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n // active state\n \"data-[state=active]:bg-transparent\",\n \"data-[state=active]:text-tab-text-selected\",\n \"data-[state=active]:[font-weight:var(--tab-md-font-weight-selected)]\",\n \"group-data-[size=sm]/tab-list:data-[state=active]:[font-weight:var(--tab-sm-font-weight-selected)]\",\n \"group-data-[size=lg]/tab-list:data-[state=active]:[font-weight:var(--tab-lg-font-weight-selected)]\",\n // active indicator — horizontal: bottom underline; vertical: right-side bar\n \"after:absolute after:bg-tab-border-selected after:opacity-0 after:transition-opacity\",\n // horizontal indicator\n \"after:inset-x-0 after:bottom-[-2px] after:h-[var(--tab-md-border-width)] after:w-auto\",\n \"group-data-[size=sm]/tab-list:after:h-[var(--tab-sm-border-width)]\",\n \"group-data-[size=lg]/tab-list:after:h-[var(--tab-lg-border-width)]\",\n // vertical indicator — right edge bar\n \"group-data-[orientation=vertical]/tab:after:inset-y-0 group-data-[orientation=vertical]/tab:after:left-auto group-data-[orientation=vertical]/tab:after:right-[-2px] group-data-[orientation=vertical]/tab:after:h-auto group-data-[orientation=vertical]/tab:after:w-[var(--tab-md-border-width)]\",\n \"data-[state=active]:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tab-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tab, TabList, TabTrigger, TabContent, tabListVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst toggleVariants = cva(\n [\n \"relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full p-0.5\",\n \"transition-colors duration-fast outline-none\",\n \"bg-toggle-track-off hover:bg-toggle-track-off-hover active:bg-toggle-track-off-active\",\n \"data-[state=on]:bg-toggle-track-on data-[state=on]:hover:bg-toggle-track-on-hover data-[state=on]:active:bg-toggle-track-on-active\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-info\",\n ],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\nfunction Toggle({\n className,\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({ className }))}\n {...props}\n >\n <span\n aria-hidden\n className={cn(\n \"pointer-events-none block size-5 rounded-full bg-toggle-knob shadow-sm\",\n \"transition-transform duration-fast\",\n \"translate-x-0 [[data-state=on]_&]:translate-x-5\",\n )}\n />\n </TogglePrimitive.Root>\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { toggleVariants } from \"./toggle\"\n\nfunction ToggleGroup({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root>) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n className={cn(\"flex flex-wrap items-center gap-3\", className)}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n className={cn(toggleVariants({ className }))}\n {...props}\n >\n <span\n aria-hidden\n className={cn(\n \"pointer-events-none block size-5 rounded-full bg-toggle-knob shadow-sm\",\n \"transition-transform duration-fast\",\n \"translate-x-0 [[data-state=on]_&]:translate-x-5\",\n )}\n />\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"],"mappings":"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","names":["jsx","React","Fragment","jsx","jsxs","jsx","jsx","jsx","cva","jsx","cva","React","Slot","jsx","jsxs","Slot","cva","Slot","jsx","cva","Slot","cva","jsx","cva","React","ChevronDownIcon","jsx","_a","_b","className","props","ChevronDownIcon","cva","jsx","cva","React","jsx","jsxs","api","React","Fragment","jsx","jsxs","config","jsx","jsxs","cva","Slot","jsx","jsx","cva","Slot","jsx","React","CheckIcon","ChevronDownIcon","cva","React","cva","jsx","jsxs","cva","Textarea","_a","jsx","cva","_a","_b","jsx","jsxs","ChevronDownIcon","CheckIcon","XIcon","jsx","jsxs","XIcon","jsx","jsxs","CheckIcon","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","CheckIcon","jsx","jsx","jsxs","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","cva","jsx","cva","useMemo","cva","jsx","jsx","jsxs","cva","useMemo","_a","React","Slot","jsx","Slot","_a","jsx","React","cva","jsx","jsxs","cva","Input","_a","React","X","cva","jsx","jsxs","cva","X","React","MinusIcon","cva","jsx","jsxs","cva","_a","MinusIcon","React","OTPInput","OTPInputContext","MinusIcon","cva","jsx","jsxs","OTPInput","cva","_a","OTPInputContext","MinusIcon","jsx","cva","Slot","jsx","cva","Slot","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","React","ChevronLeftIcon","ChevronRightIcon","jsx","jsx","jsxs","ChevronLeftIcon","ChevronRightIcon","cva","jsx","cva","InfoIcon","jsx","jsxs","InfoIcon","jsx","jsx","jsxs","React","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","React","XIcon","jsx","jsxs","XIcon","React","cva","Slot","React","jsx","jsx","jsxs","Tooltip","jsx","jsxs","open","Slot","cva","Tooltip","React","jsx","jsxs","jsx","React","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","cva","jsx","cva","cva","TabsPrimitive","jsx","cva","TabsPrimitive","cva","jsx","cva","jsx"]}
|
|
1
|
+
{"version":3,"sources":["../components/ui/accordion.tsx","../lib/utils.ts","../components/ui/badge.tsx","../components/ui/notification.tsx","../components/ui/section-message.tsx","../components/ui/aspect-ratio.tsx","../components/ui/avatar.tsx","../components/ui/tag.tsx","../components/ui/breadcrumb.tsx","../components/ui/button.tsx","../components/ui/chip.tsx","../components/ui/calendar.tsx","../components/ui/card.tsx","../components/ui/carousel.tsx","../components/ui/chart.tsx","../components/ui/checkbox.tsx","../components/ui/collapsible.tsx","../components/ui/list-item.tsx","../components/ui/separator.tsx","../components/ui/combobox.tsx","../components/ui/input-group.tsx","../components/ui/textarea.tsx","../components/ui/command.tsx","../components/ui/dialog.tsx","../components/ui/context-menu.tsx","../components/ui/direction.tsx","../components/ui/drawer.tsx","../components/ui/dropdown-menu.tsx","../components/ui/empty.tsx","../components/ui/field.tsx","../components/ui/label.tsx","../components/ui/form.tsx","../components/ui/hover-card.tsx","../components/ui/input.tsx","../components/ui/search-field.tsx","../components/ui/input-otp.tsx","../components/ui/code-input.tsx","../components/ui/kbd.tsx","../components/ui/link.tsx","../components/ui/native-select.tsx","../components/ui/pagination.tsx","../components/ui/popover.tsx","../components/ui/progress.tsx","../components/ui/radio-group.tsx","../components/ui/resizable.tsx","../components/ui/scroll-area.tsx","../components/ui/select.tsx","../components/ui/sheet.tsx","../components/ui/sidebar.tsx","../hooks/use-mobile.ts","../components/ui/skeleton.tsx","../components/ui/tooltip.tsx","../components/ui/slider.tsx","../components/ui/snackbar.tsx","../components/ui/stepper.tsx","../components/ui/spinner.tsx","../components/ui/loading-spinner.tsx","../components/ui/switch.tsx","../components/ui/table.tsx","../components/ui/segmented-control.tsx","../components/ui/tab.tsx","../components/ui/toggle.tsx","../components/ui/toggle-group.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n// ── Types ────────────────────────────────────────────────────────────\n\ntype AccordionVariant = \"fill\" | \"elevate\" | \"outline\" | \"flush\"\ntype AccordionSize = \"xs\" | \"sm\" | \"md\" | \"lg\"\n\n// ── Context ──────────────────────────────────────────────────────────\n\nconst AccordionContext = React.createContext<{\n variant: AccordionVariant\n size: AccordionSize\n}>({ variant: \"fill\", size: \"md\" })\n\nfunction useAccordionCtx() {\n return React.useContext(AccordionContext)\n}\n\n// ── Size maps ─────────────────────────────────────────────────────────\n\n/** Trigger padding and inter-column gap */\nconst TRIGGER_PADDING: Record<AccordionSize, string> = {\n xs: \"p-4 gap-4\",\n sm: \"p-6 gap-6\",\n md: \"p-6 gap-6\",\n lg: \"p-6 gap-6\",\n}\n\n/** Content area padding */\nconst CONTENT_PADDING: Record<AccordionSize, string> = {\n xs: \"p-4\",\n sm: \"p-6\",\n md: \"p-6\",\n lg: \"p-6\",\n}\n\n/** Title typography — size scales from body/md (xs,sm) → body/lg (md) → body/xl (lg) */\nconst TITLE_CLASSES: Record<AccordionSize, string> = {\n xs: \"text-base leading-6\",\n sm: \"text-base leading-6\",\n md: \"text-lg leading-7\",\n lg: \"text-xl leading-[1.5]\",\n}\n\n/** Subtitle typography — size scales from body/sm (xs,sm) → body/md (md) → body/lg (lg) */\nconst SUBTITLE_CLASSES: Record<AccordionSize, string> = {\n xs: \"text-sm leading-5\",\n sm: \"text-sm leading-5\",\n md: \"text-base leading-6\",\n lg: \"text-lg leading-7\",\n}\n\n// ── Accordion (root) ──────────────────────────────────────────────────\n\n/**\n * Root accordion container. Sets variant and size for all child items.\n *\n * @example\n * // Fill accordion (default), medium size\n * <Accordion type=\"single\" collapsible>\n * <AccordionItem value=\"item-1\">\n * <AccordionTrigger title=\"Title\" subtitle=\"Subtitle\" />\n * <AccordionContent>Content here</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n *\n * @example\n * // Elevate accordion (fill + shadow), medium size\n * <Accordion type=\"single\" collapsible variant=\"elevate\">…</Accordion>\n *\n * @example\n * // Outline accordion, small size\n * <Accordion type=\"multiple\" variant=\"outline\" size=\"sm\">…</Accordion>\n *\n * @example\n * // Flush accordion with custom trigger content\n * <Accordion type=\"single\" collapsible variant=\"flush\">\n * <AccordionItem value=\"item-1\">\n * <AccordionTrigger><MyCustomHeader /></AccordionTrigger>\n * <AccordionContent>Content</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n */\nfunction Accordion({\n variant = \"fill\",\n size = \"md\",\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /** Visual style of each accordion card. @default \"fill\" */\n variant?: AccordionVariant\n /** Controls padding, font size, and trigger height. @default \"md\" */\n size?: AccordionSize\n}) {\n return (\n <AccordionContext.Provider value={{ variant, size }}>\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"flex w-full flex-col\",\n // Fill, elevate, and outline items are spaced apart; flush items stack flush\n variant !== \"flush\" && \"gap-2\",\n className\n )}\n {...props}\n />\n </AccordionContext.Provider>\n )\n}\n\n// ── AccordionItem ─────────────────────────────────────────────────────\n\n/**\n * Individual accordion item. Styling is derived from the parent `Accordion`\n * variant — no extra props required.\n */\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n const { variant } = useAccordionCtx()\n\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n \"relative\",\n\n // ── Fill ──────────────────────────────────────────────────────\n // Flat white card, no shadow.\n variant === \"fill\" && [\n \"overflow-hidden rounded-[var(--accordion-radius)]\",\n \"bg-accordion-bg-default\",\n \"data-[state=open]:bg-accordion-bg-expand\",\n ],\n\n // ── Elevate ───────────────────────────────────────────────────\n // White card with drop-shadow. overflow-hidden is intentionally\n // omitted here because it clips the box-shadow painted outside the\n // border-box. The trigger's own border-radius clips hover/active\n // backgrounds instead.\n variant === \"elevate\" && [\n \"rounded-[var(--accordion-radius)]\",\n \"bg-accordion-bg-default shadow-accordion-fill\",\n \"data-[state=open]:bg-accordion-bg-expand\",\n ],\n\n // ── Outline ───────────────────────────────────────────────────\n // Bordered card; no background change on expand.\n // overflow-hidden is intentionally omitted: applying it to a\n // transparent element with a border causes browsers to square off\n // the border corners. The trigger's own border-radius handles\n // clipping of hover/active backgrounds instead.\n variant === \"outline\" && [\n \"rounded-[var(--accordion-radius)]\",\n \"border-2 border-accordion-border\",\n ],\n\n // ── Flush ─────────────────────────────────────────────────────\n // Flat items separated by thin dividers; background tints when open\n variant === \"flush\" && [\n \"border-t border-accordion-border last:border-b\",\n \"data-[state=open]:bg-accordion-bg-expand\",\n ],\n\n className\n )}\n {...props}\n />\n )\n}\n\n// ── AccordionTrigger ──────────────────────────────────────────────────\n\n/**\n * Clickable trigger row that expands/collapses the accordion item.\n *\n * **Default layout** (when `title` prop is supplied):\n * Three-column structure — `[icon] [title + subtitle] [chevron]`\n *\n * **Custom layout** (when `title` is omitted):\n * Pass arbitrary `children`; the chevron is always appended automatically.\n *\n * @example\n * // Default — structured header\n * <AccordionTrigger\n * icon={<UserIcon />}\n * title=\"Account settings\"\n * subtitle=\"Manage your profile\"\n * />\n *\n * @example\n * // Default — no icon, no subtitle\n * <AccordionTrigger title=\"Frequently asked questions\" />\n *\n * @example\n * // Custom — free-form header slot\n * <AccordionTrigger><MyBadge /><MyTag /></AccordionTrigger>\n */\nfunction AccordionTrigger({\n className,\n children,\n icon,\n title,\n subtitle,\n titleBold = false,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & {\n /**\n * Optional leading icon (default layout only).\n * Pass any React node — typically a 24 × 24 icon from lucide-react.\n */\n icon?: React.ReactNode\n /**\n * Title text. When provided the trigger uses the **default three-column layout**.\n * Omit to render `children` in a custom layout.\n */\n title?: string\n /** Secondary line below the title (default layout only). */\n subtitle?: string\n /** Render title in semibold weight. @default false */\n titleBold?: boolean\n}) {\n const { variant, size } = useAccordionCtx()\n const isDefaultLayout = Boolean(title)\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n // ── Base ──────────────────────────────────────────────────\n \"group flex w-full cursor-pointer items-center outline-none\",\n \"transition-colors duration-base ease-standard\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:pointer-events-none\",\n\n // ── Size-based padding and column gap ─────────────────────\n TRIGGER_PADDING[size],\n\n // ── Interactive state backgrounds ─────────────────────────\n \"hover:bg-accordion-bg-hover\",\n \"active:bg-accordion-bg-active\",\n\n // ── Fill / elevate / outline: rounded on all corners when closed,\n // square bottom corners when open so header connects to content\n (variant === \"fill\" || variant === \"elevate\" || variant === \"outline\") && [\n \"rounded-[var(--accordion-radius)]\",\n \"data-[state=open]:rounded-b-none\",\n ],\n\n className\n )}\n {...props}\n >\n {/* ── Default layout: [icon] [title + subtitle] [chevron] ── */}\n {isDefaultLayout ? (\n <>\n {icon !== undefined && (\n <span\n className=\"flex size-6 shrink-0 items-center justify-center text-accordion-icon group-disabled:text-accordion-icon-disabled\"\n aria-hidden\n >\n {icon}\n </span>\n )}\n\n <div className=\"flex min-w-0 flex-1 flex-col gap-1 text-left\">\n <span\n className={cn(\n \"font-body text-accordion-title group-disabled:text-accordion-title-disabled\",\n TITLE_CLASSES[size],\n titleBold ? \"font-semibold\" : \"font-normal\"\n )}\n >\n {title}\n </span>\n {subtitle && (\n <span\n className={cn(\n \"font-body font-normal text-accordion-subtitle group-disabled:text-accordion-subtitle-disabled\",\n SUBTITLE_CLASSES[size]\n )}\n >\n {subtitle}\n </span>\n )}\n </div>\n </>\n ) : (\n /* ── Custom layout: arbitrary children slot ── */\n <div className=\"flex min-w-0 flex-1 items-center\">{children}</div>\n )}\n\n {/* ── Chevron (always present) ── */}\n <ChevronDownIcon\n className={cn(\n \"ml-auto size-5 shrink-0 text-accordion-icon group-disabled:text-accordion-icon-disabled\",\n \"transition-transform duration-base ease-standard\",\n \"group-data-[state=open]:rotate-180\"\n )}\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\n// ── AccordionContent ──────────────────────────────────────────────────\n\n/**\n * Collapsible content area. Accepts any React children as the body slot.\n * Padding automatically matches the parent accordion's size.\n */\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n const { size } = useAccordionCtx()\n\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(CONTENT_PADDING[size], className)}>\n {children}\n </div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\nexport type { AccordionVariant, AccordionSize }\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","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Badge({\n count,\n className,\n ...props\n}: React.ComponentProps<\"span\"> & {\n count: number\n}) {\n const display = count > 99 ? \"+99\" : String(count)\n return (\n <span\n data-slot=\"badge\"\n className={cn(\n \"inline-flex items-center justify-center shrink-0 font-body text-badge-text bg-badge-bg-number rounded-[var(--badge-md-radius)] [font-weight:var(--badge-font-weight)] h-[var(--badge-md-height)] min-w-[var(--badge-md-min-width)] max-w-[var(--badge-md-max-width)] px-[var(--badge-md-padding-horizontal)] [font-size:var(--badge-md-font-size)]\",\n className\n )}\n {...props}\n >\n {display}\n </span>\n )\n}\n\nconst dotColorMap = {\n red: \"bg-badge-status-red\",\n yellow: \"bg-badge-status-yellow\",\n green: \"bg-badge-status-green\",\n blue: \"bg-badge-status-blue\",\n} as const\n\nfunction BadgeDot({\n size = \"md\",\n color = \"red\",\n className,\n ...props\n}: React.ComponentProps<\"span\"> & {\n size?: \"sm\" | \"md\"\n color?: keyof typeof dotColorMap\n}) {\n return (\n <span\n data-slot=\"badge-dot\"\n className={cn(\n \"inline-block rounded-full shrink-0\",\n dotColorMap[color],\n size === \"sm\"\n ? \"h-[var(--badge-sm-dot-size)] w-[var(--badge-sm-dot-size)]\"\n : \"h-[var(--badge-md-dot-size)] w-[var(--badge-md-dot-size)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Badge, BadgeDot }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n AlertCircle,\n AlertTriangle,\n CheckCircle,\n Info,\n Mail,\n MailOpen,\n Trash2,\n X,\n} from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { BadgeDot } from \"./badge\"\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype NotificationVariant = \"information\" | \"success\" | \"warning\" | \"danger\"\n\n// ─── Variant maps ─────────────────────────────────────────────────────────────\n\nconst variantIconMap: Record<NotificationVariant, React.ElementType> = {\n information: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n danger: AlertCircle,\n}\n\nconst variantIconBgClass: Record<NotificationVariant, string> = {\n information: \"bg-notification-bg-icon-information\",\n success: \"bg-notification-bg-icon-success\",\n warning: \"bg-notification-bg-icon-warning\",\n danger: \"bg-notification-bg-icon-danger\",\n}\n\n/** Icon colour inside the tinted item container */\nconst variantIconNormalClass: Record<NotificationVariant, string> = {\n information: \"text-notification-icon-normal-information\",\n success: \"text-notification-icon-normal-success\",\n warning: \"text-notification-icon-normal-warning\",\n danger: \"text-notification-icon-normal-danger\",\n}\n\n// ─── NotificationBanner ───────────────────────────────────────────────────────\n// Static display — no internal state. Parent is responsible for unmounting.\n// Grid layout mirrors section-message: icon col aligns to the title's first line.\n\ninterface NotificationBannerProps {\n title: React.ReactNode\n description?: React.ReactNode\n /** Optional content before the default Info icon (e.g. anatomy markers). */\n slotBeforeIcon?: React.ReactNode\n /** Optional content before the close button when onClose is set (e.g. anatomy markers). */\n slotBeforeClose?: React.ReactNode\n onClose?: () => void\n className?: string\n}\n\nfunction NotificationBanner({\n title,\n description,\n slotBeforeIcon,\n slotBeforeClose,\n onClose,\n className,\n}: NotificationBannerProps) {\n return (\n <div\n data-slot=\"notification-banner\"\n className={cn(\n // Grid: [icon] [text] [close] — icon aligns to title start (same as section-message pattern)\n \"grid w-full rounded-[var(--notification-radius)] bg-notification-bg-banner\",\n \"min-w-[var(--notification-min-width-banner)] max-w-[var(--notification-max-width-banner)]\",\n \"grid-cols-[auto_1fr_auto] items-start gap-x-[var(--notification-gap-md)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n className\n )}\n >\n {/* Icon row: fixed height for title alignment; min-width only so slotBeforeIcon (e.g. anatomy Num) + icon fit */}\n <div className=\"flex h-[var(--notification-size-icon-banner)] min-w-[var(--notification-size-icon-banner)] shrink-0 items-center justify-center gap-1\">\n {slotBeforeIcon}\n <Info\n className=\"text-notification-icon-inverse-information\"\n style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }}\n />\n </div>\n\n {/* Text */}\n <div className=\"flex flex-col\" style={{ gap: 0 }}>\n <p\n className=\"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis whitespace-nowrap text-notification-title-banner leading-[1.5]\"\n style={{\n fontSize: \"var(--notification-font-size-md)\",\n fontWeight: \"var(--notification-font-weight-semibold)\",\n }}\n >\n {title}\n </p>\n {description != null && description !== \"\" && (\n <p\n className=\"flex w-full min-w-0 items-center gap-1 text-notification-description-banner leading-[1.5]\"\n style={{\n fontSize: \"var(--notification-font-size-sm)\",\n fontWeight: \"var(--notification-font-weight-regular)\",\n }}\n >\n {description}\n </p>\n )}\n </div>\n\n {/* Close — [INFERRED] colour: text-notification-title-banner (no dedicated close token) */}\n {onClose && (\n <div className=\"flex items-center justify-center gap-1 self-center\">\n {slotBeforeClose}\n <button\n type=\"button\"\n onClick={onClose}\n className=\"flex items-center justify-center text-notification-title-banner opacity-60 hover:opacity-100 transition-opacity\"\n style={{ width: \"var(--button-sm-icon-size)\", height: \"var(--button-sm-icon-size)\" }}\n aria-label=\"Close notification\"\n >\n <X\n style={{ width: \"var(--semantic-size-width-height-16)\", height: \"var(--semantic-size-width-height-16)\" }}\n />\n </button>\n </div>\n )}\n </div>\n )\n}\n\n// ─── NotificationItem ─────────────────────────────────────────────────────────\n// Purely controlled. isRead is a prop; swipe position is ephemeral UI state.\n// Pointer-capture approach keeps drag tracking reliable on desktop and touch.\n\ninterface NotificationItemProps {\n variant?: NotificationVariant\n title: React.ReactNode\n description?: React.ReactNode\n dateTime?: React.ReactNode\n /** Optional content before the variant icon column (e.g. anatomy markers). */\n slotBeforeIcon?: React.ReactNode\n /** Optional content after the icon + badge cell (e.g. anatomy markers for the unread dot). */\n slotAfterIcon?: React.ReactNode\n /** Optional content before the desktop action buttons (e.g. anatomy markers). */\n slotBeforeActions?: React.ReactNode\n isRead: boolean\n /** desktop=true → hover reveals icon-only actions (no swipe). default false = mobile swipe mode. */\n desktop?: boolean\n onRead?: () => void\n onUnread?: () => void\n onDelete?: () => void\n className?: string\n}\n\n// ── Shared inner content (icon + text block) used in both mobile and desktop ──\nfunction NotificationItemContent({\n variant,\n title,\n description,\n dateTime,\n isRead,\n slotBeforeIcon,\n slotAfterIcon,\n}: Pick<\n NotificationItemProps,\n | \"variant\"\n | \"title\"\n | \"description\"\n | \"dateTime\"\n | \"isRead\"\n | \"slotBeforeIcon\"\n | \"slotAfterIcon\"\n>) {\n const Icon = variantIconMap[variant ?? \"information\"]\n return (\n <>\n {/* Icon with optional unread badge dot */}\n <div className=\"flex shrink-0 items-start gap-1\">\n {slotBeforeIcon}\n <div className=\"relative shrink-0\">\n <div\n className={cn(\"flex items-center justify-center rounded-[var(--notification-radius-icon)]\", variantIconBgClass[variant ?? \"information\"])}\n style={{ width: \"var(--notification-size-icon-container)\", height: \"var(--notification-size-icon-container)\" }}\n >\n <Icon\n className={variantIconNormalClass[variant ?? \"information\"]}\n style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }}\n />\n </div>\n {!isRead && (\n <BadgeDot color=\"red\" size=\"sm\" className=\"absolute top-0 left-6\" />\n )}\n </div>\n {slotAfterIcon}\n </div>\n\n {/* Text column */}\n <div\n className=\"flex h-full min-w-0 flex-1 flex-col items-start justify-center leading-[1.5] whitespace-nowrap\"\n style={{ gap: \"var(--notification-gap-sm)\" }}\n >\n <div className=\"flex w-full flex-col items-start\">\n <p\n className=\"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis text-notification-title-item\"\n style={{ fontSize: \"var(--notification-font-size-md)\", fontWeight: \"var(--notification-font-weight-semibold)\" }}\n >\n {title}\n </p>\n {description != null && description !== \"\" && (\n <p\n className={cn(\n \"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis\",\n isRead ? \"text-notification-description-item-read\" : \"text-notification-description-item-unread\"\n )}\n style={{\n fontSize: \"var(--notification-font-size-sm)\",\n fontWeight: isRead ? \"var(--notification-font-weight-regular)\" : \"var(--notification-font-weight-medium)\",\n }}\n >\n {description}\n </p>\n )}\n </div>\n {dateTime != null && dateTime !== \"\" && (\n <span\n className=\"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis text-notification-date-time-item\"\n style={{ fontSize: \"var(--notification-font-size-xs)\", fontWeight: \"var(--notification-font-weight-regular)\" }}\n >\n {dateTime}\n </span>\n )}\n </div>\n </>\n )\n}\n\n// ── Desktop variant — hover-reveal icon-only actions, no hooks needed ──────────\nfunction NotificationItemDesktop({\n variant = \"information\",\n title,\n description,\n dateTime,\n isRead,\n slotBeforeIcon,\n slotAfterIcon,\n slotBeforeActions,\n onRead,\n onUnread,\n onDelete,\n className,\n}: Omit<NotificationItemProps, \"desktop\">) {\n return (\n <div\n data-slot=\"notification-item\"\n data-read={isRead}\n data-desktop=\"true\"\n className={cn(\n \"group relative flex items-start\",\n \"h-[var(--notification-height-item)]\",\n \"gap-[var(--notification-gap-icon-content)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n \"bg-notification-bg-item-default\",\n \"transition-colors duration-[var(--duration-fast,150ms)]\",\n \"hover:bg-notification-bg-item-hover\",\n \"cursor-default select-none\",\n className\n )}\n >\n <NotificationItemContent\n variant={variant}\n title={title}\n description={description}\n dateTime={dateTime}\n isRead={isRead}\n slotBeforeIcon={slotBeforeIcon}\n slotAfterIcon={slotAfterIcon}\n />\n\n {/* Action icons — no labels, appear on group-hover */}\n <div\n className={cn(\n \"flex shrink-0 items-center self-center\",\n \"gap-[var(--notification-gap-md)]\",\n \"opacity-0 transition-opacity duration-[var(--duration-fast,150ms)]\",\n \"group-hover:opacity-100\"\n )}\n aria-hidden=\"true\"\n >\n {slotBeforeActions}\n <button\n type=\"button\"\n className=\"flex items-center justify-center rounded text-notification-icon-read-unread hover:bg-notification-bg-button-press active:bg-notification-bg-button-press transition-colors\"\n style={{ width: \"var(--notification-size-icon-container)\", height: \"var(--notification-size-icon-container)\" }}\n onClick={() => { if (!isRead) onRead?.(); else onUnread?.() }}\n aria-label={isRead ? \"Mark as unread\" : \"Mark as read\"}\n >\n {isRead\n ? <Mail style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n : <MailOpen style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n }\n </button>\n <button\n type=\"button\"\n className=\"flex items-center justify-center rounded text-notification-icon-delete hover:bg-notification-bg-button-press active:bg-notification-bg-button-press transition-colors\"\n style={{ width: \"var(--notification-size-icon-container)\", height: \"var(--notification-size-icon-container)\" }}\n onClick={() => onDelete?.()}\n aria-label=\"Delete notification\"\n >\n <Trash2 style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n </button>\n </div>\n </div>\n )\n}\n\n// ── Mobile variant — swipe-to-reveal labelled actions ───────────────────────\n// All hooks live here unconditionally, satisfying React's Rules of Hooks.\nfunction NotificationItemMobile({\n variant = \"information\",\n title,\n description,\n dateTime,\n isRead,\n slotBeforeIcon,\n slotAfterIcon,\n slotBeforeActions: _slotBeforeActions,\n onRead,\n onUnread,\n onDelete,\n className,\n}: Omit<NotificationItemProps, \"desktop\">) {\n // isSwiped drives only a11y attributes (tabIndex / aria-hidden).\n // The visual transform is applied directly to the DOM via contentRef\n // so React re-renders are never triggered during a drag — zero lag.\n const [isSwiped, setIsSwiped] = React.useState(false)\n const [readPressed, setReadPressed] = React.useState(false)\n const [deletePressed, setDeletePressed] = React.useState(false)\n const isSwipedRef = React.useRef(false)\n const contentRef = React.useRef<HTMLDivElement>(null)\n const actionsRef = React.useRef<HTMLDivElement>(null)\n const startXRef = React.useRef<number>(0)\n\n const SNAP_THRESHOLD = 40 // px delta to commit open/close\n const TAP_THRESHOLD = 5 // px delta below which we treat as tap\n\n const actionsWidth = () => actionsRef.current?.offsetWidth ?? 161\n\n const move = (x: number, animate: boolean) => {\n const el = contentRef.current\n if (!el) return\n el.style.transition = animate ? \"transform var(--duration-fast, 150ms) ease\" : \"none\"\n el.style.transform = `translateX(${x}px)`\n }\n\n const collapse = React.useCallback(() => {\n isSwipedRef.current = false\n setIsSwiped(false)\n move(0, true)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handlePointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.pointerType === \"mouse\" && e.button !== 0) return\n startXRef.current = e.clientX\n contentRef.current?.setPointerCapture(e.pointerId)\n move(isSwipedRef.current ? -actionsWidth() : 0, false)\n }\n\n const handlePointerMove = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!contentRef.current?.hasPointerCapture(e.pointerId)) return\n const base = isSwipedRef.current ? -actionsWidth() : 0\n const clamped = Math.min(0, Math.max(-actionsWidth(), base + (e.clientX - startXRef.current)))\n move(clamped, false)\n }\n\n const handlePointerUp = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!contentRef.current?.hasPointerCapture(e.pointerId)) return\n contentRef.current.releasePointerCapture(e.pointerId)\n\n const delta = e.clientX - startXRef.current\n\n if (Math.abs(delta) < TAP_THRESHOLD) {\n if (isSwipedRef.current) collapse()\n return\n }\n\n const target = (isSwipedRef.current ? -actionsWidth() : 0) + delta\n\n if (target < -SNAP_THRESHOLD) {\n isSwipedRef.current = true\n setIsSwiped(true)\n move(-actionsWidth(), true)\n } else {\n collapse()\n }\n }\n\n return (\n <div\n data-slot=\"notification-item\"\n data-read={isRead}\n className={cn(\n \"relative overflow-hidden bg-notification-bg-item-default\",\n \"h-[var(--notification-height-item)]\",\n className\n )}\n >\n {/* Action buttons — fixed at right-0, revealed when content slides left */}\n <div ref={actionsRef} className=\"absolute inset-y-0 right-0 flex\" aria-hidden={!isSwiped}>\n {/* Read / Unread */}\n <button\n type=\"button\"\n tabIndex={isSwiped ? 0 : -1}\n className={cn(\n \"flex h-full flex-col items-center justify-center gap-[var(--notification-gap-sm)] overflow-hidden\",\n \"text-notification-text-read-unread\",\n readPressed ? \"bg-notification-bg-button-press\" : \"bg-notification-bg-button-default\"\n )}\n style={{ width: \"var(--notification-width-button)\" }}\n onMouseDown={() => setReadPressed(true)}\n onMouseUp={() => {\n setReadPressed(false)\n if (!isRead) onRead?.(); else onUnread?.()\n collapse()\n }}\n onMouseLeave={() => setReadPressed(false)}\n onTouchStart={(e) => { e.stopPropagation(); setReadPressed(true) }}\n onTouchEnd={(e) => {\n e.preventDefault(); e.stopPropagation()\n setReadPressed(false)\n if (!isRead) onRead?.(); else onUnread?.()\n collapse()\n }}\n aria-label={isRead ? \"Mark as unread\" : \"Mark as read\"}\n >\n {isRead\n ? <Mail className=\"shrink-0 text-notification-icon-read-unread\" style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n : <MailOpen className=\"shrink-0 text-notification-icon-read-unread\" style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n }\n <span className=\"text-center leading-[1.5]\" style={{ fontSize: \"var(--notification-font-size-xs)\", fontWeight: \"var(--notification-font-weight-medium)\" }}>\n {isRead ? \"Unread\" : \"Read\"}\n </span>\n </button>\n\n {/* Divider */}\n <div className=\"h-full bg-notification-bg-divider\" style={{ width: \"var(--notification-width-divider)\" }} />\n\n {/* Delete */}\n <button\n type=\"button\"\n tabIndex={isSwiped ? 0 : -1}\n className={cn(\n \"flex h-full flex-col items-center justify-center gap-[var(--notification-gap-sm)] overflow-hidden\",\n \"text-notification-text-delete\",\n deletePressed ? \"bg-notification-bg-button-press\" : \"bg-notification-bg-button-default\"\n )}\n style={{ width: \"var(--notification-width-button)\" }}\n onMouseDown={() => setDeletePressed(true)}\n onMouseUp={() => { setDeletePressed(false); onDelete?.() }}\n onMouseLeave={() => setDeletePressed(false)}\n onTouchStart={(e) => { e.stopPropagation(); setDeletePressed(true) }}\n onTouchEnd={(e) => {\n e.preventDefault(); e.stopPropagation()\n setDeletePressed(false); onDelete?.()\n }}\n aria-label=\"Delete notification\"\n >\n <Trash2 className=\"shrink-0 text-notification-icon-delete\" style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n <span className=\"text-center leading-[1.5]\" style={{ fontSize: \"var(--notification-font-size-xs)\", fontWeight: \"var(--notification-font-weight-medium)\" }}>\n Delete\n </span>\n </button>\n </div>\n\n {/* Main content — transform driven directly via DOM ref, no React re-render during drag */}\n <div\n ref={contentRef}\n className={cn(\n \"absolute inset-0 flex items-start touch-pan-y\",\n \"gap-[var(--notification-gap-icon-content)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n \"bg-notification-bg-item-default\",\n \"cursor-default select-none\"\n )}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n >\n <NotificationItemContent\n variant={variant}\n title={title}\n description={description}\n dateTime={dateTime}\n isRead={isRead}\n slotBeforeIcon={slotBeforeIcon}\n slotAfterIcon={slotAfterIcon}\n />\n </div>\n </div>\n )\n}\n\n// ── Public API — thin wrapper, delegates to the correct internal component ────\nfunction NotificationItem({ desktop = false, ...props }: NotificationItemProps) {\n if (desktop) return <NotificationItemDesktop {...props} />\n return <NotificationItemMobile {...props} />\n}\n\n// ─── NotificationDivider ─────────────────────────────────────────────────────\n\nfunction NotificationDivider({ className }: { className?: string }) {\n return (\n <div\n data-slot=\"notification-divider\"\n className={cn(\"w-full bg-notification-bg-divider\", className)}\n style={{ height: \"var(--notification-width-divider)\" }}\n />\n )\n}\n\nexport { NotificationBanner, NotificationItem, NotificationDivider }\n\nexport type { NotificationVariant, NotificationBannerProps, NotificationItemProps }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst sectionMessageVariants = cva(\n \"relative w-full rounded-[var(--section-message-radius)] border-0 px-[var(--section-message-padding-horizontal)] py-[var(--section-message-padding-vertical)] text-section-message-title has-[>svg]:grid has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:items-center has-[>svg]:gap-x-[var(--section-message-gap-horizontal)] [&>svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n /* ── token-backed section-message variants ── */\n default:\n \"bg-section-message-fill-bg-default [&>svg]:text-section-message-icon-close\",\n danger:\n \"bg-section-message-fill-bg-danger [&>svg]:text-section-message-icon-danger\",\n information:\n \"bg-section-message-fill-bg-information [&>svg]:text-section-message-icon-information\",\n success:\n \"bg-section-message-fill-bg-success [&>svg]:text-section-message-icon-success\",\n warning:\n \"bg-section-message-fill-bg-warning [&>svg]:text-section-message-icon-warning\",\n info: \"bg-section-message-fill-bg-information [&>svg]:text-section-message-icon-information\",\n error:\n \"bg-section-message-fill-bg-danger [&>svg]:text-section-message-icon-danger\",\n },\n size: {\n sm: [\n \"[font-size:var(--section-message-sm-font-size-message)]\",\n \"[&>svg:not([class*='size-'])]:size-[var(--section-message-sm-icon-size)]\",\n \"[&_[data-slot=section-message-title]]:text-[length:var(--section-message-sm-font-size-title)]\",\n \"[&_[data-slot=section-message-description]]:gap-[var(--section-message-sm-gap-vertical-2)]\",\n ],\n md: [\n \"[font-size:var(--section-message-md-font-size-message)]\",\n \"[&>svg:not([class*='size-'])]:size-[var(--section-message-md-icon-size)]\",\n \"[&_[data-slot=section-message-title]]:text-[length:var(--section-message-md-font-size-title)]\",\n \"[&_[data-slot=section-message-description]]:gap-[var(--section-message-md-gap-vertical-2)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction SectionMessage({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof sectionMessageVariants>) {\n return (\n <div\n data-slot=\"section-message\"\n role=\"alert\"\n className={cn(sectionMessageVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nfunction SectionMessageTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"section-message-title\"\n className={cn(\n \"col-start-2 font-bold leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SectionMessageDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"section-message-description\"\n className={cn(\n \"col-start-2 grid justify-items-start gap-[var(--section-message-gap-vertical-1)] text-section-message-description [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { SectionMessage, SectionMessageTitle, SectionMessageDescription }\n","\"use client\"\n\nimport { AspectRatio as AspectRatioPrimitive } from \"radix-ui\"\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: \"default\" | \"sm\" | \"lg\" | \"xl\"\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 data-[size=sm]:size-6 data-[size=lg]:size-10 data-[size=xl]:[width:var(--avatar-size-xl)] data-[size=xl]:[height:var(--avatar-size-xl)]\",\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(\"aspect-square size-full overflow-hidden rounded-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex size-full items-center justify-center overflow-hidden rounded-full bg-secondary-surface text-sm text-subtle group-data-[size=sm]/avatar:text-xs group-data-[size=xl]/avatar:text-base\",\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-prominent-static-inverse ring-2 ring-primary-surface 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 \"group-data-[size=xl]/avatar:size-3.5 group-data-[size=xl]/avatar:[&>svg]:size-2.5\",\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-primary-surface\",\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-secondary-surface text-sm text-subtle ring-2 ring-primary-surface group-has-data-[size=sm]/avatar-group:size-6 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=xl]/avatar-group:[width:var(--avatar-size-xl)] group-has-data-[size=xl]/avatar-group:[height:var(--avatar-size-xl)] [&>svg]:size-4 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=xl]/avatar-group:[&>svg]:size-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarBadge,\n AvatarGroup,\n AvatarGroupCount,\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 tagVariants = cva(\n \"inline-flex w-fit shrink-0 items-center justify-center overflow-hidden border font-body font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:pointer-events-none [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n /* ── fill: tinted background, no border ── */\n \"fill-neutral\": \"bg-tag-fill-bg-neutral text-tag-text-neutral border-transparent [&>svg]:text-tag-icon-default\",\n \"fill-red\": \"bg-tag-fill-bg-red text-tag-text-red border-transparent [&>svg]:text-tag-icon-red\",\n \"fill-yellow\": \"bg-tag-fill-bg-yellow text-tag-text-yellow border-transparent [&>svg]:text-tag-icon-yellow\",\n \"fill-green\": \"bg-tag-fill-bg-green text-tag-text-green border-transparent [&>svg]:text-tag-icon-green\",\n \"fill-blue\": \"bg-tag-fill-bg-blue text-tag-text-blue border-transparent [&>svg]:text-tag-icon-blue\",\n /* ── outline: transparent background, coloured border ── */\n \"outline-neutral\": \"bg-transparent border-tag-outline-border-neutral text-tag-text-neutral [&>svg]:text-tag-icon-default\",\n \"outline-red\": \"bg-transparent border-tag-outline-border-red text-tag-text-red [&>svg]:text-tag-icon-red\",\n \"outline-yellow\": \"bg-transparent border-tag-outline-border-yellow text-tag-text-yellow [&>svg]:text-tag-icon-yellow\",\n \"outline-green\": \"bg-transparent border-tag-outline-border-green text-tag-text-green [&>svg]:text-tag-icon-green\",\n \"outline-blue\": \"bg-transparent border-tag-outline-border-blue text-tag-text-blue [&>svg]:text-tag-icon-blue\",\n },\n size: {\n sm: [\n \"h-[var(--tag-sm-height)]\",\n \"min-w-[var(--tag-sm-min-width)]\",\n \"px-[var(--tag-sm-padding-horizontal)]\",\n \"gap-[var(--tag-sm-gap)]\",\n \"[font-size:var(--tag-sm-font-size)]\",\n \"[font-weight:var(--tag-sm-font-weight)]\",\n \"rounded-[var(--tag-sm-radius)]\",\n \"[&>svg]:[width:var(--tag-sm-icon-size)] [&>svg]:[height:var(--tag-sm-icon-size)]\",\n ],\n md: [\n \"h-[var(--tag-md-height)]\",\n \"min-w-[var(--tag-md-min-width)]\",\n \"px-[var(--tag-md-padding-horizontal)]\",\n \"gap-[var(--tag-md-gap)]\",\n \"[font-size:var(--tag-md-font-size)]\",\n \"[font-weight:var(--tag-md-font-weight)]\",\n \"rounded-[var(--tag-md-radius)]\",\n \"[&>svg]:[width:var(--tag-md-icon-size)] [&>svg]:[height:var(--tag-md-icon-size)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"fill-neutral\",\n size: \"md\",\n },\n }\n)\n\nfunction Tag({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof tagVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"tag\"\n data-variant={variant}\n className={cn(tagVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Tag, tagVariants }\n","import * as React from \"react\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\ntype BreadcrumbSize = \"sm\" | \"md\"\n\nconst BreadcrumbContext = React.createContext<{ size: BreadcrumbSize }>({ size: \"md\" })\n\n/**\n * Breadcrumb navigation container.\n *\n * @param size - \"sm\" (14px) | \"md\" (16px). Default: \"md\"\n *\n * @example\n * <Breadcrumb size=\"sm\">\n * <BreadcrumbList>\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbSeparator />\n * <BreadcrumbItem>\n * <BreadcrumbPage>Current</BreadcrumbPage>\n * </BreadcrumbItem>\n * </BreadcrumbList>\n * </Breadcrumb>\n */\nfunction Breadcrumb({\n size = \"md\",\n ...props\n}: React.ComponentProps<\"nav\"> & { size?: BreadcrumbSize }) {\n return (\n <BreadcrumbContext.Provider value={{ size }}>\n <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n </BreadcrumbContext.Provider>\n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n const { size } = React.useContext(BreadcrumbContext)\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex flex-wrap items-center break-words\",\n size === \"sm\" ? \"gap-1 text-sm\" : \"gap-1 text-base\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n )\n}\n\n/**\n * Navigable breadcrumb link — \"default\" state in Figma.\n * Uses `text-breadcrumb-default` (72% opacity) with hover lift to `text-prominent`.\n */\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"a\"\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\n \"text-breadcrumb-default transition-colors hover:text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\n/**\n * Current / active page — \"selected\" state in Figma.\n * Renders muted (48% opacity), non-interactive, aria-current=\"page\".\n */\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-breadcrumb-selected\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n const { size } = React.useContext(BreadcrumbContext)\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n \"text-breadcrumb-sep\",\n size === \"sm\" ? \"[&>svg]:size-3.5\" : \"[&>svg]:size-4\",\n className\n )}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center text-breadcrumb-default\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\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 buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-24 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display font-semibold\",\n {\n variants: {\n variant: {\n primary:\n \"border-transparent bg-button-primary-bg text-button-primary-text hover:bg-button-primary-bg-hover active:bg-button-primary-bg-pressed\",\n secondary:\n \"bg-transparent border-button-secondary-border text-button-secondary-text hover:bg-button-secondary-bg-hover active:bg-button-secondary-bg-pressed\",\n tertiary:\n \"border-transparent bg-button-tertiary-bg text-button-tertiary-text hover:bg-button-tertiary-bg-hover active:bg-button-tertiary-bg-pressed\",\n ghost:\n \"border-transparent bg-transparent text-button-ghost-text hover:bg-button-ghost-bg-hover active:bg-button-ghost-bg-pressed\",\n },\n size: {\n lg: \"h-[var(--button-lg-height)] w-fit min-w-[var(--button-lg-min-width)] gap-[var(--button-lg-gap)] rounded-[var(--button-lg-radius)] px-[var(--button-lg-padding-horizontal)] [font-size:var(--button-lg-font-size)] [border-width:var(--button-lg-border-width)] [&_svg:not([class*='size-'])]:size-5\",\n md: \"h-[var(--button-md-height)] w-fit min-w-[var(--button-md-min-width)] gap-[var(--button-md-gap)] rounded-[var(--button-md-radius)] px-[var(--button-md-padding-horizontal)] [font-size:var(--button-md-font-size)] [border-width:var(--button-md-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n sm: \"h-[var(--button-sm-height)] w-fit min-w-[var(--button-sm-min-width)] gap-[var(--button-sm-gap)] rounded-[var(--button-sm-radius)] px-[var(--button-sm-padding-horizontal)] [font-size:var(--button-sm-font-size)] [border-width:var(--button-sm-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n xs: \"h-6 w-fit gap-1 rounded-full px-2 text-xs [border-width:1.5px] [&_svg:not([class*='size-'])]:size-3\", /* no token — kept as-is */\n icon: \"size-[var(--button-lg-icon-size)] rounded-[var(--button-lg-radius)] [border-width:var(--button-lg-border-width)] [&_svg:not([class*='size-'])]:size-5\",\n \"icon-lg\": \"size-[var(--button-lg-icon-size)] rounded-[var(--button-lg-radius)] [border-width:var(--button-lg-border-width)] [&_svg:not([class*='size-'])]:size-5\",\n \"icon-md\": \"size-[var(--button-md-icon-size)] rounded-[var(--button-md-radius)] [border-width:var(--button-md-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n \"icon-sm\": \"size-[var(--button-sm-icon-size)] rounded-[var(--button-sm-radius)] [border-width:var(--button-sm-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n \"icon-xs\": \"size-6 rounded-full [border-width:1.5px] [&_svg:not([class*='size-'])]:size-3\", /* no token — kept as-is */\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"lg\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"primary\",\n size = \"lg\",\n asChild = false,\n loading = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n loading?: 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 data-loading={loading || undefined}\n className={cn(buttonVariants({ variant, size, className }), loading && \"pointer-events-none opacity-24\")}\n aria-busy={loading || undefined}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst chipVariants = cva(\n [\n /* layout */\n \"inline-flex w-fit shrink-0 items-center justify-center whitespace-nowrap\",\n /* typography */\n \"font-body font-medium text-chip-text-prominent\",\n /* border + shape */\n \"border border-chip-border-default bg-transparent\",\n \"[border-width:var(--chip-border-width)]\",\n \"rounded-[var(--chip-radius)]\",\n /* interactive states */\n \"cursor-pointer\",\n \"hover:bg-chip-bg-hover\",\n \"active:bg-chip-bg-pressed\",\n /* selected state */\n \"data-[selected]:bg-chip-bg-selected\",\n \"data-[selected]:border-chip-border-selected\",\n \"data-[selected]:[border-width:var(--chip-border-width-selected)]\",\n /* disabled state */\n \"disabled:pointer-events-none\",\n \"disabled:text-chip-text-disabled\",\n \"disabled:border-chip-border-disabled\",\n \"disabled:[&>svg]:text-chip-icon-disabled\",\n /* icon */\n \"[&>svg]:pointer-events-none [&>svg]:shrink-0 [&>svg]:text-chip-icon-prominent\",\n /* focus */\n \"outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n /* transitions */\n \"transition-[color,background-color,border-color,border-width]\",\n ],\n {\n variants: {\n size: {\n sm: [\n \"h-[var(--chip-sm-height)]\",\n \"px-[var(--chip-sm-padding-horizontal)]\",\n \"gap-[var(--chip-sm-gap)]\",\n \"[font-size:var(--chip-sm-font-size)]\",\n \"[&>svg]:[width:var(--chip-sm-icon-size)] [&>svg]:[height:var(--chip-sm-icon-size)]\",\n ],\n md: [\n \"h-[var(--chip-md-height)]\",\n \"px-[var(--chip-md-padding-horizontal)]\",\n \"gap-[var(--chip-md-gap)]\",\n \"[font-size:var(--chip-md-font-size)]\",\n \"[&>svg]:[width:var(--chip-md-icon-size)] [&>svg]:[height:var(--chip-md-icon-size)]\",\n ],\n lg: [\n \"h-[var(--chip-lg-height)]\",\n \"px-[var(--chip-lg-padding-horizontal)]\",\n \"gap-[var(--chip-lg-gap)]\",\n \"[font-size:var(--chip-lg-font-size)]\",\n \"[&>svg]:[width:var(--chip-lg-icon-size)] [&>svg]:[height:var(--chip-lg-icon-size)]\",\n ],\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nfunction Chip({\n className,\n size,\n selected = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof chipVariants> & {\n selected?: boolean\n }) {\n return (\n <button\n type=\"button\"\n data-slot=\"chip\"\n data-selected={selected || undefined}\n aria-pressed={selected}\n className={cn(chipVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nexport { Chip, chipVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button, buttonVariants } from \"./button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker>) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-card rounded-md border border-border/50 p-4 [--cell-size:--spacing(10)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=card-content]_&]:border-0 [[data-slot=card-content]_&]:shadow-none [[data-slot=popover-content]_&]:bg-transparent [[data-slot=popover-content]_&]:border-0 [[data-slot=popover-content]_&]:shadow-none\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"relative flex flex-col gap-4 md:flex-row\",\n defaultClassNames.months\n ),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon-sm\" }),\n \"p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon-sm\" }),\n \"p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute inset-0 bg-primary-surface opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"font-body font-medium select-none\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-subtle\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"flex-1 rounded-md text-[0.8rem] font-body font-normal text-subtle select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n week_number_header: cn(\n \"w-(--cell-size) select-none\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] text-subtle select-none\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-md\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-xs bg-prominent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-xs bg-prominent\", defaultClassNames.range_end),\n today: defaultClassNames.today,\n outside: cn(\n \"text-subtle aria-selected:text-subtle\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-subtle opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"tertiary\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-today={modifiers.today || undefined}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-body font-normal rounded-xs bg-transparent border-transparent shadow-none text-prominent hover:!bg-secondary-hover hover:text-prominent hover:no-underline hover:shadow-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 data-[range-end=true]:rounded-xs data-[range-end=true]:bg-prominent data-[range-end=true]:border-transparent data-[range-end=true]:text-primary-surface data-[range-end=true]:hover:!bg-prominent data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-prominent/10 data-[range-middle=true]:text-prominent data-[range-start=true]:rounded-xs data-[range-start=true]:bg-prominent data-[range-start=true]:border-transparent data-[range-start=true]:text-primary-surface data-[range-start=true]:hover:!bg-prominent data-[selected-single=true]:bg-prominent data-[selected-single=true]:border-transparent data-[selected-single=true]:text-primary-surface data-[selected-single=true]:hover:!bg-prominent [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// ── Card ──────────────────────────────────────────────────────────────────────\n\nconst cardVariants = cva(\n \"flex flex-col gap-6 rounded-2xl py-6 text-prominent\",\n {\n variants: {\n variant: {\n /** Elevated card — white surface lifted by a shadow, no border */\n elevate: \"bg-card border border-transparent shadow-accordion-fill\",\n /** Outlined card — white surface with a subtle 8% border, no shadow */\n outline: \"bg-card border border-default/50\",\n },\n },\n defaultVariants: {\n variant: \"outline\",\n },\n }\n)\n\nfunction Card({\n className,\n variant = \"outline\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof cardVariants>) {\n return (\n <div\n data-slot=\"card\"\n data-variant={variant}\n className={cn(cardVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\n// ── CardHeader ────────────────────────────────────────────────────────────────\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── CardTitle ─────────────────────────────────────────────────────────────────\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\n// ── CardDescription ───────────────────────────────────────────────────────────\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-subtle\", className)}\n {...props}\n />\n )\n}\n\n// ── CardAction ────────────────────────────────────────────────────────────────\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\n// ── CardContent ───────────────────────────────────────────────────────────────\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\n// ── CardFooter ────────────────────────────────────────────────────────────────\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n cardVariants,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"secondary\",\n size = \"icon-md\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute rounded-sm\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"secondary\",\n size = \"icon-md\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute rounded-sm\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR } — light-only\nconst THEMES = { light: \"\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\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 ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\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 {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 }) {\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 as keyof typeof config]?.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-[8rem] items-start gap-1.5 rounded-lg border border-default/50 bg-primary-surface 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={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-subtle\",\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-subtle\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium text-prominent tabular-nums\">\n {item.value.toLocaleString()}\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 Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\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) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-subtle\"\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\n// Helper to extract item config from a payload.\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\n ? config[configLabelKey]\n : config[key as keyof typeof config]\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 { CheckIcon, InfoIcon, MinusIcon } from \"lucide-react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Checkbox — raw Radix primitive */\n/* */\n/* Visual model (matches Figma Quill spec): */\n/* • unchecked — transparent bg, ~50% opacity prominent border */\n/* • checked — bg-selected fill (dark in light / white in dark mode) */\n/* • indeterminate — same fill as checked, minus icon instead of check */\n/* */\n/* Indicator uses text-background for the icon so it automatically contrasts */\n/* against bg-selected in both light (near-white on dark) and dark (dark on */\n/* white) modes — no separate token registration needed. */\n/* ─────────────────────────────────────────────────────────────────────────── */\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 size-4 shrink-0 rounded-[2px] border border-prominent/50\",\n \"transition-colors duration-instant outline-none\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-selected data-[state=checked]:border-selected\",\n \"data-[state=indeterminate]:bg-selected data-[state=indeterminate]:border-selected\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-background transition-none\"\n >\n {/*\n * Radix Indicator sets data-state on itself (\"checked\" | \"indeterminate\").\n * Hide the icon that does NOT match, leaving the correct one visible.\n * text-background on the Indicator gives near-white (light mode) or\n * dark (dark mode), contrasting correctly against bg-selected in both modes.\n */}\n <CheckIcon className=\"size-3.5 [[data-state=indeterminate]_&]:hidden\" />\n <MinusIcon className=\"size-3.5 [[data-state=checked]_&]:hidden\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CheckboxField — composite: checkbox + label + optional info icon */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype CheckboxFieldProps = Omit<\n React.ComponentProps<typeof CheckboxPrimitive.Root>,\n \"children\"\n> & {\n /**\n * Visual size variant.\n * - `sm` → 14 px label, 14 px info icon\n * - `md` → 16 px label, 16 px info icon (default)\n */\n size?: \"sm\" | \"md\"\n /** Label text rendered next to the checkbox. */\n label?: React.ReactNode\n /** When `true`, renders a Lucide `InfoIcon` after the label text. */\n info?: boolean\n}\n\nfunction CheckboxField({\n id,\n label,\n info = false,\n size = \"md\",\n disabled,\n className,\n ...props\n}: CheckboxFieldProps) {\n return (\n <label\n data-slot=\"checkbox-field\"\n data-size={size}\n className={cn(\n \"inline-flex items-center gap-2 cursor-pointer select-none\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n className\n )}\n >\n <Checkbox id={id} disabled={disabled} {...props} />\n\n {label != null && (\n <span\n className={cn(\n \"inline-flex items-center gap-2 text-prominent\",\n size === \"sm\" ? \"text-sm leading-5\" : \"text-base leading-6\"\n )}\n >\n <span>{label}</span>\n {info && (\n <InfoIcon\n aria-hidden\n className={cn(\n \"shrink-0 text-prominent\",\n size === \"sm\" ? \"size-3.5\" : \"size-4\"\n )}\n />\n )}\n </span>\n )}\n </label>\n )\n}\n\nexport { Checkbox, CheckboxField }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { ListItem } from \"./list-item\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Collapsible */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CollapsibleTrigger */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CollapsibleContent */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction CollapsibleContent({\n className,\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n className={cn(\"flex flex-col gap-0.5\", className)}\n {...props}\n />\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CollapsibleItem */\n/* */\n/* A thin wrapper over ListItem locked to type=\"primary\" size=\"md\". */\n/* Renders each row inside CollapsibleContent with the exact same visual */\n/* as a primary md list item (bg, hover, pressed, selected, disabled states). */\n/* Pass asChild to render as a button/link for interactive items. */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction CollapsibleItem({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof ListItem>, \"type\" | \"size\">) {\n return (\n <ListItem\n data-slot=\"collapsible-item\"\n type=\"primary\"\n size=\"md\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nexport {\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n CollapsibleItem,\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\"\nimport { Separator } from \"./separator\"\n\n// ── ListItemGroup ─────────────────────────────────────────────────────────────\n\nfunction ListItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"list-item-group\"\n className={cn(\"group/list-item-group flex flex-col\", className)}\n {...props}\n />\n )\n}\n\n// ── ListItemSeparator ─────────────────────────────────────────────────────────\n\nfunction ListItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"list-item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n )\n}\n\n// ── ListItem ──────────────────────────────────────────────────────────────────\n\nconst listItemVariants = cva(\n [\n \"group/list-item flex flex-wrap items-center\",\n \"rounded-[var(--list-item-radius)]\",\n \"border border-transparent\",\n \"transition-colors duration-instant\",\n \"outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"text-list-item-text-prominent [font-weight:var(--list-item-md-font-weight,400)]\",\n // icon slot inherits token color\n \"[&_[data-slot=list-item-icon]]:text-list-item-icon-prominent\",\n // disabled: mute text, icons, and block interaction\n \"data-[disabled]:text-list-item-text-disabled\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"data-[disabled]:[&_[data-slot=list-item-icon]]:text-list-item-icon-disabled\",\n ].join(\" \"),\n {\n variants: {\n type: {\n /** Primary surface — default bg, no border */\n primary: [\n \"bg-list-item-primary-bg-default\",\n \"hover:bg-list-item-primary-bg-hover\",\n \"active:bg-list-item-primary-bg-pressed\",\n \"data-[selected]:bg-list-item-primary-bg-selected data-[selected]:border-list-item-border-selected\",\n \"data-[disabled]:bg-list-item-primary-bg-disabled\",\n ],\n /** Secondary surface — used for lists on elevated or card backgrounds */\n secondary: [\n \"bg-list-item-secondary-bg-default\",\n \"hover:bg-list-item-secondary-bg-hover\",\n \"active:bg-list-item-secondary-bg-pressed\",\n \"data-[selected]:bg-list-item-secondary-bg-selected data-[selected]:border-list-item-border-selected\",\n \"data-[disabled]:bg-list-item-secondary-bg-disabled\",\n ],\n },\n size: {\n md: \"gap-[var(--list-item-md-gap)] px-[var(--list-item-md-padding-horizontal)] min-h-[var(--list-item-md-height)] py-2 [font-size:var(--list-item-md-font-size)]\",\n sm: \"gap-[var(--list-item-sm-gap)] px-[var(--list-item-sm-padding-horizontal)] min-h-[var(--list-item-sm-height)] py-1 [font-size:var(--list-item-sm-font-size)]\",\n },\n },\n defaultVariants: {\n type: \"primary\",\n size: \"md\",\n },\n }\n)\n\nfunction ListItem({\n className,\n type = \"primary\",\n size = \"md\",\n selected,\n disabled,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof listItemVariants> & {\n asChild?: boolean\n selected?: boolean\n disabled?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"div\"\n return (\n <Comp\n role=\"listitem\"\n data-slot=\"list-item\"\n data-type={type}\n data-size={size}\n data-selected={selected || undefined}\n data-disabled={disabled || undefined}\n className={cn(listItemVariants({ type, size }), className)}\n {...props}\n />\n )\n}\n\n// ── ListItemIcon ──────────────────────────────────────────────────────────────\n// Bare Lucide icon wrapper. Color is set by the parent ListItem via\n// [data-slot=list-item-icon] selectors, mapping to icon-prominent/icon-disabled tokens.\n\nfunction ListItemIcon({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"list-item-icon\"\n aria-hidden=\"true\"\n className={cn(\n \"shrink-0 flex items-center justify-center\",\n \"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-5\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemFlag ──────────────────────────────────────────────────────────────\n// Country flag thumbnail. Renders a coloured placeholder when no src is given.\n\nfunction ListItemFlag({\n src,\n alt = \"\",\n className,\n ...props\n}: Omit<React.ComponentProps<\"div\">, \"children\"> & {\n src?: string\n alt?: string\n}) {\n return (\n <div\n data-slot=\"list-item-flag\"\n className={cn(\n \"shrink-0 h-4 w-6 overflow-hidden rounded-2xs bg-list-item-flag-placeholder\",\n className\n )}\n {...props}\n >\n {src && (\n <img src={src} alt={alt} className=\"size-full object-cover\" />\n )}\n </div>\n )\n}\n\n// ── ListItemMedia ─────────────────────────────────────────────────────────────\n// Structural media container: use variant=\"icon\" for a boxed icon cell,\n// variant=\"image\" for a thumbnail, or leave as default for a bare icon.\n\nconst listItemMediaVariants = cva(\n [\n \"flex shrink-0 items-center justify-center gap-2\",\n \"group-has-[[data-slot=list-item-description]]/list-item:translate-y-0.5\",\n \"group-has-[[data-slot=list-item-description]]/list-item:self-start\",\n \"[&_svg]:pointer-events-none\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-sm border bg-secondary-surface [&_svg:not([class*='size-'])]:size-4\",\n image: \"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ListItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof listItemMediaVariants>) {\n return (\n <div\n data-slot=\"list-item-media\"\n data-variant={variant}\n className={cn(listItemMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\n// ── ListItemContent ───────────────────────────────────────────────────────────\n\nfunction ListItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 [&+[data-slot=list-item-content]]:flex-none\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemTitle ─────────────────────────────────────────────────────────────\n\nfunction ListItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-title\"\n className={cn(\n \"flex w-fit items-center gap-2 [font-size:var(--list-item-md-font-size)] leading-snug font-medium text-list-item-text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemDescription ───────────────────────────────────────────────────────\n\nfunction ListItemDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"list-item-description\"\n className={cn(\n \"line-clamp-2 text-sm leading-normal font-normal text-balance text-subtle\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemActions ───────────────────────────────────────────────────────────\n\nfunction ListItemActions({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\n// ── ListItemHeader ────────────────────────────────────────────────────────────\n\nfunction ListItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemFooter ────────────────────────────────────────────────────────────\n\nfunction ListItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-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 ListItem,\n ListItemGroup,\n ListItemSeparator,\n ListItemIcon,\n ListItemFlag,\n ListItemMedia,\n ListItemContent,\n ListItemTitle,\n ListItemDescription,\n ListItemActions,\n ListItemHeader,\n ListItemFooter,\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 // Only apply h-full as the default for vertical when the consumer hasn't\n // provided an explicit height class. This prevents specificity conflicts\n // where data-[orientation=vertical]:h-full would override a passed h-* class.\n const hasHeightClass = /\\bh-/.test(className ?? \"\")\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border-subtle data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px\",\n orientation === \"vertical\" && !hasHeightClass && \"h-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { CheckIcon, ChevronDownIcon, XIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"./input-group\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n <ChevronDownIcon\n data-slot=\"combobox-trigger-icon\"\n className=\"pointer-events-none size-4 text-subtle\"\n />\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"secondary\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n showTrigger = true,\n showClear = false,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n}) {\n return (\n <InputGroup className={cn(\"w-auto\", className)}>\n <ComboboxPrimitive.Input\n render={<InputGroupInput disabled={disabled} />}\n {...props}\n />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"secondary\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <ComboboxTrigger />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"isolate z-[65]\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={cn(\n \"group/combobox-content relative max-h-96 w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-primary-surface text-prominent shadow-md ring-1 ring-default duration-100 data-[chips=true]:min-w-(--anchor-width) 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=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none 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 </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={cn(\n \"max-h-[min(calc(--spacing(96)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-primary/10 data-highlighted:text-prominent 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 {children}\n <ComboboxPrimitive.ItemIndicator\n data-slot=\"combobox-item-indicator\"\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <CheckIcon className=\"pointer-events-none size-4 pointer-coarse:size-5\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn(\n \"px-2 py-1.5 text-xs text-subtle pointer-coarse:px-3 pointer-coarse:py-2 pointer-coarse:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n \"hidden w-full justify-center py-2 text-center text-sm text-subtle group-data-empty/combobox-content:flex\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxChips({\n className,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={cn(\n \"flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxChip({\n className,\n children,\n showRemove = true,\n ...props\n}: ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean\n}) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n \"flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm bg-secondary-surface px-1.5 text-xs font-medium whitespace-nowrap text-prominent has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\",\n className\n )}\n {...props}\n >\n {children}\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"secondary\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({\n className,\n children: _children,\n ...props\n}: ComboboxPrimitive.Input.Props) {\n return (\n <ComboboxPrimitive.Input\n data-slot=\"combobox-chip-input\"\n className={cn(\"min-w-16 flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxContent,\n ComboboxList,\n ComboboxItem,\n ComboboxGroup,\n ComboboxLabel,\n ComboboxCollection,\n ComboboxEmpty,\n ComboboxSeparator,\n ComboboxChips,\n ComboboxChip,\n ComboboxChipsInput,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n}\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 \"./button\"\nimport { Textarea } from \"./textarea\"\n\nconst inputGroupVariants = cva(\n [\n \"group/input-group relative flex w-full items-center min-w-0 overflow-hidden\",\n \"[border-width:var(--semantic-size-border-1)] border-solid\",\n \"transition-[color,border-color,border-width,background-color,box-shadow] duration-200\",\n \"h-[var(--field-height)] rounded-[var(--field-radius)]\",\n \"focus-within:[border-width:var(--semantic-size-border-1-5)]\",\n // Disabled when the input control itself is disabled (not just a button at min/max boundary)\n \"has-[[data-slot=input-group-control]:disabled]:pointer-events-none has-[[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[[data-slot=input-group-control]:disabled]:opacity-50\",\n // Disabled when the group is explicitly marked disabled via data-disabled (e.g. labelled stepper with no input control)\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50\",\n \"has-[>[data-align=inline-start]]:[&_[data-slot=input-group-control]]:pl-[var(--semantic-size-spacing-8)]\",\n \"has-[>[data-align=inline-end]]:[&_[data-slot=input-group-control]]:pr-[var(--semantic-size-spacing-8)]\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&_[data-slot=input-group-control]]:pb-[var(--semantic-size-spacing-12)]\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&_[data-slot=input-group-control]]:pt-[var(--semantic-size-spacing-12)]\",\n \"has-[>textarea]:h-auto\",\n ].join(\" \"),\n {\n variants: {\n // Size sets the field height and font-size on the wrapper; children inherit font-size.\n // Mirrors the same pattern used in inputWrapperVariants (input.tsx).\n size: {\n md: \"[font-size:var(--field-font-size-md)]\",\n sm: \"h-[var(--field-sm-height)] [font-size:var(--semantic-size-width-height-14)]\",\n },\n variant: {\n outline: [\n \"bg-field-outline-bg-default border-field-outline-border-default\",\n \"hover:bg-field-outline-bg-hover\",\n \"focus-within:bg-field-outline-bg-focus focus-within:border-field-outline-border-focus\",\n \"has-[:disabled]:bg-field-outline-bg-disabled has-[:disabled]:border-field-outline-border-disabled\",\n ].join(\" \"),\n fill: [\n \"bg-field-fill-bg-default border-transparent\",\n \"hover:bg-field-fill-bg-hover\",\n \"focus-within:bg-field-fill-bg-focus focus-within:border-field-fill-border-focus\",\n \"has-[:disabled]:bg-field-fill-bg-disabled\",\n ].join(\" \"),\n },\n status: {\n default: \"\",\n success: \"border-field-outline-border-success\",\n error: \"border-field-outline-border-error\",\n },\n },\n compoundVariants: [\n {\n variant: \"outline\",\n status: \"success\",\n className: \"focus-within:border-field-outline-border-success\",\n },\n {\n variant: \"outline\",\n status: \"error\",\n className: \"focus-within:border-field-outline-border-error\",\n },\n {\n variant: \"fill\",\n status: \"success\",\n className: [\n \"bg-field-fill-bg-success-default hover:bg-field-fill-bg-success-hover\",\n \"focus-within:bg-field-fill-bg-success-focus focus-within:border-field-fill-border-success\",\n \"border-transparent\",\n ].join(\" \"),\n },\n {\n variant: \"fill\",\n status: \"error\",\n className: [\n \"bg-field-fill-bg-error-default hover:bg-field-fill-bg-error-hover\",\n \"focus-within:bg-field-fill-bg-error-focus focus-within:border-field-fill-border-error\",\n \"border-transparent\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n size: \"md\",\n variant: \"outline\",\n status: \"default\",\n },\n }\n)\n\nfunction InputGroup({\n className,\n size,\n variant,\n status,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupVariants>) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(inputGroupVariants({ size, variant, status }), className)}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n [\n \"flex h-full cursor-text items-center justify-center select-none\",\n \"gap-[var(--semantic-size-spacing-8)]\",\n \"text-field-text-subtle\",\n \"[&>svg:not([class*='size-'])]:size-4\",\n ].join(\" \"),\n {\n variants: {\n align: {\n \"inline-start\": \"order-first px-[var(--semantic-size-spacing-12)]\",\n \"inline-end\": [\n \"order-last px-[var(--semantic-size-spacing-12)]\",\n \"has-[>button]:pl-0 has-[>button]:pr-[var(--semantic-size-spacing-8)]\",\n ].join(\" \"),\n \"block-start\": \"order-first w-full justify-start px-[var(--semantic-size-spacing-16)] pt-[var(--semantic-size-spacing-8)]\",\n \"block-end\": \"order-last w-full justify-start px-[var(--semantic-size-spacing-16)] pb-[var(--semantic-size-spacing-8)]\",\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)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 min-w-0 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 min-w-0 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 = \"secondary\",\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-[var(--semantic-size-spacing-8)] text-field-text-subtle [&_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 h-full min-w-0 rounded-none border-0 bg-transparent outline-none shadow-none\",\n \"px-[var(--semantic-size-spacing-16)]\",\n \"[font-weight:var(--field-font-weight)]\",\n \"text-field-text-prominent placeholder:text-field-text-subtle\",\n \"disabled:text-field-text-disabled disabled:pointer-events-none disabled:cursor-not-allowed\",\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"focus-visible:ring-0\",\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-3 shadow-none focus-visible:ring-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n inputGroupVariants,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Wrapper: flex row, items-start so icons align to top of the field.\n// Border grows 1px → 1.5px on focus, matching input.tsx behaviour.\nconst textareaWrapperVariants = cva(\n [\n \"flex items-start w-full min-w-0 cursor-text\",\n \"gap-[var(--semantic-size-spacing-8)]\",\n \"[border-width:var(--semantic-size-border-1)] border-solid\",\n \"transition-[color,border-color,border-width,background-color,box-shadow] duration-200\",\n \"rounded-[var(--field-radius)]\",\n \"focus-within:[border-width:var(--semantic-size-border-1-5)]\",\n \"group has-[:disabled]:pointer-events-none has-[:disabled]:cursor-not-allowed\",\n \"pb-px\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n outline: [\n \"bg-field-outline-bg-default border-field-outline-border-default\",\n \"hover:bg-field-outline-bg-hover\",\n \"focus-within:bg-field-outline-bg-focus focus-within:border-field-outline-border-focus\",\n \"has-[:disabled]:bg-field-outline-bg-disabled has-[:disabled]:border-field-outline-border-disabled\",\n ].join(\" \"),\n fill: [\n \"bg-field-fill-bg-default border-transparent\",\n \"hover:bg-field-fill-bg-hover\",\n \"focus-within:bg-field-fill-bg-focus focus-within:border-field-fill-border-focus\",\n \"has-[:disabled]:bg-field-fill-bg-disabled\",\n ].join(\" \"),\n },\n status: {\n default: \"\",\n success: \"border-field-outline-border-success\",\n error: \"border-field-outline-border-error\",\n },\n },\n compoundVariants: [\n {\n variant: \"outline\",\n status: \"success\",\n className: \"focus-within:border-field-outline-border-success\",\n },\n {\n variant: \"outline\",\n status: \"error\",\n className: \"focus-within:border-field-outline-border-error\",\n },\n {\n variant: \"fill\",\n status: \"success\",\n className: [\n \"bg-field-fill-bg-success-default hover:bg-field-fill-bg-success-hover\",\n \"focus-within:bg-field-fill-bg-success-focus focus-within:border-field-fill-border-success\",\n \"border-transparent\",\n ].join(\" \"),\n },\n {\n variant: \"fill\",\n status: \"error\",\n className: [\n \"bg-field-fill-bg-error-default hover:bg-field-fill-bg-error-hover\",\n \"focus-within:bg-field-fill-bg-error-focus focus-within:border-field-fill-border-error\",\n \"border-transparent\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n variant: \"outline\",\n status: \"default\",\n },\n }\n)\n\ninterface TextareaProps\n extends Omit<React.ComponentProps<\"textarea\">, \"size\">\n , VariantProps<typeof textareaWrapperVariants> {\n label?: string\n helperText?: string\n iconLeft?: React.ReactNode\n iconRight?: React.ReactNode\n /**\n * When `true` (default), renders a floating label above the text area.\n * When `false`, renders the labelless variant where the label acts as a\n * placeholder that cross-fades with the typed text.\n */\n labeled?: boolean\n /**\n * Controls the minimum height for the **labelless** variant only.\n * - `\"md\"` (default) → 128 px\n * - `\"sm\"` → 104 px\n *\n * Ignored when `labeled={true}`, which always uses the 128 px height.\n */\n size?: \"sm\" | \"md\"\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea({\n className,\n variant,\n size = \"md\",\n status,\n label,\n helperText,\n iconLeft,\n iconRight,\n labeled = true,\n required,\n maxLength,\n value,\n defaultValue,\n disabled,\n readOnly,\n placeholder,\n id: idProp,\n autoFocus,\n onChange,\n onFocus,\n onBlur,\n ...props\n}, ref) {\n const generatedId = React.useId()\n const id = idProp ?? generatedId\n const descriptionId = `${id}-description`\n\n const internalRef = React.useRef<HTMLTextAreaElement>(null)\n React.useImperativeHandle(ref, () => internalRef.current!)\n\n const [charCount, setCharCount] = React.useState<number>(() => {\n if (typeof defaultValue === \"string\") return defaultValue.length\n return 0\n })\n const [isFocused, setIsFocused] = React.useState(false)\n\n React.useEffect(() => {\n if (autoFocus && internalRef.current === document.activeElement) {\n setIsFocused(true)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const controlledLength = value !== undefined ? String(value).length : null\n const currentLength = controlledLength ?? charCount\n\n const isFloating = isFocused || currentLength > 0\n const hasDescription = helperText !== undefined || maxLength !== undefined\n\n // Accept `placeholder` as a label fallback for back-compat; the label is\n // the visual placeholder in both the labelled and labelless variants.\n const effectiveLabel = label ?? placeholder ?? \"Label\"\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) setCharCount(e.target.value.length)\n onChange?.(e)\n }\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setIsFocused(true)\n onFocus?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setIsFocused(false)\n onBlur?.(e)\n }\n\n const labelColorClass = disabled\n ? \"text-field-text-disabled\"\n : status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n const isSmLabelless = !labeled && size === \"sm\"\n\n // Sizing: labelled always uses the same padding/height as \"md\".\n // min-h values (128 px / 104 px) are component-specific layout constraints\n // — no token exists for textarea heights.\n const wrapperSizeClasses = isSmLabelless\n ? \"min-h-[104px] pt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-8)] text-sm\"\n : \"min-h-[128px] pt-[var(--semantic-size-spacing-6)] px-[var(--semantic-size-spacing-16)] text-base\"\n\n // Icon spans: no extra vertical offset — items-start on the wrapper already\n // aligns them to the top of the content area alongside the label/text.\n const iconSpanClass =\n \"shrink-0 flex items-start justify-center text-field-text-subtle group-has-[:disabled]:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\"\n\n // Base classes shared by every <textarea> element in both variants.\n // field-sizing-content lets the element auto-grow with typed content,\n // consistent with the old Textarea implementation and input.tsx behaviour.\n const textareaBaseClass = cn(\n \"w-full resize-none field-sizing-content bg-transparent border-0 outline-none ring-0\",\n \"leading-[1.5] [font-weight:var(--field-font-weight)]\",\n \"text-field-text-prominent\",\n \"disabled:text-field-text-disabled\",\n \"placeholder:text-field-text-subtle\",\n )\n\n // Description row px mirrors the wrapper's horizontal padding per size.\n const descriptionPaddingClass = isSmLabelless\n ? \"px-[var(--semantic-size-spacing-8)]\"\n : \"px-[var(--semantic-size-spacing-16)]\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div\n data-slot=\"textarea\"\n data-variant={variant ?? \"outline\"}\n data-status={status ?? \"default\"}\n className={cn(\n textareaWrapperVariants({ variant, status }),\n wrapperSizeClasses,\n readOnly && \"cursor-default\",\n )}\n onClick={(e) => {\n if (e.target !== internalRef.current) internalRef.current?.focus()\n }}\n >\n {iconLeft && (\n <span className={iconSpanClass}>\n {iconLeft}\n </span>\n )}\n\n {labeled ? (\n /* ── Labelled layout ─────────────────────────────────────────────\n Label is always rendered at the top of the column. Its font-size\n transitions from 16 px (body) when empty/unfocused → 12 px\n (caption) when floating. The textarea uses field-sizing-content\n so it auto-grows, and the wrapper's min-h ensures a visual floor. */\n <div className=\"flex-1 flex flex-col min-w-0\">\n <div className=\"flex items-start gap-[var(--semantic-size-spacing-4)] shrink-0\">\n <label\n htmlFor={id}\n className={cn(\n \"pointer-events-none select-none leading-[1.5]\",\n \"transition-all duration-200 ease-out\",\n labelColorClass,\n isFloating\n ? \"[font-size:var(--field-font-size-sm)]\"\n : \"text-base\",\n )}\n >\n {effectiveLabel}\n </label>\n {required && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"text-field-text-error leading-[1.5] transition-all duration-200\",\n isFloating ? \"[font-size:var(--field-font-size-sm)]\" : \"text-base\",\n )}\n >\n *\n </span>\n )}\n </div>\n\n <div\n className={cn(\n \"transition-opacity duration-200\",\n isFloating ? \"opacity-100\" : \"opacity-0 pointer-events-none\",\n )}\n >\n <textarea\n ref={internalRef}\n id={id}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n textareaBaseClass,\n \"pb-[var(--semantic-size-spacing-16)]\",\n )}\n {...props}\n />\n </div>\n </div>\n ) : (\n /* ── Labelless layout ───────────────────────────────────────────\n Label and textarea share the same grid cell via [grid-area:1/1].\n They cross-fade on focus / value change, matching the labelless\n behaviour in input.tsx. field-sizing-content auto-grows the\n textarea; the wrapper's min-h sets the visual floor. */\n <div className=\"flex-1 min-w-0 grid items-start\">\n <label\n htmlFor={id}\n className={cn(\n \"[grid-area:1/1] flex items-start gap-[var(--semantic-size-spacing-4)]\",\n \"pointer-events-none select-none leading-[1.5]\",\n \"transition-opacity duration-200 ease-out\",\n labelColorClass,\n isFloating ? \"opacity-0\" : \"opacity-100\",\n )}\n >\n <span>{effectiveLabel}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </label>\n\n <textarea\n ref={internalRef}\n id={id}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n textareaBaseClass,\n \"[grid-area:1/1] pb-[var(--semantic-size-spacing-16)]\",\n \"transition-opacity duration-200 ease-out\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n {...props}\n />\n </div>\n )}\n\n {iconRight && (\n <span className={iconSpanClass}>\n {iconRight}\n </span>\n )}\n </div>\n\n {hasDescription && (\n <div\n id={descriptionId}\n className={cn(\n \"flex w-full items-center justify-between\",\n \"mt-[var(--semantic-size-spacing-4)]\",\n descriptionPaddingClass,\n \"[font-size:var(--field-font-size-sm)]\",\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\",\n )}\n >\n <span>{helperText ?? \"\"}</span>\n {maxLength !== undefined && (\n <span>{currentLength}/{maxLength}</span>\n )}\n </div>\n )}\n </div>\n )\n})\n\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea, textareaWrapperVariants as textareaVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-sm bg-primary-surface text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-subtle [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-subtle disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"overflow-hidden p-1 text-prominent [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-primary/10 data-[selected=true]:text-prominent [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Card } from \"./card\"\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 z-[70] bg-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n type = \"text\",\n icon,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n type?: \"text\" | \"icon-and-text\"\n icon?: React.ReactNode\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-[50%] left-[50%] z-[70] w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] duration-base outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-[512px]\",\n className\n )}\n {...props}\n >\n <Card className=\"relative gap-0 rounded-4xl border-0 p-0 shadow-lg overflow-hidden\">\n {type === \"icon-and-text\" && (\n <div\n data-slot=\"dialog-icon-zone\"\n className=\"flex w-full shrink-0 items-center justify-center bg-primary-surface py-6\"\n >\n {icon}\n </div>\n )}\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n data-slot=\"dialog-close\"\n className=\"absolute top-4 right-4\"\n aria-label=\"Close\"\n >\n <XIcon />\n </Button>\n </DialogPrimitive.Close>\n )}\n </Card>\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-8 px-8 pt-8 pb-6\", 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 \"flex flex-col gap-2 px-8 pt-6 pb-8 [&_[data-slot=button]]:!w-full [&_[data-slot=dialog-close]]:!w-full\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"secondary\" size=\"lg\">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(\"text-2xl font-extrabold leading-8 font-display text-prominent\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-base leading-6 text-dialog-description\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { ContextMenu as ContextMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-secondary-hover data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-subtle\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"z-[65] min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border border-default bg-primary-surface p-1 text-prominent shadow-lg 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"z-[65] max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-default bg-primary-surface p-1 text-prominent shadow-md 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-subtle data-[variant=destructive]:*:[svg]:text-destructive!\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-secondary-hover 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\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-secondary-hover 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\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium text-prominent data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Direction } from \"radix-ui\"\n\nfunction DirectionProvider({\n dir,\n direction,\n children,\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\n direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\"dir\"]\n}) {\n return (\n <Direction.DirectionProvider dir={direction ?? dir}>\n {children}\n </Direction.DirectionProvider>\n )\n}\n\nconst useDirection = Direction.useDirection\n\nexport { DirectionProvider, useDirection }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n \"fixed inset-0 z-[70] bg-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"group/drawer-content fixed z-[70] flex h-auto flex-col bg-primary-surface\",\n \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=top]:border-default\",\n \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-[24px] data-[vaul-drawer-direction=bottom]:pb-6\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:border-default data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:border-default data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className\n )}\n {...props}\n >\n <div\n className=\"hidden w-full items-center justify-center group-data-[vaul-drawer-direction=bottom]/drawer-content:flex h-8 shrink-0\"\n >\n <div\n className=\"h-[4px] w-[40px] rounded-full\"\n style={{ backgroundColor: \"var(--bottom-sheet-bg-handle-bar)\" }}\n />\n </div>\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4 [&>*]:w-full\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\n \"font-semibold font-display text-prominent\",\n \"group-data-[vaul-drawer-direction=bottom]/drawer-content:text-xl group-data-[vaul-drawer-direction=bottom]/drawer-content:leading-[1.4] group-data-[vaul-drawer-direction=bottom]/drawer-content:font-extrabold\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-sm text-subtle\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\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 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 className={cn(\n \"z-[65] max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--field-radius)] border border-dropdown-field-outline-border-default bg-dropdown-field-outline-bg-default p-1 text-dropdown-field-text-prominent shadow-md 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\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 \"relative flex cursor-default items-center gap-2 rounded-[var(--field-radius)] px-[var(--semantic-size-spacing-8)] py-1.5 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none hover:bg-dropdown-field-fill-bg-neutral-hover focus:bg-dropdown-field-fill-bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:text-dropdown-field-text-disabled data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-dropdown-field-text-error data-[variant=destructive]:focus:bg-dropdown-field-fill-bg-error-hover [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-dropdown-field-text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-[var(--field-radius)] py-1.5 pr-2 pl-8 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none hover:bg-dropdown-field-fill-bg-neutral-hover focus:bg-dropdown-field-fill-bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:text-dropdown-field-text-disabled 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 className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\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 ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-[var(--field-radius)] py-1.5 pr-2 pl-8 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none hover:bg-dropdown-field-fill-bg-neutral-hover focus:bg-dropdown-field-fill-bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:text-dropdown-field-text-disabled 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 className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\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-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\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-subtle\",\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-2 rounded-[var(--field-radius)] px-[var(--semantic-size-spacing-8)] py-1.5 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none focus:bg-dropdown-field-fill-bg-neutral-hover data-[inset]:pl-8 data-[state=open]:bg-dropdown-field-fill-bg-neutral-hover [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-dropdown-field-text-subtle\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\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(\n \"z-[65] min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-[var(--field-radius)] border border-dropdown-field-outline-border-default bg-dropdown-field-outline-bg-default p-1 text-dropdown-field-text-prominent shadow-lg 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\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 min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-sm border-dashed p-6 text-center text-balance md:p-12\",\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(\n \"flex max-w-sm flex-col items-center gap-1 text-center\",\n className\n )}\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-10 shrink-0 items-center justify-center rounded-lg bg-secondary-surface text-prominent [&_svg:not([class*='size-'])]:size-6\",\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(\"text-base leading-6 font-bold text-prominent\", className)}\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 leading-5 text-section-message-description [&>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-4 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","\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Label } from \"./label\"\nimport { Separator } from \"./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-6\",\n \"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-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\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-7 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-3 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\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n responsive: [\n \"flex-col @md/field-group:flex-row @md/field-group:items-center [&>*]:w-full @md/field-group:[&>*]:w-auto [&>.sr-only]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\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-1.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\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\",\n \"has-data-[state=checked]:border-primary has-data-[state=checked]:bg-primary/5\",\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 leading-snug 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-sm leading-normal font-normal text-subtle group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\",\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-primary-surface px-2 text-subtle\"\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","\"use client\"\n\nimport * 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","\"use client\"\n\nimport * as React from \"react\"\nimport type { Label as LabelPrimitive } from \"radix-ui\"\nimport { Slot } from \"radix-ui\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Label } from \"./label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot.Root>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot.Root\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-sm text-subtle\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-sm text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-[65] w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border border-default bg-primary-surface p-4 text-prominent shadow-md outline-hidden 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Wrapper: flex row with icons + content. Border grows 1px → 1.5px on focus.\nconst inputWrapperVariants = cva(\n [\n \"flex items-center w-full min-w-0 cursor-text\",\n \"gap-[var(--semantic-size-spacing-8)] px-[var(--semantic-size-spacing-16)]\",\n \"[border-width:var(--semantic-size-border-1)] border-solid\",\n \"transition-[color,border-color,border-width,background-color,box-shadow] duration-200\",\n \"rounded-[var(--field-radius)]\",\n \"focus-within:[border-width:var(--semantic-size-border-1-5)]\",\n \"group has-[:disabled]:pointer-events-none has-[:disabled]:cursor-not-allowed\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n outline: [\n \"bg-field-outline-bg-default border-field-outline-border-default\",\n \"hover:border-field-outline-border-focus\",\n \"focus-within:bg-field-outline-bg-focus focus-within:border-field-outline-border-focus\",\n \"has-[:disabled]:bg-field-outline-bg-disabled has-[:disabled]:border-field-outline-border-disabled\",\n ].join(\" \"),\n fill: [\n \"bg-field-fill-bg-default border-transparent\",\n \"hover:bg-field-fill-bg-hover\",\n \"focus-within:bg-field-fill-bg-focus focus-within:border-field-fill-border-focus\",\n \"has-[:disabled]:bg-field-fill-bg-disabled\",\n ].join(\" \"),\n },\n size: {\n sm: \"h-[var(--field-sm-height)] text-sm\",\n md: \"h-[var(--field-md-height)] text-base\",\n lg: \"h-[var(--field-lg-height)] text-base\",\n },\n status: {\n default: \"\",\n success: \"border-field-outline-border-success\",\n error: \"border-field-outline-border-error\",\n },\n },\n compoundVariants: [\n {\n variant: \"outline\",\n status: \"success\",\n className: \"hover:border-field-outline-border-success focus-within:border-field-outline-border-success\",\n },\n {\n variant: \"outline\",\n status: \"error\",\n className: \"hover:border-field-outline-border-error focus-within:border-field-outline-border-error\",\n },\n {\n variant: \"fill\",\n status: \"success\",\n className: [\n \"bg-field-fill-bg-success-default hover:bg-field-fill-bg-success-hover\",\n \"focus-within:bg-field-fill-bg-success-focus focus-within:border-field-fill-border-success\",\n \"border-transparent\",\n ].join(\" \"),\n },\n {\n variant: \"fill\",\n status: \"error\",\n className: [\n \"bg-field-fill-bg-error-default hover:bg-field-fill-bg-error-hover\",\n \"focus-within:bg-field-fill-bg-error-focus focus-within:border-field-fill-border-error\",\n \"border-transparent\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n variant: \"outline\",\n size: \"lg\",\n status: \"default\",\n },\n }\n)\n\ninterface InputProps\n extends Omit<React.ComponentProps<\"input\">, \"size\">\n , VariantProps<typeof inputWrapperVariants> {\n label?: string\n helperText?: string\n iconLeft?: React.ReactNode\n iconRight?: React.ReactNode\n /** When false, renders the labelless variant: label and input cross-fade at the same size. */\n labeled?: boolean\n /** Horizontal text alignment for both label and input. Default is \"left\". */\n align?: \"left\" | \"center\"\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(function Input({\n className,\n type,\n variant,\n size,\n status,\n label = \"Label\",\n helperText,\n iconLeft,\n iconRight,\n labeled = true,\n align = \"left\",\n required,\n maxLength,\n value,\n defaultValue,\n disabled,\n readOnly,\n id: idProp,\n autoFocus,\n onChange,\n onFocus,\n onBlur,\n ...props\n}, ref) {\n const generatedId = React.useId()\n const id = idProp ?? generatedId\n const descriptionId = `${id}-description`\n\n const internalRef = React.useRef<HTMLInputElement>(null)\n React.useImperativeHandle(ref, () => internalRef.current!)\n\n const [charCount, setCharCount] = React.useState<number>(() => {\n if (typeof defaultValue === \"string\") return defaultValue.length\n if (typeof defaultValue === \"number\") return String(defaultValue).length\n return 0\n })\n const [isFocused, setIsFocused] = React.useState(false)\n\n React.useEffect(() => {\n if (autoFocus && internalRef.current === document.activeElement) {\n setIsFocused(true)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const controlledLength = value !== undefined ? String(value).length : null\n const currentLength = controlledLength ?? charCount\n\n const isFloating = isFocused || currentLength > 0\n const hasDescription = helperText !== undefined || maxLength !== undefined\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) setCharCount(e.target.value.length)\n onChange?.(e)\n }\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true)\n onFocus?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false)\n onBlur?.(e)\n }\n\n const labelColorClass = disabled\n ? \"text-field-text-disabled\"\n : status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div\n data-slot=\"input\"\n data-variant={variant ?? \"outline\"}\n data-status={status ?? \"default\"}\n className={cn(\n inputWrapperVariants({ variant, size, status }),\n readOnly && \"cursor-default\",\n )}\n onClick={(e) => {\n if (e.target !== internalRef.current) internalRef.current?.focus()\n }}\n >\n {iconLeft && (\n <span className=\"shrink-0 flex items-center justify-center text-field-text-subtle group-has-[:disabled]:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\">\n {iconLeft}\n </span>\n )}\n\n {labeled ? (\n /* ── Labelled layout: label floats to top, input fades in below ── */\n <div className=\"relative flex-1 min-w-0 h-full\">\n <label\n htmlFor={id}\n className={cn(\n \"absolute pointer-events-none select-none leading-[1.5]\",\n \"left-0 flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-all duration-200 ease-out\",\n labelColorClass,\n isFloating\n ? \"top-[var(--semantic-size-spacing-8)] [font-size:var(--field-font-size-sm)]\"\n : \"top-1/2 -translate-y-1/2\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </label>\n\n <input\n ref={internalRef}\n id={id}\n type={type}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n \"absolute left-0 right-0 bottom-[var(--semantic-size-spacing-6)] p-0\",\n \"[padding:0_var(--semantic-size-spacing-16)]\",\n \"bg-transparent border-0 outline-none ring-0 leading-[1.5]\",\n \"[font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out\",\n \"placeholder:text-field-text-subtle\",\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"text-field-text-prominent\",\n \"disabled:text-field-text-disabled\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n {...props}\n />\n </div>\n ) : (\n /* ── Labelless layout: label and input cross-fade at the same size/position ── */\n <div className=\"relative flex-1 min-w-0 h-full\">\n {/* Label — shown when field is empty and unfocused */}\n <label\n htmlFor={id}\n className={cn(\n \"absolute inset-0 pointer-events-none select-none leading-[1.5]\",\n \"flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-opacity duration-200 ease-out\",\n labelColorClass,\n align === \"center\" ? \"justify-center\" : \"justify-start\",\n isFloating ? \"opacity-0\" : \"opacity-100\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </label>\n\n {/* Input — shown when focused or has a value */}\n <input\n ref={internalRef}\n id={id}\n type={type}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n \"absolute inset-0 p-0 w-full\",\n \"bg-transparent border-0 outline-none ring-0 leading-[1.5]\",\n \"[font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out\",\n \"placeholder:text-field-text-subtle\",\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"text-field-text-prominent\",\n \"disabled:text-field-text-disabled\",\n align === \"center\" ? \"text-center\" : \"text-left\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n {...props}\n />\n </div>\n )}\n\n {iconRight && (\n <span className=\"shrink-0 flex items-center justify-center text-field-text-subtle group-has-[:disabled]:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\">\n {iconRight}\n </span>\n )}\n </div>\n\n {hasDescription && (\n <div\n id={descriptionId}\n className={cn(\n \"flex w-full items-center justify-between\",\n \"mt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-4)]\",\n \"[font-size:var(--field-font-size-sm)]\",\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\",\n )}\n >\n <span>{helperText ?? \"\"}</span>\n {maxLength !== undefined && (\n <span>{currentLength}/{maxLength}</span>\n )}\n </div>\n )}\n </div>\n )\n})\n\nInput.displayName = \"Input\"\n\nexport { Input, inputWrapperVariants as inputVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Search, X } from \"lucide-react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst searchFieldVariants = cva(\n [\n \"flex items-center\",\n \"rounded-[var(--search-field-radius)]\",\n \"[font-weight:var(--search-field-font-weight)]\",\n \"border\",\n \"transition-colors\",\n ],\n {\n variants: {\n variant: {\n outline: [\n \"bg-search-field-outline-bg-default\",\n \"border-search-field-outline-border-default\",\n \"hover:bg-search-field-outline-bg-hover\",\n \"focus-within:bg-search-field-outline-bg-focus\",\n \"focus-within:[border-width:1.5px]\",\n \"focus-within:border-search-field-outline-border-focus\",\n \"has-[:disabled]:pointer-events-none\",\n \"has-[:disabled]:bg-search-field-outline-bg-disabled\",\n \"has-[:disabled]:border-search-field-outline-border-disabled\",\n ],\n fill: [\n \"bg-search-field-fill-bg-default\",\n \"border-transparent\",\n \"hover:bg-search-field-fill-bg-hover\",\n \"focus-within:bg-search-field-fill-bg-focus\",\n \"focus-within:[border-width:1.5px]\",\n \"focus-within:border-search-field-fill-border-focus\",\n \"has-[:disabled]:pointer-events-none\",\n \"has-[:disabled]:bg-search-field-fill-bg-disabled\",\n ],\n },\n size: {\n sm: [\n \"h-[var(--search-field-sm-height)]\",\n \"px-[var(--search-field-sm-padding-horizontal)]\",\n \"gap-[var(--search-field-sm-gap)]\",\n \"[font-size:var(--search-field-sm-font-size)]\",\n \"[--sf-icon:var(--search-field-sm-icon-size)]\",\n ],\n md: [\n \"h-[var(--search-field-md-height)]\",\n \"px-[var(--search-field-md-padding-horizontal)]\",\n \"gap-[var(--search-field-md-gap)]\",\n \"[font-size:var(--search-field-md-font-size)]\",\n \"[--sf-icon:var(--search-field-md-icon-size)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"outline\",\n size: \"md\",\n },\n }\n)\n\ntype SearchFieldProps = Omit<React.ComponentProps<\"div\">, \"children\"> &\n VariantProps<typeof searchFieldVariants> & {\n placeholder?: string\n disabled?: boolean\n value?: string\n defaultValue?: string\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n }\n\nfunction SearchField({\n variant,\n size,\n className,\n placeholder = \"Search\",\n disabled,\n value,\n defaultValue,\n onChange,\n ...props\n}: SearchFieldProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\")\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n if (!isControlled) setInternalValue(e.target.value)\n onChange?.(e)\n }\n\n function handleClear() {\n if (!isControlled) setInternalValue(\"\")\n onChange?.({ target: { value: \"\" } } as React.ChangeEvent<HTMLInputElement>)\n }\n\n return (\n <div\n data-slot=\"search-field\"\n className={cn(searchFieldVariants({ variant, size }), className)}\n {...props}\n >\n <Search\n data-slot=\"search-field-icon\"\n aria-hidden\n className=\"shrink-0 w-[var(--sf-icon)] h-[var(--sf-icon)] text-search-field-icon-subtle\"\n />\n <input\n type=\"text\"\n data-slot=\"search-field-input\"\n disabled={disabled}\n placeholder={placeholder}\n value={currentValue}\n onChange={handleChange}\n className=\"flex-1 min-w-0 bg-transparent outline-none text-search-field-text-prominent placeholder:text-search-field-text-subtle disabled:text-search-field-text-disabled\"\n />\n {currentValue && !disabled && (\n <button\n type=\"button\"\n aria-label=\"Clear search\"\n onClick={handleClear}\n className=\"shrink-0 text-search-field-icon-subtle hover:text-search-field-text-prominent transition-colors\"\n >\n <X className=\"w-[var(--sf-icon)] h-[var(--sf-icon)]\" />\n </button>\n )}\n </div>\n )\n}\n\nexport { SearchField, searchFieldVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nconst inputOTPSlotVariants = cva(\n \"relative flex items-center justify-center border bg-code-input-fill-bg-default text-code-input-text-prominent [font-size:var(--code-input-font-size)] [font-weight:var(--code-input-font-weight)] font-body rounded-[var(--code-input-radius)] transition-[color,box-shadow] outline-none first:rounded-l-[var(--code-input-radius)] last:rounded-r-[var(--code-input-radius)] border-transparent hover:bg-code-input-fill-bg-hover data-[active=true]:bg-code-input-fill-bg-focus data-[active=true]:border-code-input-fill-border-focus data-[active=true]:z-10 disabled:bg-code-input-fill-bg-disabled disabled:text-code-input-text-disabled\",\n {\n variants: {\n size: {\n sm: \"h-[var(--code-input-sm-height)] w-[var(--code-input-sm-width)]\",\n md: \"h-[var(--code-input-md-height)] w-[var(--code-input-md-width)]\",\n },\n status: {\n default: \"\",\n success:\n \"bg-code-input-fill-bg-success border-code-input-fill-border-success text-code-input-text-success data-[active=true]:bg-code-input-fill-bg-success data-[active=true]:border-code-input-fill-border-success\",\n error:\n \"bg-code-input-fill-bg-error border-code-input-fill-border-error text-code-input-text-error data-[active=true]:bg-code-input-fill-bg-error data-[active=true]:border-code-input-fill-border-error\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n }\n)\n\nfunction InputOTPSlot({\n index,\n className,\n size,\n status,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n} & VariantProps<typeof inputOTPSlotVariants>) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(inputOTPSlotVariants({ size, status }), className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-code-input-text-prominent duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator, inputOTPSlotVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction CodeInput({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"code-input\"\n containerClassName={cn(\n // has-disabled:opacity-50 — invented: no container opacity token in component-code-input\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction CodeInputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"code-input-group\"\n className={cn(\"flex items-center gap-[var(--code-input-gap)]\", className)}\n {...props}\n />\n )\n}\n\nconst codeInputSlotVariants = cva(\n // first/last rounded corners — invented: shadcn group-rounding pattern, no grouped-cell token\n // ring-primary/[0.08] — invented: pending standardisation per design-tokens.mdc\n // animate-caret-blink — invented: no animation token in component-code-input\n \"relative flex items-center justify-center border bg-code-input-fill-bg-default text-code-input-text-prominent [font-size:var(--code-input-font-size)] [font-weight:var(--code-input-font-weight)] font-body rounded-[var(--code-input-radius)] transition-[color,box-shadow] outline-none first:rounded-l-[var(--code-input-radius)] last:rounded-r-[var(--code-input-radius)] border-transparent hover:bg-code-input-fill-bg-hover data-[active=true]:bg-code-input-fill-bg-focus data-[active=true]:border-code-input-fill-border-focus data-[active=true]:[border-width:var(--code-input-border-width-focus)] data-[active=true]:ring-[3px] data-[active=true]:ring-primary/[0.08] data-[active=true]:z-10 disabled:bg-code-input-fill-bg-disabled disabled:text-code-input-text-disabled\",\n {\n variants: {\n size: {\n sm: \"h-[var(--code-input-sm-height)] w-[var(--code-input-sm-width)]\",\n md: \"h-[var(--code-input-md-height)] w-[var(--code-input-md-width)]\",\n },\n status: {\n default: \"\",\n success:\n \"bg-code-input-fill-bg-success border-code-input-fill-border-success text-code-input-text-success data-[active=true]:bg-code-input-fill-bg-success data-[active=true]:border-code-input-fill-border-success\",\n error:\n \"bg-code-input-fill-bg-error border-code-input-fill-border-error text-code-input-text-error data-[active=true]:bg-code-input-fill-bg-error data-[active=true]:border-code-input-fill-border-error\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n }\n)\n\nfunction CodeInputSlot({\n index,\n className,\n size,\n status,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n} & VariantProps<typeof codeInputSlotVariants>) {\n const codeInputContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = codeInputContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"code-input-slot\"\n data-active={isActive}\n className={cn(codeInputSlotVariants({ size, status }), className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-code-input-text-prominent duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\n// Legacy: CodeInputSeparator — no separator concept in component-code-input tokens\nfunction CodeInputSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"code-input-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n )\n}\n\nexport { CodeInput, CodeInputGroup, CodeInputSlot, CodeInputSeparator, codeInputSlotVariants }\n","import { cn } from \"../../lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-secondary-surface px-1 font-sans text-xs font-medium text-subtle select-none\",\n \"[&_svg:not([class*='size-'])]:size-3\",\n \"[[data-slot=tooltip-content]_&]:bg-border [[data-slot=tooltip-content]_&]:text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n )\n}\n\nexport { Kbd, KbdGroup }\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 linkVariants = cva(\n // ⚑ hover:underline, focus-visible:ring, active:opacity-60, gap-1.5, shrink-0, whitespace-nowrap, svg sizing — not in tokens.json (shadcn/UX additions, preserved)\n \"inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 active:opacity-60 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:inline font-sans normal-case underline decoration-2 underline-offset-4\",\n {\n variants: {\n variant: {\n primary:\n \"text-link-primary-default aria-disabled:text-link-primary-disabled aria-disabled:pointer-events-none\",\n \"secondary-normal\":\n \"text-link-secondary-normal-default dark:text-link-secondary-inverse-default aria-disabled:text-link-secondary-normal-disabled dark:aria-disabled:text-link-secondary-inverse-disabled aria-disabled:pointer-events-none\",\n \"secondary-inverse\":\n \"text-link-secondary-inverse-default aria-disabled:text-link-secondary-inverse-disabled aria-disabled:pointer-events-none\",\n \"secondary-static-light\":\n \"text-link-secondary-static-light-default aria-disabled:text-link-secondary-static-light-disabled aria-disabled:pointer-events-none\",\n \"secondary-static-dark\":\n \"text-link-secondary-static-dark-default aria-disabled:text-link-secondary-static-dark-disabled aria-disabled:pointer-events-none\",\n },\n size: {\n lg: \"[font-size:var(--link-lg-font-size)] [font-weight:var(--link-lg-font-weight)] [&_svg:not([class*='size-'])]:size-4\",\n md: \"[font-size:var(--link-md-font-size)] [font-weight:var(--link-md-font-weight)] [&_svg:not([class*='size-'])]:size-4\",\n sm: \"[font-size:var(--link-sm-font-size)] [font-weight:var(--link-sm-font-weight)] [&_svg:not([class*='size-'])]:size-3.5\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"lg\",\n },\n }\n)\n\nfunction Link({\n className,\n variant = \"primary\",\n size = \"lg\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"a\"> &\n VariantProps<typeof linkVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"a\"\n\n return (\n <Comp\n data-slot=\"link\"\n data-size={size}\n data-variant={variant}\n className={cn(linkVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Link, linkVariants }\n","import * as React from \"react\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction NativeSelect({\n className,\n size = \"default\",\n ...props\n}: Omit<React.ComponentProps<\"select\">, \"size\"> & { size?: \"sm\" | \"default\" }) {\n return (\n <div\n className=\"group/native-select relative w-fit has-[select:disabled]:opacity-50\"\n data-slot=\"native-select-wrapper\"\n >\n <select\n data-slot=\"native-select\"\n data-size={size}\n className={cn(\n \"h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-prominent-static-inverse placeholder:text-subtle disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1\",\n \"focus-visible:border-field-outline-border-focus\",\n className\n )}\n {...props}\n />\n <ChevronDownIcon\n className=\"pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-subtle opacity-50 select-none\"\n aria-hidden=\"true\"\n data-slot=\"native-select-icon\"\n />\n </div>\n )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n className,\n ...props\n}: React.ComponentProps<\"optgroup\">) {\n return (\n <optgroup\n data-slot=\"native-select-optgroup\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button, type Button as ButtonType } from \"./button\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\"\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 flex-row items-center gap-[var(--pagination-gap)]\", 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 ButtonType>, \"size\"> &\n React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\n size: _size = \"icon-md\",\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center h-[var(--pagination-number-height)] w-[var(--pagination-number-width)] rounded-[var(--pagination-radius)] [font-size:var(--pagination-font-size)] font-display uppercase tracking-wide whitespace-nowrap transition-[color,background-color,border-color] outline-none border\",\n isActive\n ? \"bg-[var(--pagination-bg-number-selected)] border-[var(--pagination-border-number-selected)] [border-width:var(--pagination-border-width-selected)] [font-weight:var(--pagination-font-selected-weight)] text-[var(--pagination-text-default)]\"\n : \"bg-[var(--pagination-bg-number-default)] border-transparent [font-weight:var(--pagination-font-default-weight)] text-[var(--pagination-text-default)] hover:bg-[var(--pagination-bg-number-hover)] active:bg-[var(--pagination-bg-number-pressed)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<\"a\">) {\n return (\n <Button asChild variant=\"ghost\" size=\"icon-md\" className={cn(className)}>\n <a aria-label=\"Go to previous page\" data-slot=\"pagination-link\" {...props}>\n <ChevronLeftIcon className=\"size-5\" />\n </a>\n </Button>\n )\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<\"a\">) {\n return (\n <Button asChild variant=\"ghost\" size=\"icon-md\" className={cn(className)}>\n <a aria-label=\"Go to next page\" data-slot=\"pagination-link\" {...props}>\n <ChevronRightIcon className=\"size-5\" />\n </a>\n </Button>\n )\n}\n\n// ── PaginationEllipsis ────────────────────────────────────────────────────────\n// Without `pages`: renders a static decorative \"…\" (backward-compatible).\n// With `pages`: renders an interactive button that opens a compact dropdown\n// listing the hidden page numbers.\n\ntype PaginationEllipsisProps = {\n /** Hidden page numbers this ellipsis represents. Makes the ellipsis interactive. */\n pages?: number[]\n /** Called with the selected page number when the user picks one from the dropdown. */\n onPageSelect?: (page: number) => void\n} & Omit<React.ComponentProps<\"span\">, \"onClick\">\n\nfunction PaginationEllipsis({\n className,\n pages,\n onPageSelect,\n ...props\n}: PaginationEllipsisProps) {\n const [open, setOpen] = React.useState(false)\n\n const sharedClass = cn(\n \"flex h-[var(--pagination-number-height)] w-[var(--pagination-number-width)] items-center justify-center rounded-[var(--pagination-radius)]\",\n className\n )\n\n if (!pages?.length) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={sharedClass}\n {...props}\n >\n <span aria-hidden>...</span>\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n aria-label=\"Show more pages\"\n aria-expanded={open}\n data-slot=\"pagination-ellipsis\"\n className={cn(\n sharedClass,\n \"cursor-pointer border border-transparent transition-colors duration-instant outline-none\",\n \"bg-[var(--pagination-bg-number-default)]\",\n \"hover:bg-[var(--pagination-bg-number-hover)]\",\n \"active:bg-[var(--pagination-bg-number-pressed)]\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n )}\n >\n <span aria-hidden>...</span>\n </button>\n </PopoverTrigger>\n\n <PopoverContent\n align=\"center\"\n sideOffset={4}\n className={cn(\n \"z-[65] w-12 p-1\",\n \"bg-card border border-default/50 rounded-md\",\n \"shadow-[var(--menu-shadow)]\",\n \"max-h-[440px] overflow-y-auto overflow-x-hidden\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"origin-(--radix-popover-content-transform-origin)\"\n )}\n >\n {pages.map((page) => (\n <button\n key={page}\n type=\"button\"\n onClick={() => {\n onPageSelect?.(page)\n setOpen(false)\n }}\n className={cn(\n \"flex h-8 w-full items-center justify-center rounded-md\",\n \"[font-size:var(--pagination-font-size)] font-display [font-weight:var(--pagination-font-default-weight)] tracking-wide text-list-item-text-prominent\",\n \"transition-colors duration-instant cursor-pointer outline-none\",\n \"bg-transparent\",\n \"hover:bg-list-item-secondary-bg-hover\",\n \"active:bg-list-item-secondary-bg-pressed\",\n \"focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n )}\n >\n {page}\n </button>\n ))}\n </PopoverContent>\n </Popover>\n )\n}\n\n// ── PaginationBullets ─────────────────────────────────────────────────────────\n// Dot-style pagination. All tokens reuse the existing --pagination-* set.\n\ntype PaginationBulletsProps = {\n /** Total number of pages (= number of dots). */\n count: number\n /** Currently active page (1-based). */\n page: number\n /** Called with the new page number when a dot or nav button is clicked. */\n onPageChange?: (page: number) => void\n /** Show prev/next chevron buttons. Default: true. */\n showNavigation?: boolean\n className?: string\n}\n\nfunction PaginationBullets({\n count,\n page,\n onPageChange,\n showNavigation = true,\n className,\n}: PaginationBulletsProps) {\n return (\n <div\n data-slot=\"pagination-bullets\"\n className={cn(\"flex items-center justify-center gap-[var(--pagination-gap)]\", className)}\n >\n {showNavigation && (\n <PaginationPrevious\n href=\"#\"\n onClick={(e) => { e.preventDefault(); onPageChange?.(page - 1) }}\n aria-disabled={page <= 1}\n className={page <= 1 ? \"pointer-events-none opacity-40\" : \"\"}\n />\n )}\n\n {Array.from({ length: count }, (_, i) => {\n const dotPage = i + 1\n const isActive = dotPage === page\n return (\n <button\n key={dotPage}\n type=\"button\"\n aria-label={`Go to page ${dotPage}`}\n aria-current={isActive ? \"page\" : undefined}\n onClick={() => !isActive && onPageChange?.(dotPage)}\n className={cn(\n \"size-[var(--pagination-dot-size)] shrink-0 rounded-full\",\n \"outline-none transition-colors duration-instant\",\n \"focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n isActive\n ? \"bg-[var(--pagination-bg-dot-selected)] cursor-default\"\n : \"bg-[var(--pagination-bg-dot-default)] cursor-pointer hover:bg-[var(--pagination-bg-dot-hover)]\",\n )}\n />\n )\n })}\n\n {showNavigation && (\n <PaginationNext\n href=\"#\"\n onClick={(e) => { e.preventDefault(); onPageChange?.(page + 1) }}\n aria-disabled={page >= count}\n className={page >= count ? \"pointer-events-none opacity-40\" : \"\"}\n />\n )}\n </div>\n )\n}\n\nexport {\n Pagination,\n PaginationBullets,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-[65] w-72 origin-(--radix-popover-content-transform-origin) rounded-md border border-default bg-primary-surface p-4 text-prominent shadow-md outline-hidden 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-1 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n return (\n <div\n data-slot=\"popover-title\"\n className={cn(\"font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"popover-description\"\n className={cn(\"text-subtle\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst progressVariants = cva(\n \"relative w-full overflow-hidden\",\n {\n variants: {\n size: {\n sm: \"h-[var(--progress-sm-height)] rounded-[var(--progress-sm-radius)]\",\n md: \"h-[var(--progress-md-height)] rounded-[var(--progress-md-radius)]\",\n },\n variant: {\n normal: \"bg-[var(--progress-bar-bg-normal-track-default)]\",\n inverse: \"bg-[var(--progress-bar-bg-inverse-track-default)]\",\n },\n color: {\n default: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-default)]\",\n green: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-green)]\",\n red: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-red)]\",\n yellow: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-yellow)]\",\n blue: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-blue)]\",\n },\n },\n compoundVariants: [\n {\n variant: \"inverse\",\n color: \"default\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"green\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"red\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"yellow\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"blue\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n ],\n defaultVariants: {\n size: \"md\",\n variant: \"normal\",\n color: \"default\",\n },\n }\n)\n\nfunction Progress({\n className,\n value,\n size = \"md\",\n variant = \"normal\",\n color = \"default\",\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> &\n VariantProps<typeof progressVariants>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n data-size={size}\n className={cn(progressVariants({ size, variant, color }), className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress, progressVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { InfoIcon } from \"lucide-react\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* RadioGroup — root wrapper */\n/* ─────────────────────────────────────────────────────────────────────────── */\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 gap-3\", className)}\n {...props}\n />\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* RadioGroupItem — raw Radix primitive */\n/* */\n/* Visual model (Figma Quill spec, node 24504-1814): */\n/* • unselected — transparent bg, ~50% opacity prominent border (circle) */\n/* • selected — entire circle fills with bg-selected (dark ↔ light mode) */\n/* Indicator renders a bg-background hole in the centre, */\n/* replicating the Figma circle-dot icon (●◌) appearance */\n/* • disabled — opacity-50 on the item itself */\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 \"peer aspect-square size-4 shrink-0 rounded-full border border-prominent/50\",\n \"transition-colors duration-instant outline-none\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n // selected: fill entire circle dark (light mode) / white (dark mode)\n \"data-[state=checked]:bg-selected data-[state=checked]:border-selected\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex items-center justify-center\"\n >\n {/* bg-background circle punches a hole through bg-selected,\n producing the circle-dot (●◌) appearance from the Figma spec */}\n <span className=\"size-[6px] rounded-full bg-background\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* RadioGroupField — composite: radio item + label + optional info icon */\n/* */\n/* Mirrors CheckboxField pattern exactly: */\n/* • size=\"sm\" → 14px label, size-3.5 info icon */\n/* • size=\"md\" → 16px label, size-4 info icon (default) */\n/* • items-center alignment for correct single-line layout */\n/* • has-[:disabled]:opacity-50 dims the full field uniformly */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype RadioGroupFieldProps = React.ComponentProps<\n typeof RadioGroupPrimitive.Item\n> & {\n /**\n * Visual size variant.\n * - `sm` → 14 px label, 14 px info icon\n * - `md` → 16 px label, 16 px info icon (default)\n */\n size?: \"sm\" | \"md\"\n /** Label text rendered next to the radio button. */\n label?: React.ReactNode\n /** When `true`, renders a Lucide `InfoIcon` after the label text. */\n info?: boolean\n}\n\nfunction RadioGroupField({\n id,\n label,\n info = false,\n size = \"md\",\n disabled,\n className,\n ...props\n}: RadioGroupFieldProps) {\n return (\n <label\n data-slot=\"radio-group-field\"\n data-size={size}\n className={cn(\n \"inline-flex items-center gap-2 cursor-pointer select-none\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n className\n )}\n >\n <RadioGroupItem id={id} disabled={disabled} {...props} />\n\n {label != null && (\n <span\n className={cn(\n \"inline-flex items-center gap-2 text-prominent\",\n size === \"sm\" ? \"text-sm leading-5\" : \"text-base leading-6\"\n )}\n >\n <span>{label}</span>\n {info && (\n <InfoIcon\n aria-hidden\n className={cn(\n \"shrink-0 text-prominent\",\n size === \"sm\" ? \"size-3.5\" : \"size-4\"\n )}\n />\n )}\n </span>\n )}\n </label>\n )\n}\n\nexport { RadioGroup, RadioGroupItem, RadioGroupField }\n","\"use client\"\n\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: ResizablePrimitive.GroupProps) {\n return (\n <ResizablePrimitive.Group\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n withHandle?: boolean\n}) {\n return (\n <ResizablePrimitive.Separator\n data-slot=\"resizable-handle\"\n className={cn(\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.Separator>\n )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"relative flex-1 rounded-full bg-border\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { AlertTriangleIcon, CheckCircle2Icon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { inputVariants } from \"./input\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\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 readOnly = false,\n children,\n label,\n labeled = true,\n align = \"left\",\n required,\n status = \"default\",\n variant = \"outline\",\n iconLeft,\n helperText,\n disabled,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"md\" | \"lg\" | \"default\"\n readOnly?: boolean\n label?: string\n /** When false, label and value cross-fade at the same position instead of floating. Default true. */\n labeled?: boolean\n align?: \"left\" | \"center\"\n status?: \"default\" | \"success\" | \"error\"\n variant?: \"outline\" | \"fill\"\n iconLeft?: React.ReactNode\n helperText?: string\n required?: boolean\n}) {\n const effectiveSize = (size === \"default\" ? \"lg\" : size) as \"sm\" | \"md\" | \"lg\"\n\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n const isFocusedRef = React.useRef(false)\n const [isFloating, setIsFloating] = React.useState(false)\n const descriptionId = React.useId()\n\n const updateFloating = React.useCallback(() => {\n const el = triggerRef.current\n if (!el || !label) return\n const hasValue = !el.hasAttribute(\"data-placeholder\")\n const open = el.getAttribute(\"data-state\") === \"open\"\n setIsFloating(isFocusedRef.current || hasValue || open)\n }, [label])\n\n React.useEffect(() => {\n const el = triggerRef.current\n if (!el || !label) return\n updateFloating()\n const observer = new MutationObserver(updateFloating)\n observer.observe(el, {\n attributes: true,\n attributeFilter: [\"data-placeholder\", \"data-state\"],\n })\n return () => observer.disconnect()\n }, [label, updateFloating])\n\n const handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n isFocusedRef.current = true\n updateFloating()\n onFocusProp?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n isFocusedRef.current = false\n updateFloating()\n onBlurProp?.(e)\n }\n\n const labelColorClass = disabled\n ? \"text-field-text-disabled\"\n : status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <SelectPrimitive.Trigger\n ref={triggerRef}\n data-slot=\"select-trigger\"\n data-size={effectiveSize}\n data-readonly={readOnly ? \"\" : undefined}\n disabled={readOnly || disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={helperText ? descriptionId : undefined}\n className={cn(\n inputVariants({ variant, size: effectiveSize, status }),\n // Override cursor-text → cursor-pointer for button element\n \"cursor-pointer text-left\",\n // Override has-[:disabled]: (doesn't fire on button itself) with disabled:\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n variant === \"outline\" && \"disabled:bg-field-outline-bg-disabled disabled:border-field-outline-border-disabled\",\n variant === \"fill\" && \"disabled:bg-field-fill-bg-disabled\",\n // Maintain focus visual state when dropdown is open (focus moves to portal)\n \"data-[state=open]:[border-width:var(--semantic-size-border-1-5)]\",\n variant === \"outline\" && \"data-[state=open]:bg-field-outline-bg-focus data-[state=open]:border-field-outline-border-focus\",\n variant === \"fill\" && \"data-[state=open]:bg-field-fill-bg-focus data-[state=open]:border-field-fill-border-focus\",\n \"data-[readonly]:cursor-default data-[readonly]:opacity-100\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n )}\n {...props}\n >\n {/* Icon left */}\n {iconLeft && (\n <span className=\"shrink-0 flex items-center justify-center text-field-text-subtle group-disabled:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\">\n {iconLeft}\n </span>\n )}\n\n {/* Content area */}\n {label ? (\n labeled ? (\n /* Floating label: label rises to top, value fades in below */\n <div className=\"relative flex-1 min-w-0 h-full\">\n <span\n className={cn(\n \"absolute pointer-events-none select-none leading-[1.5]\",\n \"left-0 flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-all duration-200 ease-out\",\n labelColorClass,\n isFloating\n ? \"top-[var(--semantic-size-spacing-8)] [font-size:var(--field-font-size-sm)]\"\n : \"top-1/2 -translate-y-1/2\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </span>\n <span\n className={cn(\n \"absolute left-0 right-0 bottom-[var(--semantic-size-spacing-6)]\",\n \"leading-[1.5] [font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out truncate\",\n \"text-field-text-prominent group-data-[placeholder]:text-field-text-subtle\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n >\n {children}\n </span>\n </div>\n ) : (\n /* Labelless: label and value cross-fade at same position */\n <div className=\"relative flex-1 min-w-0 h-full\">\n <span\n className={cn(\n \"absolute inset-0 pointer-events-none select-none leading-[1.5]\",\n \"flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-opacity duration-200 ease-out\",\n labelColorClass,\n align === \"center\" ? \"justify-center\" : \"justify-start\",\n isFloating ? \"opacity-0\" : \"opacity-100\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </span>\n <span\n className={cn(\n \"absolute inset-0 flex items-center\",\n \"leading-[1.5] [font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out\",\n \"text-field-text-prominent\",\n align === \"center\" ? \"justify-center\" : \"justify-start\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n >\n {children}\n </span>\n </div>\n )\n ) : (\n /* No label — backwards-compatible bare-bones layout */\n <span className=\"flex-1 min-w-0 flex items-center gap-2 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 group-data-[placeholder]:text-dropdown-field-text-subtle\">\n {children}\n </span>\n )}\n\n {/* Status icon */}\n {status === \"error\" && !readOnly && !disabled && (\n <AlertTriangleIcon className=\"size-5 shrink-0 text-field-text-error\" />\n )}\n {status === \"success\" && !readOnly && !disabled && (\n <CheckCircle2Icon className=\"size-5 shrink-0 text-field-text-success\" />\n )}\n\n {/* Chevron */}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className={cn(\"size-4 shrink-0\", readOnly ? \"opacity-30\" : \"opacity-50\")} />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n {helperText && (\n <div\n id={descriptionId}\n className={cn(\n \"flex w-full items-center\",\n \"mt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-4)]\",\n \"[font-size:var(--field-font-size-sm)]\",\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\",\n )}\n >\n {helperText}\n </div>\n )}\n </div>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"relative z-[65] max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--field-radius)] border border-dropdown-field-outline-border-default bg-dropdown-field-outline-bg-default text-dropdown-field-text-prominent shadow-md 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n sideOffset={sideOffset}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-2\",\n position === \"popper\" &&\n \"w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\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-4 py-1.5 [font-size:var(--field-font-size-sm)] text-subtle\", 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 h-12 w-full cursor-default items-center gap-2 rounded-xs px-4 [font-size:var(--field-font-size-md)] outline-hidden select-none focus:bg-dropdown-field-fill-bg-neutral-hover focus:text-dropdown-field-text-prominent data-[state=checked]:!bg-dropdown-field-fill-bg-neutral-selected data-[state=checked]:!text-dropdown-field-text-selected data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-dropdown-field-text-subtle *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\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 \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\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 \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { Drawer as VaulPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Context lets every sub-component know which primitive family is in use.\ntype SheetSide = \"top\" | \"right\" | \"bottom\" | \"left\"\nconst SheetSideContext = React.createContext<SheetSide>(\"right\")\n\n// ── Sheet (root) ─────────────────────────────────────────────────────────────\n// side=\"bottom\" → Vaul (drag-to-dismiss). All other sides → Radix Dialog.\n\nfunction Sheet({\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Root> & { side?: SheetSide }) {\n return (\n <SheetSideContext.Provider value={side}>\n {side === \"bottom\" ? (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <VaulPrimitive.Root direction=\"bottom\" data-slot=\"sheet\" {...(props as any)} />\n ) : (\n <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n )}\n </SheetSideContext.Provider>\n )\n}\n\n// ── SheetTrigger ─────────────────────────────────────────────────────────────\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n const side = React.useContext(SheetSideContext)\n if (side === \"bottom\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <VaulPrimitive.Trigger data-slot=\"sheet-trigger\" {...(props as any)} />\n }\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\n// ── SheetClose ───────────────────────────────────────────────────────────────\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n const side = React.useContext(SheetSideContext)\n if (side === \"bottom\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <VaulPrimitive.Close data-slot=\"sheet-close\" {...(props as any)} />\n }\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\n// ── SheetPortal ──────────────────────────────────────────────────────────────\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n const side = React.useContext(SheetSideContext)\n if (side === \"bottom\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <VaulPrimitive.Portal {...(props as any)} />\n }\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\n// ── SheetOverlay ─────────────────────────────────────────────────────────────\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n const side = React.useContext(SheetSideContext)\n const baseClass = cn(\n \"fixed inset-0 z-[70] bg-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )\n if (side === \"bottom\") {\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <VaulPrimitive.Overlay data-slot=\"sheet-overlay\" className={baseClass} {...(props as any)} />\n )\n }\n return (\n <SheetPrimitive.Overlay data-slot=\"sheet-overlay\" className={baseClass} {...props} />\n )\n}\n\n// ── SheetContent ─────────────────────────────────────────────────────────────\n\nfunction SheetContent({\n className,\n children,\n side: sideProp,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: SheetSide\n showCloseButton?: boolean\n}) {\n const sideContext = React.useContext(SheetSideContext)\n const side = sideProp ?? sideContext\n\n // Bottom sheet → Vaul (drag-to-dismiss, rounded top, handle bar)\n if (sideContext === \"bottom\") {\n return (\n <SheetPortal>\n <SheetOverlay />\n <VaulPrimitive.Content\n data-slot=\"sheet-content\"\n data-side=\"bottom\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {...(props as any)}\n className={cn(\n \"group/sheet-content bg-primary-surface\",\n \"fixed inset-x-0 bottom-0 z-[70]\",\n \"mt-24 flex max-h-[80vh] flex-col pb-6 overflow-hidden\",\n className\n )}\n style={{\n borderTopLeftRadius: \"var(--bottom-sheet-radius)\",\n borderTopRightRadius: \"var(--bottom-sheet-radius)\",\n }}\n >\n {/* Handle bar — 40px wide, 4px tall; inherits sheet background */}\n <div className=\"flex w-full shrink-0 items-center justify-center h-8\">\n <div\n className=\"h-[4px] w-[40px] rounded-full\"\n style={{ backgroundColor: \"var(--bottom-sheet-bg-handle-bar)\" }}\n />\n </div>\n {children}\n </VaulPrimitive.Content>\n </SheetPortal>\n )\n }\n\n // All other sides → Radix Dialog (unchanged)\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\n \"group/sheet-content fixed z-[70] flex flex-col gap-4 bg-primary-surface shadow-lg transition ease-standard data-[state=closed]:animate-out data-[state=closed]:duration-slow data-[state=open]:animate-in data-[state=open]:duration-open\",\n side === \"right\" &&\n \"inset-y-0 right-0 h-full w-3/4 border-l border-default data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n side === \"left\" &&\n \"inset-y-0 left-0 h-full w-3/4 border-r border-default data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n side === \"top\" &&\n \"inset-x-0 top-0 h-auto border-b border-default data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\n// ── SheetHeader ──────────────────────────────────────────────────────────────\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\n \"flex flex-col gap-1.5 p-4\",\n \"group-data-[side=bottom]/sheet-content:text-center\",\n className,\n )}\n {...props}\n />\n )\n}\n\n// ── SheetFooter ──────────────────────────────────────────────────────────────\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4 [&>*]:w-full\", className)}\n {...props}\n />\n )\n}\n\n// ── SheetTitle ───────────────────────────────────────────────────────────────\n// Vaul has no Dialog context, so render a plain element for bottom sheets.\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n const side = React.useContext(SheetSideContext)\n const cls = cn(\"font-semibold text-prominent\", className)\n const bottomCls = cn(\"text-xl leading-[1.4] font-extrabold font-display text-prominent\", className)\n if (side === \"bottom\") {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={bottomCls}\n {...props}\n />\n )\n }\n return (\n <SheetPrimitive.Title data-slot=\"sheet-title\" className={cls} {...props} />\n )\n}\n\n// ── SheetDescription ─────────────────────────────────────────────────────────\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n const cls = cn(\"text-sm text-subtle\", className)\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cls}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nimport { useIsMobile } from \"../../hooks/use-mobile\"\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Separator } from \"./separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\"\nimport { Skeleton } from \"./skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-base ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-base ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"secondary\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"relative flex w-full flex-1 flex-col bg-primary-surface\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"h-8 w-full bg-primary-surface shadow-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"div\"\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-sm p-2 text-left text-sidebar-foreground text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-secondary-hover hover:text-primary focus-visible:ring-2 active:bg-secondary-hover active:text-primary disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-secondary-hover data-[active=true]:font-semibold data-[active=true]:text-primary data-[active=true]:hover:bg-secondary-hover data-[active=true]:hover:text-primary data-[state=open]:hover:bg-secondary-hover data-[state=open]:hover:text-primary [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-primary\",\n {\n variants: {\n variant: {\n default: \"\",\n outline:\n \"bg-primary-surface ring-1 ring-sidebar-border hover:ring-primary/40 data-[active=true]:ring-primary/40\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot.Root : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground data-[state=open]:opacity-100 md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n}) {\n // Fixed width for skeleton bars (avoids impure Math.random in render; still reads like varied line length).\n const width = \"70%\"\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"a\"\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-sm px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden hover:bg-secondary-hover hover:text-primary focus-visible:ring-2 active:bg-secondary-hover active:text-primary disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-primary\",\n \"data-[active=true]:bg-secondary-hover data-[active=true]:text-primary\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","import { cn } from \"../../lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"animate-pulse rounded-md bg-secondary-surface\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","\"use client\"\n\nimport * 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 = 6,\n variant = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n variant?: \"default\" | \"error\"\n}) {\n const bgVar = variant === \"error\" ? \"var(--tooltip-bg-error)\" : \"var(--tooltip-bg-default)\"\n const textVar = variant === \"error\" ? \"var(--tooltip-text-error)\" : \"var(--tooltip-text-default)\"\n\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n data-variant={variant}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-[var(--tooltip-radius)] border-0 px-[var(--tooltip-padding-horizontal)] py-[var(--tooltip-padding-vertical)] min-w-[var(--tooltip-min-width)] max-w-[var(--tooltip-max-width)] [font-size:var(--tooltip-font-size)] [font-weight:var(--tooltip-font-weight)] text-balance fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n className\n )}\n style={{ backgroundColor: bgVar, color: textVar }}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow style={{ fill: bgVar }} />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Slider as SliderPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root> & {\n size?: \"sm\" | \"default\"\n}) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min],\n [value, defaultValue, min]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n data-size={size}\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"group/slider relative flex w-full touch-none items-center select-none\",\n \"data-[disabled]:opacity-50\",\n \"data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"relative grow overflow-hidden rounded-full bg-slider-track\",\n \"data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full\",\n \"group-data-[size=sm]/slider:data-[orientation=horizontal]:h-1 group-data-[size=sm]/slider:data-[orientation=vertical]:w-1\",\n \"group-data-[size=default]/slider:data-[orientation=horizontal]:h-1.5 group-data-[size=default]/slider:data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className=\"absolute bg-slider-range data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className={cn(\n \"block shrink-0 rounded-full bg-toggle-knob border-0 cursor-pointer\",\n \"shadow-sm transition-[color,box-shadow] duration-fast ease-standard\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"group-data-[size=sm]/slider:size-4\",\n \"group-data-[size=default]/slider:size-5\",\n )}\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","\"use client\"\n\n/**\n * Snackbar — Quill equivalent of shadcn's Sonner.\n * Renamed from sonner.tsx. Same imperative API: import { toast } from \"sonner\".\n *\n * Variants: default | fail (only variants in component-snackbar tokens.json)\n *\n * Flagged — present in original sonner.tsx but no token match; removed:\n * • success / info / warning / loading icon overrides — no variants in tokens\n * • --normal-border — no border token in component-snackbar\n *\n * Fixed from original:\n * • --border-radius now uses --snackbar-radius (was pointing to global --radius)\n *\n * Icons: suppressed on all variants — no icons per design spec.\n */\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as SonnerToaster, type ToasterProps } from \"sonner\"\n\nimport { buttonVariants } from \"./button\"\n\nconst Snackbar = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <SonnerToaster\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n position=\"bottom-center\"\n richColors\n closeButton\n toastOptions={{\n classNames: {\n /* button.tsx ghost/sm: height 32px, radius 999px, font-size 14px, padding-h 12px.\n Color states are enforced via !important overrides in globals.css using\n --snackbar-btn-* → component-button/sm ghost-static-dark (light) / ghost-static-light (dark). */\n actionButton: buttonVariants({ variant: \"ghost\", size: \"sm\" }),\n cancelButton: buttonVariants({ variant: \"ghost\", size: \"sm\" }),\n /* button.tsx ghost/icon-sm: 32×32 circle.\n Pulled into inline flex flow via CSS override; sonner's built-in X SVG is coloured\n via --snackbar-btn-text (white in light mode, dark in dark mode). */\n closeButton: buttonVariants({ variant: \"ghost\", size: \"icon-sm\" }),\n },\n }}\n style={\n {\n /* component-snackbar/mode-1 colour tokens */\n \"--normal-bg\": \"var(--snackbar-bg-default)\",\n \"--normal-text\": \"var(--snackbar-text)\",\n \"--error-bg\": \"var(--snackbar-bg-fail)\",\n \"--error-text\": \"var(--snackbar-text-fail)\",\n\n /* component-snackbar/mode-1 size tokens — only vars sonner actually reads */\n \"--border-radius\": \"var(--snackbar-radius)\",\n \"--width\": \"var(--snackbar-max-width)\",\n\n /* Remove sonner's default borders — no border in component-snackbar tokens */\n \"--normal-border\": \"transparent\",\n \"--error-border\": \"transparent\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Snackbar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Minus, Plus } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n type inputGroupVariants,\n} from \"./input-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\ntype InputGroupVariantProps = VariantProps<typeof inputGroupVariants>\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max)\n}\n\nfunction getDecimalPlaces(n: number) {\n const s = String(n)\n const i = s.indexOf(\".\")\n return i === -1 ? 0 : s.length - i - 1\n}\n\nfunction formatValue(value: number, decimalPlaces: number) {\n return decimalPlaces > 0 ? value.toFixed(decimalPlaces) : String(value)\n}\n\ninterface StepperProps {\n value?: number\n defaultValue?: number\n onValueChange?: (value: number) => void\n min?: number\n max?: number\n step?: number\n disabled?: boolean\n placeholder?: string\n className?: string\n id?: string\n name?: string\n \"aria-label\"?: string\n /** \"split\" — [−] on far left, editable input centered, [+] on far right.\n * \"right-aligned\" — editable input left-aligned (flex-1), both [−][+] grouped on the right. */\n layout?: \"split\" | \"right-aligned\"\n /** When provided, renders the labelled variant: uses Input as the base with a\n * floating label and stepper buttons in the iconRight slot. */\n label?: string\n /** Short unit/currency label inside the field, right of the decrement button (split only). */\n labelLeft?: string\n /** Short unit/currency label inside the field, left of the increment button (split only). */\n labelRight?: string\n /** Helper message shown in the footer row below the field. */\n helperText?: string\n /** When true, renders a currentValue/max counter on the right of the footer row. Requires a finite `max`. */\n showCounter?: boolean\n /** Visual style of the field. Defaults to \"outline\". */\n variant?: InputGroupVariantProps[\"variant\"]\n /** Validation state. Affects border colour and footer text colour. */\n status?: InputGroupVariantProps[\"status\"]\n /** Field height and font size. \"md\" (default, 56px / 16px) and \"sm\" (32px / 14px).\n * Applies to the labelless variant only — ignored when `label` is set. */\n size?: \"md\" | \"sm\"\n}\n\nfunction Stepper({\n value: controlledValue,\n defaultValue,\n onValueChange,\n min = -Infinity,\n max = Infinity,\n step = 1,\n disabled,\n placeholder,\n className,\n id,\n name,\n \"aria-label\": ariaLabel,\n layout = \"split\",\n label,\n labelLeft,\n labelRight,\n helperText,\n showCounter,\n variant,\n status,\n size = \"md\",\n}: StepperProps) {\n const isControlled = controlledValue !== undefined\n // Numeric state always has a value (defaults to 0) so buttons work even when display is empty\n const [internalValue, setInternalValue] = React.useState(\n clamp(defaultValue ?? 0, min, max)\n )\n const currentValue = isControlled ? controlledValue : internalValue\n const decimalPlaces = getDecimalPlaces(step)\n\n // Labeled mode without an explicit defaultValue starts empty so the floating\n // label sits at center (identical to an empty Input.tsx labelled field).\n // All other modes always show a formatted number.\n const [displayString, setDisplayString] = React.useState(() =>\n label !== undefined && defaultValue === undefined\n ? \"\"\n : formatValue(clamp(defaultValue ?? 0, min, max), decimalPlaces)\n )\n const [isFocused, setIsFocused] = React.useState(false)\n\n // Sync display string when controlled value changes externally (not while typing).\n // Skip the sync when labeled mode has an empty display — the user intentionally\n // cleared the field and the label should remain at center.\n React.useEffect(() => {\n if (!isFocused) {\n setDisplayString((prev) => {\n if (label && prev === \"\") return \"\"\n return formatValue(currentValue, decimalPlaces)\n })\n }\n }, [currentValue, decimalPlaces, isFocused, label])\n\n function commit(next: number) {\n const clamped = clamp(next, min, max)\n const rounded =\n decimalPlaces > 0\n ? parseFloat(clamped.toFixed(decimalPlaces))\n : Math.round(clamped)\n\n if (!isControlled) setInternalValue(rounded)\n setDisplayString(formatValue(rounded, decimalPlaces))\n onValueChange?.(rounded)\n }\n\n function handleDecrement() {\n commit(currentValue - step)\n }\n\n function handleIncrement() {\n commit(currentValue + step)\n }\n\n function handleInputChange(e: React.ChangeEvent<HTMLInputElement>) {\n setDisplayString(e.target.value)\n }\n\n function handleBlur() {\n setIsFocused(false)\n // Labeled mode: keep empty display so the floating label drops back to center.\n // Labelless mode: reset to the last valid number when cleared.\n if (displayString === \"\") {\n if (!label) setDisplayString(formatValue(currentValue, decimalPlaces))\n return\n }\n const parsed = parseFloat(displayString)\n if (Number.isNaN(parsed)) {\n setDisplayString(label ? \"\" : formatValue(currentValue, decimalPlaces))\n } else {\n commit(parsed)\n }\n }\n\n function handleFocus() {\n setIsFocused(true)\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"ArrowUp\") {\n e.preventDefault()\n handleIncrement()\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault()\n handleDecrement()\n } else if (e.key === \"Enter\") {\n e.preventDefault()\n const parsed = parseFloat(displayString)\n if (Number.isNaN(parsed)) {\n setDisplayString(formatValue(currentValue, decimalPlaces))\n } else {\n commit(parsed)\n }\n }\n }\n\n // ── Labelled variant: use Input as the base so the floating label works correctly ──\n if (label) {\n const stepperButtons = (\n // stopPropagation prevents Input's wrapper onClick from stealing focus when\n // the user clicks a stepper button\n <div\n className=\"flex items-center gap-[var(--semantic-size-spacing-8)]\"\n onClick={(e) => e.stopPropagation()}\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"rounded-full min-w-0\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Minus className=\"size-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"rounded-full min-w-0\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Plus className=\"size-4\" />\n </Button>\n </div>\n )\n\n return (\n <Input\n role=\"spinbutton\"\n aria-valuemin={min === -Infinity ? undefined : min}\n aria-valuemax={max === Infinity ? undefined : max}\n aria-valuenow={currentValue}\n aria-label={ariaLabel}\n id={id}\n name={name}\n label={label}\n variant={variant}\n status={status}\n value={displayString}\n placeholder={placeholder}\n helperText={helperText}\n disabled={disabled}\n inputMode=\"numeric\"\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n iconRight={stepperButtons}\n className={cn(\"w-full\", className)}\n />\n )\n }\n\n // ── Labelless variant: use InputGroup for the bare field ──\n const hasFooter = helperText !== undefined || (showCounter && max !== Infinity)\n const footerColorClass =\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n const isSm = size === \"sm\"\n const btnSize = isSm ? \"icon-xs\" : \"icon-sm\"\n const iconClass = isSm ? \"size-3\" : \"size-4\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <InputGroup\n data-slot=\"stepper\"\n data-disabled={disabled || undefined}\n size={size}\n variant={variant}\n status={status}\n >\n {layout === \"split\" ? (\n <>\n {/* pl-16 = field left edge; pr-0 = input's pl-8 (reduced by group rule) provides the gap */}\n <InputGroupAddon align=\"inline-start\" className=\"!pl-[var(--semantic-size-spacing-16)] !pr-0\">\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Minus className={iconClass} />\n </InputGroupButton>\n {labelLeft && (\n <InputGroupText>{labelLeft}</InputGroupText>\n )}\n </InputGroupAddon>\n\n <InputGroupInput\n type=\"text\"\n inputMode=\"numeric\"\n role=\"spinbutton\"\n aria-valuemin={min === -Infinity ? undefined : min}\n aria-valuemax={max === Infinity ? undefined : max}\n aria-valuenow={currentValue}\n aria-label={ariaLabel}\n value={displayString}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n id={id}\n name={name}\n className=\"text-center [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n />\n\n {/* input's pr-8 (reduced by group rule) provides the gap; pr-16 = field right edge */}\n <InputGroupAddon align=\"inline-end\" className=\"!pr-[var(--semantic-size-spacing-16)]\">\n {labelRight && (\n <InputGroupText>{labelRight}</InputGroupText>\n )}\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Plus className={iconClass} />\n </InputGroupButton>\n </InputGroupAddon>\n </>\n ) : (\n <>\n <InputGroupInput\n type=\"text\"\n inputMode=\"numeric\"\n role=\"spinbutton\"\n aria-valuemin={min === -Infinity ? undefined : min}\n aria-valuemax={max === Infinity ? undefined : max}\n aria-valuenow={currentValue}\n aria-label={ariaLabel}\n value={displayString}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n id={id}\n name={name}\n className=\"text-left [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n />\n {/* pr-16 = field right edge */}\n <InputGroupAddon align=\"inline-end\" className=\"!pr-[var(--semantic-size-spacing-16)]\">\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Minus className={iconClass} />\n </InputGroupButton>\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Plus className={iconClass} />\n </InputGroupButton>\n </InputGroupAddon>\n </>\n )}\n </InputGroup>\n\n {hasFooter && (\n <div className={cn(\"flex w-full items-center justify-between mt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-4)] [font-size:var(--field-font-size-sm)]\", footerColorClass)}>\n <span>{helperText ?? \"\"}</span>\n {showCounter && max !== Infinity && (\n <span>{currentValue}/{max}</span>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport { Stepper }\nexport type { StepperProps }\n","import { cn } from \"../../lib/utils\"\n\nconst PILL_COUNT = 8\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"relative inline-block size-4 text-current\", className)}\n {...props}\n >\n <style>{`\n @keyframes spinner-fade {\n 0% { opacity: 1; }\n 100% { opacity: 0.15; }\n }\n `}</style>\n {Array.from({ length: PILL_COUNT }, (_, i) => (\n <span\n key={i}\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: \"0\",\n width: \"12%\",\n height: \"30%\",\n borderRadius: \"9999px\",\n backgroundColor: \"var(--loading-spinner-bg-default)\",\n transformOrigin: \"50% 167%\",\n transform: `translateX(-50%) rotate(${i * 45}deg)`,\n animation: `spinner-fade 0.8s linear ${(i * 0.8) / PILL_COUNT}s infinite`,\n }}\n />\n ))}\n </div>\n )\n}\n\nexport { Spinner }\n","import { cn } from \"../../lib/utils\"\n\nfunction LoadingSpinner({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n data-slot=\"loading-spinner\"\n className={cn(\n \"inline-block animate-spin rounded-full\",\n \"border-2 border-loading-spinner-bg-default border-t-transparent\",\n \"size-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { LoadingSpinner }\n","\"use client\"\n\nimport * 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 cursor-pointer items-center rounded-full p-0.5\",\n \"transition-colors duration-fast outline-none\",\n \"bg-toggle-track-off hover:bg-toggle-track-off-hover active:bg-toggle-track-off-active\",\n \"data-[state=checked]:bg-toggle-track-on data-[state=checked]:hover:bg-toggle-track-on-hover data-[state=checked]:active:bg-toggle-track-on-active\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-info\",\n \"data-[size=default]:h-6 data-[size=default]:w-11\",\n \"data-[size=sm]:h-5 data-[size=sm]:w-9\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"pointer-events-none block rounded-full bg-toggle-knob shadow-sm\",\n \"transition-transform duration-fast\",\n \"data-[state=unchecked]:translate-x-0\",\n \"group-data-[size=default]/switch:size-5 data-[state=checked]:group-data-[size=default]/switch:translate-x-5\",\n \"group-data-[size=sm]/switch:size-4 data-[state=checked]:group-data-[size=sm]/switch:translate-x-4\",\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * 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-secondary-surface/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-secondary-surface/50 data-[state=selected]:bg-secondary-surface\",\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-prominent [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\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 [&>[role=checkbox]]:translate-y-[2px]\",\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-subtle\", 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","\"use client\"\n\nimport * 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\n// Quill component: SegmentedControl\n// tokens.json entry: component-segmented-control\n// Sizes from tokens.json: md (default), lg\n// Orientation: horizontal only (vertical not in tokens.json)\n// Icon position: inline only (iconPosition=\"top\" not in tokens.json)\n// Elevation: active segment shadow via --segmented-elevation-selected (two-layer alpha-black shadow)\n\nconst segmentedControlListVariants = cva(\n \"group/segmented-list inline-flex w-fit items-center bg-segmented-control-container-bg\",\n {\n variants: {\n size: {\n md: [\n \"h-[var(--segmented-md-container-height)]\",\n \"min-w-[var(--segmented-md-container-min-width)]\",\n \"rounded-[var(--segmented-md-container-radius)]\",\n \"p-[var(--segmented-md-container-padding)]\",\n \"gap-[var(--segmented-md-container-gap)]\",\n ],\n lg: [\n \"h-[var(--segmented-lg-container-height)]\",\n \"min-w-[var(--segmented-lg-container-min-width)]\",\n \"rounded-[var(--segmented-lg-container-radius)]\",\n \"p-[var(--segmented-lg-container-padding)]\",\n \"gap-[var(--segmented-lg-container-gap)]\",\n ],\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nfunction SegmentedControl({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"segmented-control\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SegmentedControlList({\n className,\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof segmentedControlListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"segmented-control-list\"\n data-size={size}\n className={cn(segmentedControlListVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction SegmentedControlTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"segmented-control-trigger\"\n className={cn(\n \"relative inline-flex flex-1 items-center justify-center gap-1.5 whitespace-nowrap transition-all\",\n // md defaults (container group is md)\n \"h-[var(--segmented-md-segment-height)]\",\n \"min-w-[var(--segmented-md-segment-min-width)]\",\n \"rounded-[var(--segmented-md-segment-radius)]\",\n \"px-[var(--segmented-md-segment-padding)]\",\n \"[font-size:var(--segmented-md-font-size)]\",\n \"[font-weight:var(--segmented-md-font-weight-default)]\",\n // lg overrides via parent data-size\n \"group-data-[size=lg]/segmented-list:h-[var(--segmented-lg-segment-height)]\",\n \"group-data-[size=lg]/segmented-list:min-w-[var(--segmented-lg-segment-min-width)]\",\n \"group-data-[size=lg]/segmented-list:rounded-[var(--segmented-lg-segment-radius)]\",\n \"group-data-[size=lg]/segmented-list:px-[var(--segmented-lg-segment-padding)]\",\n \"group-data-[size=lg]/segmented-list:[font-size:var(--segmented-lg-font-size)]\",\n // colors — default (unselected): 72% opacity; selected: solid\n \"text-segmented-control-text-default\",\n \"data-[state=active]:text-segmented-control-text-prominent\",\n \"[&_svg]:text-segmented-control-icon-prominent\",\n // icon sizes: md=20px, lg=24px\n \"group-data-[size=md]/segmented-list:[&_svg:not([class*='size-'])]:size-5\",\n \"group-data-[size=lg]/segmented-list:[&_svg:not([class*='size-'])]:size-6\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n // interactive states\n \"hover:bg-segmented-control-segment-bg-hover\",\n \"active:bg-segmented-control-segment-bg-pressed\",\n // disabled\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"disabled:text-segmented-control-text-disabled\",\n \"disabled:[&_svg]:text-segmented-control-icon-disabled\",\n // selected state — white pill + elevation shadow\n \"data-[state=active]:bg-segmented-control-segment-bg-selected\",\n \"data-[state=active]:[font-weight:var(--segmented-md-font-weight-selected)]\",\n \"group-data-[size=lg]/segmented-list:data-[state=active]:[font-weight:var(--segmented-lg-font-weight-selected)]\",\n \"data-[state=active]:shadow-[var(--segmented-elevation-selected)]\",\n // focus\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SegmentedControlContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"segmented-control-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport {\n SegmentedControl,\n SegmentedControlList,\n SegmentedControlTrigger,\n SegmentedControlContent,\n segmentedControlListVariants,\n}\n","\"use client\"\n\nimport * 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\n// Quill component: Tab (line / underline variant)\n// tokens.json entry: component-tab\n// Sizes from tokens.json: sm, md (default), lg\n// Orientation: horizontal and vertical\n// Icon position: inline\n\nconst tabListVariants = cva(\n \"group/tab-list inline-flex w-fit items-center gap-1 bg-transparent border-b border-border-subtle\",\n {\n variants: {\n size: {\n sm: \"h-[var(--tab-sm-height)]\",\n md: \"h-[var(--tab-md-height)]\",\n lg: \"h-[var(--tab-lg-height)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nfunction Tab({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tab\"\n className={cn(\n \"group/tab flex flex-col gap-2\",\n \"data-[orientation=vertical]:flex-row data-[orientation=vertical]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabList({\n className,\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tab-list\"\n data-size={size}\n className={cn(\n tabListVariants({ size }),\n // vertical: stack triggers in a column, auto height\n \"group-data-[orientation=vertical]/tab:flex-col group-data-[orientation=vertical]/tab:h-auto group-data-[orientation=vertical]/tab:w-fit\",\n \"group-data-[orientation=vertical]/tab:border-b-0 group-data-[orientation=vertical]/tab:border-r group-data-[orientation=vertical]/tab:border-border-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tab-trigger\"\n className={cn(\n \"relative inline-flex flex-1 items-center justify-center gap-1.5 bg-transparent whitespace-nowrap transition-all\",\n // md defaults\n \"h-full\",\n \"min-w-[var(--tab-md-min-width)]\",\n \"rounded-[var(--tab-md-radius)]\",\n \"px-[var(--tab-md-padding-horizontal)]\",\n \"[font-size:var(--tab-md-font-size)]\",\n \"[font-weight:var(--tab-md-font-weight-default)]\",\n // sm overrides\n \"group-data-[size=sm]/tab-list:gap-1\",\n \"group-data-[size=sm]/tab-list:min-w-[var(--tab-sm-min-width)]\",\n \"group-data-[size=sm]/tab-list:rounded-[var(--tab-sm-radius)]\",\n \"group-data-[size=sm]/tab-list:px-[var(--tab-sm-padding-horizontal)]\",\n \"group-data-[size=sm]/tab-list:[font-size:var(--tab-sm-font-size)]\",\n // lg overrides\n \"group-data-[size=lg]/tab-list:gap-2\",\n \"group-data-[size=lg]/tab-list:min-w-[var(--tab-lg-min-width)]\",\n \"group-data-[size=lg]/tab-list:rounded-[var(--tab-lg-radius)]\",\n \"group-data-[size=lg]/tab-list:px-[var(--tab-lg-padding-horizontal)]\",\n \"group-data-[size=lg]/tab-list:[font-size:var(--tab-lg-font-size)]\",\n // vertical layout — full width, left-aligned, fixed height from size token\n \"group-data-[orientation=vertical]/tab:w-full group-data-[orientation=vertical]/tab:justify-start\",\n \"group-data-[orientation=vertical]/tab:h-[var(--tab-md-height)]\",\n \"group-data-[size=sm]/tab-list:group-data-[orientation=vertical]/tab:h-[var(--tab-sm-height)]\",\n \"group-data-[size=lg]/tab-list:group-data-[orientation=vertical]/tab:h-[var(--tab-lg-height)]\",\n // colors\n \"text-tab-text border border-transparent\",\n \"hover:bg-transparent hover:text-primary\",\n \"active:bg-tab-bg-pressed\",\n // disabled\n \"disabled:pointer-events-none disabled:text-tab-text-disabled disabled:opacity-50\",\n // focus\n \"focus-visible:border-tab-border-focus focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring\",\n // icons\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n // active state\n \"data-[state=active]:bg-transparent\",\n \"data-[state=active]:text-tab-text-selected\",\n \"data-[state=active]:[font-weight:var(--tab-md-font-weight-selected)]\",\n \"group-data-[size=sm]/tab-list:data-[state=active]:[font-weight:var(--tab-sm-font-weight-selected)]\",\n \"group-data-[size=lg]/tab-list:data-[state=active]:[font-weight:var(--tab-lg-font-weight-selected)]\",\n // active indicator — horizontal: bottom underline; vertical: right-side bar\n \"after:absolute after:bg-tab-border-selected after:opacity-0 after:transition-opacity\",\n // horizontal indicator\n \"after:inset-x-0 after:bottom-[-2px] after:h-[var(--tab-md-border-width)] after:w-auto\",\n \"group-data-[size=sm]/tab-list:after:h-[var(--tab-sm-border-width)]\",\n \"group-data-[size=lg]/tab-list:after:h-[var(--tab-lg-border-width)]\",\n // vertical indicator — right edge bar\n \"group-data-[orientation=vertical]/tab:after:inset-y-0 group-data-[orientation=vertical]/tab:after:left-auto group-data-[orientation=vertical]/tab:after:right-[-2px] group-data-[orientation=vertical]/tab:after:h-auto group-data-[orientation=vertical]/tab:after:w-[var(--tab-md-border-width)]\",\n \"data-[state=active]:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tab-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tab, TabList, TabTrigger, TabContent, tabListVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst toggleVariants = cva(\n [\n \"relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full p-0.5\",\n \"transition-colors duration-fast outline-none\",\n \"bg-toggle-track-off hover:bg-toggle-track-off-hover active:bg-toggle-track-off-active\",\n \"data-[state=on]:bg-toggle-track-on data-[state=on]:hover:bg-toggle-track-on-hover data-[state=on]:active:bg-toggle-track-on-active\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-info\",\n ],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\nfunction Toggle({\n className,\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({ className }))}\n {...props}\n >\n <span\n aria-hidden\n className={cn(\n \"pointer-events-none block size-5 rounded-full bg-toggle-knob shadow-sm\",\n \"transition-transform duration-fast\",\n \"translate-x-0 [[data-state=on]_&]:translate-x-5\",\n )}\n />\n </TogglePrimitive.Root>\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { toggleVariants } from \"./toggle\"\n\nfunction ToggleGroup({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root>) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n className={cn(\"flex flex-wrap items-center gap-3\", className)}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n className={cn(toggleVariants({ className }))}\n {...props}\n >\n <span\n aria-hidden\n className={cn(\n \"pointer-events-none block size-5 rounded-full bg-toggle-knob shadow-sm\",\n \"transition-transform duration-fast\",\n \"translate-x-0 [[data-state=on]_&]:translate-x-5\",\n )}\n />\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"],"mappings":"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","names":["jsx","React","Fragment","jsx","jsxs","jsx","jsx","jsx","cva","jsx","cva","React","Slot","jsx","jsxs","Slot","cva","Slot","jsx","cva","Slot","cva","jsx","cva","React","ChevronDownIcon","jsx","_a","_b","className","props","ChevronDownIcon","cva","jsx","cva","React","jsx","jsxs","api","React","Fragment","jsx","jsxs","config","jsx","jsxs","cva","Slot","jsx","jsx","cva","Slot","jsx","React","CheckIcon","ChevronDownIcon","cva","React","cva","jsx","jsxs","cva","Textarea","_a","jsx","cva","_a","_b","jsx","jsxs","ChevronDownIcon","CheckIcon","XIcon","jsx","jsxs","XIcon","jsx","jsxs","CheckIcon","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","CheckIcon","jsx","jsx","jsxs","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","cva","jsx","cva","useMemo","cva","jsx","jsx","jsxs","cva","useMemo","_a","React","Slot","jsx","Slot","_a","jsx","React","cva","jsx","jsxs","cva","Input","_a","React","X","cva","jsx","jsxs","cva","X","React","MinusIcon","cva","jsx","jsxs","cva","_a","MinusIcon","React","OTPInput","OTPInputContext","MinusIcon","cva","jsx","jsxs","OTPInput","cva","_a","OTPInputContext","MinusIcon","jsx","cva","Slot","jsx","cva","Slot","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","React","ChevronLeftIcon","ChevronRightIcon","jsx","jsx","jsxs","ChevronLeftIcon","ChevronRightIcon","cva","jsx","cva","InfoIcon","jsx","jsxs","InfoIcon","jsx","jsx","jsxs","React","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","React","XIcon","jsx","jsxs","XIcon","React","cva","Slot","React","jsx","jsx","jsxs","Tooltip","jsx","jsxs","open","Slot","cva","Tooltip","React","jsx","jsxs","jsx","React","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","cva","jsx","cva","cva","TabsPrimitive","jsx","cva","TabsPrimitive","cva","jsx","cva","jsx"]}
|