@trading-game/design-intelligence-layer 0.17.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/AGENTS.md +104 -231
  2. package/README.md +46 -742
  3. package/dist/index.cjs +2753 -2985
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +247 -261
  6. package/dist/index.d.ts +247 -261
  7. package/dist/index.js +2648 -2855
  8. package/dist/index.js.map +1 -1
  9. package/docs/components/accordion.md +85 -0
  10. package/docs/components/alert-dialog.md +98 -0
  11. package/docs/components/aspect-ratio.md +55 -0
  12. package/docs/components/avatar.md +88 -0
  13. package/docs/components/badge.md +75 -0
  14. package/docs/components/banner.md +84 -0
  15. package/docs/components/bottom-navigation.md +90 -0
  16. package/docs/components/breadcrumb.md +85 -0
  17. package/docs/components/button.md +94 -0
  18. package/docs/components/calendar.md +74 -0
  19. package/docs/components/card.md +79 -0
  20. package/docs/components/carousel.md +82 -0
  21. package/docs/components/checkbox.md +66 -0
  22. package/docs/components/chip.md +72 -0
  23. package/docs/components/command.md +86 -0
  24. package/docs/components/context-menu.md +90 -0
  25. package/docs/components/dialog.md +95 -0
  26. package/docs/components/drawer.md +97 -0
  27. package/docs/components/dropdown-menu.md +92 -0
  28. package/docs/components/empty.md +87 -0
  29. package/docs/components/field.md +117 -0
  30. package/docs/components/hover-card.md +77 -0
  31. package/docs/components/input-group.md +105 -0
  32. package/docs/components/input-otp.md +87 -0
  33. package/docs/components/input.md +71 -0
  34. package/docs/components/item.md +105 -0
  35. package/docs/components/label.md +56 -0
  36. package/docs/components/link.md +66 -0
  37. package/docs/components/menubar.md +102 -0
  38. package/docs/components/native-select.md +71 -0
  39. package/docs/components/navigation-button.md +68 -0
  40. package/docs/components/navigation-menu.md +99 -0
  41. package/docs/components/numpad.md +78 -0
  42. package/docs/components/pagination.md +84 -0
  43. package/docs/components/popover.md +89 -0
  44. package/docs/components/profile-photo.md +81 -0
  45. package/docs/components/progress.md +60 -0
  46. package/docs/components/radio-group.md +82 -0
  47. package/docs/components/resizable.md +79 -0
  48. package/docs/components/scroll-area.md +66 -0
  49. package/docs/components/section-message.md +99 -0
  50. package/docs/components/select.md +105 -0
  51. package/docs/components/separator.md +55 -0
  52. package/docs/components/sheet.md +91 -0
  53. package/docs/components/sidebar.md +125 -0
  54. package/docs/components/skeleton.md +51 -0
  55. package/docs/components/slider.md +61 -0
  56. package/docs/components/spinner.md +52 -0
  57. package/docs/components/stepper.md +68 -0
  58. package/docs/components/switch.md +57 -0
  59. package/docs/components/table.md +86 -0
  60. package/docs/components/tabs.md +95 -0
  61. package/docs/components/textarea.md +58 -0
  62. package/docs/components/toast.md +66 -0
  63. package/docs/components/toggle-group.md +77 -0
  64. package/docs/components/toggle.md +60 -0
  65. package/docs/components/tooltip.md +83 -0
  66. package/docs/foundations/colors.md +109 -0
  67. package/docs/foundations/motion.md +63 -0
  68. package/docs/foundations/shape-layout.md +56 -0
  69. package/docs/foundations/typography.md +83 -0
  70. package/docs/patterns/forms.md +70 -0
  71. package/docs/patterns/menus.md +50 -0
  72. package/docs/patterns/on-brand.md +43 -0
  73. package/guides/audits/design-system-audit-2026-07.md +135 -0
  74. package/guides/rules/design-system-consuming-project.mdc +56 -0
  75. package/package.json +6 -7
  76. package/src/styles.css +1616 -251
  77. package/guides/design-system-guide/trading-game-ds-guide.md +0 -917
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/ui/accordion.tsx","../lib/utils.ts","../components/ui/alert.tsx","../components/ui/button.tsx","../components/ui/spinner.tsx","../components/ui/alert-dialog.tsx","../components/ui/aspect-ratio.tsx","../components/ui/avatar.tsx","../components/ui/badge.tsx","../components/ui/banner.tsx","../components/ui/breadcrumb.tsx","../components/ui/calendar.tsx","../components/ui/card.tsx","../components/ui/carousel.tsx","../components/ui/chip.tsx","../components/ui/chart.tsx","../components/ui/checkbox.tsx","../components/ui/collapsible.tsx","../components/ui/combobox.tsx","../components/ui/input-group.tsx","../components/ui/input.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/separator.tsx","../components/ui/form.tsx","../components/ui/hover-card.tsx","../components/ui/input-otp.tsx","../components/ui/item.tsx","../components/ui/kbd.tsx","../components/ui/link.tsx","../components/ui/menubar.tsx","../components/ui/native-select.tsx","../components/ui/navigation-button.tsx","../components/ui/navigation-menu.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/toast.tsx","../components/ui/stepper.tsx","../components/ui/switch.tsx","../components/ui/table.tsx","../components/ui/tabs.tsx","../components/ui/ticket-card.tsx","../components/ui/toggle.tsx","../components/ui/toggle-group.tsx","../components/blocks/result-block.tsx","../components/blocks/header-navigation-block.tsx","../components/blocks/faq-block.tsx","../components/blocks/hero-block.tsx","../components/blocks/auth-block.tsx","../components/blocks/navbar-block.tsx","../components/blocks/open-positions-block.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\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 text-on-subtle transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\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\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport {\n AlertTriangle,\n CheckCircle2,\n Info,\n X,\n XCircle,\n} from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Types */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype AlertVariant = \"info\" | \"warning\" | \"danger\" | \"success\"\n\ntype AlertLayout = \"inline\" | \"card\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Variants */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\n/**\n * Per-variant surface, title, and accent classes. Description and close X are\n * applied via dedicated slot classes below — they're not part of the cva root\n * because they target descendant elements.\n */\nconst alertVariants = cva(\n \"grid w-full rounded-sm\",\n {\n variants: {\n variant: {\n info: \"bg-semantic-info/10\",\n warning: \"bg-semantic-warning/10\",\n danger: \"bg-semantic-error/10\",\n success: \"bg-semantic-win/10\",\n },\n layout: {\n // Inline is mobile-first: 3 columns × 2 rows so a long title can wrap and the\n // action button drops below the body. At sm+ (640px) it collapses to a single\n // row of 4 columns (icon · body · action · close).\n inline:\n \"grid-cols-[auto_1fr_auto] grid-rows-[auto_auto] items-start gap-x-3 gap-y-3 px-4 py-4 sm:grid-cols-[auto_1fr_auto_auto] sm:grid-rows-1\",\n card: \"grid-cols-[auto_1fr_auto] grid-rows-[auto_auto] items-start gap-x-3 gap-y-2 px-4 py-4\",\n },\n },\n defaultVariants: {\n variant: \"info\",\n layout: \"inline\",\n },\n },\n)\n\n/**\n * Class applied when the inline alert is single-line (only title or only description).\n * `min-h-12` keeps the resting height at 48px when content fits; the container is\n * free to grow when text wraps on narrow viewports so it never overflows. `py-2`\n * (8px vertical) keeps the text comfortably off the top/bottom edges when growth\n * does happen on small screens, while still landing at exactly 48px when content\n * fits in one line.\n */\nconst SINGLE_LINE_CLASSES =\n \"items-center min-h-12 py-2 gap-y-0\"\n\n/**\n * Title color — uniform `text-on-prominent` (black) across every variant so\n * the title reads with consistent weight. The leading icon alone carries the\n * severity colour signal.\n */\nconst TITLE_CLASSES: Record<AlertVariant, string> = {\n info: \"text-on-prominent\",\n warning: \"text-on-prominent\",\n danger: \"text-on-prominent\",\n success: \"text-on-prominent\",\n}\n\n/** Icon color per variant — the only place severity shows up as colour. */\nconst ICON_CLASSES: Record<AlertVariant, string> = {\n info: \"text-semantic-info\",\n warning: \"text-semantic-warning\",\n danger: \"text-semantic-error\",\n success: \"text-semantic-win\",\n}\n\n/** Description color — neutral across every variant. */\nconst DESC_CLASSES: Record<AlertVariant, string> = {\n info: \"text-on-subtle\",\n warning: \"text-on-subtle\",\n danger: \"text-on-subtle\",\n success: \"text-on-subtle\",\n}\n\n/**\n * Close X color — neutral gray on every variant. The X reads as a generic\n * dismiss affordance, not a status signal, so it stays out of the accent\n * palette.\n */\nconst CLOSE_CLASSES: Record<AlertVariant, string> = {\n info: \"text-on-subtle opacity-70\",\n warning: \"text-on-subtle opacity-70\",\n danger: \"text-on-subtle opacity-70\",\n success: \"text-on-subtle opacity-70\",\n}\n\n/** Default per-variant leading icon. Pass `icon={null}` to omit; pass any ReactNode to override. */\nfunction defaultIconForVariant(variant: AlertVariant): React.ReactNode {\n switch (variant) {\n case \"info\":\n return <Info />\n case \"warning\":\n return <AlertTriangle />\n case \"danger\":\n return <XCircle />\n case \"success\":\n return <CheckCircle2 />\n }\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Props */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ninterface AlertProps\n extends Omit<React.ComponentProps<\"div\">, \"title\">,\n VariantProps<typeof alertVariants> {\n /** Surface + accent variant. */\n variant?: AlertVariant\n /** Layout shape. */\n layout?: AlertLayout\n /** Title text. At least one of `title` or `description` is required. */\n title?: React.ReactNode\n /** Description / supporting text. At least one of `title` or `description` is required. */\n description?: React.ReactNode\n /**\n * Leading icon. When `undefined`, the default for the variant is used.\n * Pass `null` to omit the icon entirely. Pass any `ReactNode` to override.\n */\n icon?: React.ReactNode | null\n /** Single action button — honoured only when `layout=\"inline\"`. */\n action?: React.ReactNode\n /** Up to 2 action buttons — honoured only when `layout=\"card\"`. */\n actions?: React.ReactNode[]\n /**\n * When provided, the close X renders and calls this on click. Absence\n * means the alert is not user-dismissible.\n */\n onDismiss?: () => void\n /** aria-label for the close button. Defaults to \"Dismiss\". */\n dismissLabel?: string\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Component */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction Alert({\n variant = \"info\",\n layout = \"inline\",\n title,\n description,\n icon,\n action,\n actions,\n onDismiss,\n dismissLabel = \"Dismiss\",\n className,\n ...props\n}: AlertProps) {\n // At least one of title or description must be supplied.\n if (!title && !description) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n \"Alert: requires at least one of `title` or `description`. Rendering null.\",\n )\n }\n return null\n }\n\n const isInline = layout === \"inline\"\n const isSingleLine = isInline && !(title && description)\n const showIcon = icon !== null\n const resolvedIcon = icon === undefined ? defaultIconForVariant(variant) : icon\n const showCloseButton = typeof onDismiss === \"function\"\n // All Alert variants use the standard Secondary button. (Promotional surfaces\n // that need the primary-inverse button live on `Banner` instead.)\n const buttonVariant = \"secondary\" as const\n const isAssertive = variant === \"danger\" || variant === \"warning\"\n const role = isAssertive ? \"alert\" : \"status\"\n const ariaLive = isAssertive ? \"assertive\" : \"polite\"\n\n // Dev-only warnings for layout/slot mismatches.\n if (process.env.NODE_ENV !== \"production\") {\n if (isInline && actions && actions.length > 0) {\n console.warn(\n 'Alert: `actions` is ignored when layout=\"inline\". Use `action` instead.',\n )\n }\n if (!isInline && action) {\n console.warn(\n 'Alert: `action` is ignored when layout=\"card\". Use `actions` instead.',\n )\n }\n }\n\n /** The body: title + optional description. */\n const body = (\n <div className=\"min-w-0\">\n {title ? (\n <p\n className={cn(\n // Mobile-first: 13/11px scale so narrow viewports breathe. sm+ bumps to\n // 14/12px which lines up with the rest of the design system's body sizes.\n \"text-[13px] font-semibold leading-snug sm:text-sm\",\n TITLE_CLASSES[variant],\n description ? \"mb-2\" : \"mb-0\",\n )}\n >\n {title}\n </p>\n ) : null}\n {description ? (\n <p\n className={cn(\n \"text-[11px] leading-snug m-0 sm:text-xs\",\n DESC_CLASSES[variant],\n )}\n >\n {description}\n </p>\n ) : null}\n </div>\n )\n\n /** The dismiss (close X) button. */\n const closeButton = showCloseButton ? (\n <button\n type=\"button\"\n onClick={onDismiss}\n aria-label={dismissLabel}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center rounded-xs size-6 cursor-pointer outline-none transition-opacity hover:opacity-100 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [&_svg]:size-4 [&_svg]:pointer-events-none\",\n // tuck the close into the top-right corner for the multi-line cases\n isSingleLine ? \"\" : \"-mt-1 -mr-1\",\n CLOSE_CLASSES[variant],\n )}\n >\n <X />\n </button>\n ) : null\n\n /** The leading icon column. */\n const iconColumn = showIcon ? (\n <div\n aria-hidden\n className={cn(\n \"inline-flex shrink-0 size-4 [&_svg]:size-full\",\n // Single-line: grid is items-center so the icon centers automatically.\n // Multi-line / card: top-aligned with the title cap-height via a 2px\n // (mt-0.5) optical nudge so the icon reads as introducing the message\n // header, not floating between title and description.\n isSingleLine ? \"\" : \"mt-0.5\",\n ICON_CLASSES[variant],\n )}\n >\n {resolvedIcon}\n </div>\n ) : null\n\n if (isInline) {\n return (\n <div\n role={role}\n aria-live={ariaLive}\n data-slot=\"alert\"\n data-variant={variant}\n data-layout=\"inline\"\n className={cn(\n alertVariants({ variant, layout }),\n isSingleLine ? SINGLE_LINE_CLASSES : \"\",\n className,\n )}\n {...props}\n >\n {/* icon — col 1 row 1, both breakpoints */}\n {iconColumn}\n {/* body — col 2 row 1, both breakpoints */}\n <div className=\"col-start-2 row-start-1 min-w-0\">{body}</div>\n {/* close X — col 3 row 1 on mobile, col 4 row 1 on desktop (always top-right) */}\n <div className=\"col-start-3 row-start-1 sm:col-start-4 sm:row-start-1\">\n {closeButton}\n </div>\n {/* action — col 2 row 2 (under body) on mobile; col 3 row 1 (inline) on desktop.\n justify-self-start on mobile keeps the button left-aligned under the body. */}\n {action ? (\n <div className=\"col-start-2 row-start-2 justify-self-start sm:col-start-3 sm:row-start-1 sm:self-center sm:justify-self-end\">\n {wrapAction(action, buttonVariant)}\n </div>\n ) : null}\n </div>\n )\n }\n\n // Card layout\n return (\n <div\n role={role}\n aria-live={ariaLive}\n data-slot=\"alert\"\n data-variant={variant}\n data-layout=\"card\"\n className={cn(\n alertVariants({ variant, layout }),\n className,\n )}\n {...props}\n >\n {iconColumn}\n <div className=\"col-start-2 row-start-1 min-w-0\">{body}</div>\n <div className=\"col-start-3 row-start-1\">{closeButton}</div>\n {actions && actions.length > 0 ? (\n <div className=\"col-span-3 col-start-2 row-start-2 mt-2 flex flex-wrap items-center justify-start gap-2\">\n {actions.slice(0, 2).map((node, i) => (\n <React.Fragment key={i}>{wrapAction(node, buttonVariant)}</React.Fragment>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\n/**\n * Normalize an action node. React elements (e.g. `<Button>`, `<Link>`) pass through\n * untouched — callers can use them directly to control variant, size, and event\n * handlers. Primitives (`string`, `number`) get wrapped in a `Button` at `size=\"sm\"`\n * with the variant chosen for the current Alert variant. Anything else\n * (`null`/`undefined`/booleans/arrays) renders as-is, matching React's defaults.\n */\nfunction wrapAction(\n node: React.ReactNode,\n variant: \"primary-inverse\" | \"secondary\",\n): React.ReactNode {\n // If it already looks like a React element (e.g. <Button>...), pass through.\n if (React.isValidElement(node)) return node\n // Otherwise wrap in a Button at size=\"sm\".\n return (\n <Button variant={variant} size=\"sm\">\n {node}\n </Button>\n )\n}\n\nexport { Alert, alertVariants }\nexport type {\n AlertProps,\n AlertVariant,\n AlertLayout,\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 { Spinner } from \"./spinner\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-[color,border-color,opacity,box-shadow,transform] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:opacity-60 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-bold\",\n {\n variants: {\n variant: {\n // Primary brand blue (#2323FF)\n primary:\n \"bg-primary text-on-primary hover:bg-primary-hover\",\n // Primary Inverse — white bg + blue text; for use on dark/coloured surfaces\n \"primary-inverse\":\n \"bg-primary-inverse text-on-primary-inverse hover:bg-primary-inverse/80\",\n // Primary Shimmer — same surface as `primary` plus a sweeping\n // white shimmer overlay (same animation as the TicketCard deposit\n // stub). Use for headline CTAs that need to draw the eye.\n \"primary-shimmer\":\n \"relative overflow-hidden bg-primary text-on-primary hover:bg-primary-hover\",\n // Primary Inverse Shimmer — same surface as `primary-inverse` plus\n // a sweeping brand-blue shimmer (white shimmer would be invisible\n // on the white surface). For headline CTAs on dark/coloured pages.\n \"primary-inverse-shimmer\":\n \"relative overflow-hidden bg-primary-inverse text-on-primary-inverse hover:bg-primary-inverse/80\",\n secondary:\n \"bg-transparent border-[1.5px] border-border-prominent text-on-prominent hover:bg-secondary-hover\",\n // Secondary Inverse — white border + white text; for use on dark/coloured surfaces\n \"secondary-inverse\":\n \"bg-transparent border-[1.5px] border-primary-inverse text-on-prominent-inverse hover:bg-primary-inverse/10\",\n tertiary:\n \"bg-transparent text-primary hover:bg-primary/[0.08]\",\n // Tertiary Inverse — transparent + white text/icon; for use on dark/coloured surfaces\n \"tertiary-inverse\":\n \"bg-transparent text-on-primary hover:bg-on-primary/[0.10]\",\n },\n size: {\n lg: \"h-12 w-fit gap-3 rounded-xs px-6 py-[14px] text-base [&_svg:not([class*='size-'])]:size-4\",\n md: \"h-10 w-fit gap-2 rounded-xs px-4 py-3 text-sm [&_svg:not([class*='size-'])]:size-4\",\n sm: \"h-8 w-fit gap-1 rounded-xs px-3 py-2 text-xs [&_svg:not([class*='size-'])]:size-[14px]\",\n xs: \"h-6 w-fit gap-1 rounded-xs px-2 py-1.5 text-xs [&_svg:not([class*='size-'])]:size-3\",\n icon: \"size-12 rounded-xs [&_svg:not([class*='size-'])]:size-4\",\n \"icon-lg\": \"size-12 rounded-xs [&_svg:not([class*='size-'])]:size-4\",\n \"icon-md\": \"size-10 rounded-xs [&_svg:not([class*='size-'])]:size-4\",\n \"icon-sm\": \"size-8 rounded-xs [&_svg:not([class*='size-'])]:size-[14px]\",\n \"icon-xs\": \"size-6 rounded-xs [&_svg:not([class*='size-'])]:size-3\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"lg\",\n },\n }\n)\n\nconst spinnerSizeMap: Record<string, string> = {\n lg: \"size-5\",\n md: \"size-4\",\n sm: \"size-3.5\",\n xs: \"size-3\",\n icon: \"size-4\",\n \"icon-lg\": \"size-4\",\n \"icon-md\": \"size-4\",\n \"icon-sm\": \"size-3.5\",\n \"icon-xs\": \"size-3\",\n}\n\n/**\n * Per-variant shimmer gradients. The animation keyframes (`stub-shimmer`)\n * live in `src/styles.css` and translate the gradient from -100% to 100%\n * horizontally. The gradient is mostly transparent, with a brighter band\n * in the middle that sweeps across the surface.\n *\n * primary-shimmer → white-30% sweep over the brand-blue surface\n * primary-inverse-shimmer → brand-blue-20% sweep over the white surface\n * (a white sweep would be invisible on white)\n */\nconst shimmerGradients: Record<string, string> = {\n // 110° tilts the bright band forward so the sweep reads as a diagonal\n // shine. Three stops around 50% (soft → mid → soft) shape the highlight\n // like a polished-metal gleam without going too bright at the peak.\n \"primary-shimmer\":\n \"linear-gradient(110deg, transparent 20%, rgba(255,255,255,0.10) 40%, rgba(255,255,255,0.20) 50%, rgba(255,255,255,0.10) 60%, transparent 80%)\",\n \"primary-inverse-shimmer\":\n \"linear-gradient(110deg, transparent 20%, rgba(35,35,255,0.07) 40%, rgba(35,35,255,0.14) 50%, rgba(35,35,255,0.07) 60%, transparent 80%)\",\n}\n\nfunction Button({\n className,\n variant = \"primary\",\n size = \"lg\",\n asChild = false,\n loading = false,\n children,\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(\n buttonVariants({ variant, size, className }),\n loading && \"pointer-events-none opacity-24 relative\",\n )}\n aria-busy={loading || undefined}\n {...props}\n >\n {/* Shimmer sweep — rendered before children so the icon/label paint\n over the (mostly-transparent) gradient. Suppressed while loading\n or disabled so the button still reads as inert. */}\n {variant && shimmerGradients[variant] && !loading && !props.disabled ? (\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-0 [animation:button-shimmer_4s_linear_infinite]\"\n style={{ background: shimmerGradients[variant] }}\n />\n ) : null}\n {loading ? (\n <>\n <span className=\"invisible inline-flex items-center gap-[inherit]\" aria-hidden>\n {children}\n </span>\n <span className=\"absolute inset-0 flex items-center justify-center\">\n <Spinner className={spinnerSizeMap[size ?? \"lg\"]} />\n </span>\n </>\n ) : children}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\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: \"currentColor\",\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","\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 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 AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n \"group/alert-dialog-content fixed top-[50%] left-[50%] z-50 flex h-auto w-full max-w-[calc(100%-2rem)] flex-col translate-x-[-50%] translate-y-[-50%] gap-6 rounded-sm border border-border-subtle bg-prominent p-6 shadow-lg duration-base data-[size=sm]:max-w-xs 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 data-[size=default]:sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n \"text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-sm text-on-subtle\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-16 items-center justify-center rounded-md bg-subtle sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n variant = \"primary\",\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <Button variant={variant} size={size} asChild className={cn(\"group-data-[size=sm]/alert-dialog-content:w-full\", className)}>\n <AlertDialogPrimitive.Action\n data-slot=\"alert-dialog-action\"\n {...props}\n />\n </Button>\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"tertiary\",\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <Button variant={variant} size={size} asChild className={cn(\"group-data-[size=sm]/alert-dialog-content:w-full\", className)}>\n <AlertDialogPrimitive.Cancel\n data-slot=\"alert-dialog-cancel\"\n {...props}\n />\n </Button>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\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-subtle text-sm text-on-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-on-primary ring-2 ring-prominent 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-prominent\",\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-subtle text-sm text-on-subtle ring-2 ring-prominent 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 badgeVariants = cva(\n \"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent text-xs font-display font-semibold whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:pointer-events-none [&>svg]:size-3\",\n {\n variants: {\n variant: {\n // Default (solid)\n default: \"bg-primary text-on-primary [a&]:hover:bg-primary/90\",\n // Standard (neutral chip — for non-status meta like contract type, duration)\n standard: \"bg-subtle text-on-prominent [a&]:hover:bg-subtle/80\",\n \"default-success\": \"bg-semantic-win text-on-semantic-win [a&]:hover:bg-semantic-win/90\",\n \"default-fail\": \"bg-semantic-loss text-on-semantic-loss [a&]:hover:bg-semantic-loss/90\",\n \"default-warning\": \"bg-semantic-warning text-on-semantic-warning [a&]:hover:bg-semantic-warning/90\",\n // Fill (tint)\n fill: \"bg-primary/10 border-transparent text-primary\",\n \"fill-success\": \"bg-semantic-win/10 border-transparent text-semantic-win\",\n \"fill-fail\": \"bg-semantic-loss/10 border-transparent text-semantic-loss\",\n \"fill-warning\": \"bg-semantic-warning/10 border-transparent text-semantic-warning\",\n \"fill-credit\": \"bg-semantic-boost-surface backdrop-blur-md text-on-primary\",\n // Demo / test-mode flag — opaque light-peach surface + red-orange text.\n // Uses --semantic-demo-surface (a solid color-mix of demo @ 10% with white)\n // so the badge looks identical on any background.\n \"fill-demo\": \"bg-semantic-demo-surface border-transparent text-semantic-demo\",\n // Ghost (transparent)\n ghost: \"bg-transparent border-transparent text-primary [a&]:hover:bg-secondary-hover [a&]:hover:text-primary\",\n \"ghost-success\": \"bg-transparent border-transparent text-semantic-win [a&]:hover:bg-semantic-win/10 [a&]:hover:text-semantic-win\",\n \"ghost-fail\": \"bg-transparent border-transparent text-semantic-loss [a&]:hover:bg-semantic-loss/10 [a&]:hover:text-semantic-loss\",\n \"ghost-warning\": \"bg-transparent border-transparent text-semantic-warning [a&]:hover:bg-semantic-warning/10 [a&]:hover:text-semantic-warning\",\n },\n size: {\n sm: \"h-6 px-2.5 py-0.5 text-xs\",\n md: \"h-8 px-3 py-1 text-sm\",\n lg: \"h-10 px-4 py-1.5 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n size = \"md\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Gift, X } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Types */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype BannerLayout = \"inline\" | \"card\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Shared surface styling */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\n/**\n * Banner surface — both inline and card layouts share this background,\n * border, radius, and padding.\n *\n * background: rgba(35, 35, 255, 0.08) // var(--primary) @ 8% opacity\n * border: rgba(35, 35, 255, 0.16) // var(--primary) @ 16% opacity\n *\n * Token-driven via Tailwind's opacity modifier so the surface tracks\n * `--primary` automatically.\n */\nconst SURFACE_CLASSES =\n \"w-full rounded-sm border border-primary/[0.16] bg-primary/[0.08] px-4 py-3.5\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Default badged icon */\n/* 40px brand-blue circle with a white glyph inside. */\n/* The badge container is fixed; the glyph is consumer-controlled via the */\n/* `glyph` prop. Defaults to `<Gift className=\"size-5\" />`. To override the */\n/* entire badge (including the surrounding container), pass `icon` instead. */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction IconBadge({ glyph }: { glyph: React.ReactNode }) {\n return (\n <span className=\"inline-flex size-10 shrink-0 items-center justify-center rounded-full bg-primary text-on-primary\">\n {glyph}\n </span>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Props */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ninterface BannerProps extends Omit<React.ComponentProps<\"div\">, \"title\" | \"onClick\"> {\n /** Layout shape. */\n layout?: BannerLayout\n /** Title text. At least one of `title` or `description` is required. */\n title?: React.ReactNode\n /** Description / supporting text. At least one of `title` or `description` is required. */\n description?: React.ReactNode\n /**\n * The glyph that sits **inside** the default brand-blue badge. Defaults to\n * `<Gift className=\"size-5\" />`. Pass any lucide icon (or other ~20-24px\n * element) to swap the glyph while keeping the badge styling consistent.\n * Ignored when `icon` is also set (which overrides the whole badge).\n */\n glyph?: React.ReactNode\n /**\n * Full leading-icon override. When set, the consumer's JSX replaces the\n * **entire** default badge — no brand-blue wrapper is rendered. Pass\n * `null` to omit the icon column entirely. Leave undefined to use the\n * default brand badge (with `glyph` inside).\n */\n icon?: React.ReactNode | null\n /**\n * Single action button — honoured only when `layout=\"inline\"`.\n * Strings get wrapped in a primary Button. Pass a `<Button>` element\n * to control variant/size yourself.\n */\n action?: React.ReactNode\n /**\n * Up to 2 action buttons — honoured only when `layout=\"card\"`.\n * Strings get wrapped — first one becomes Secondary, second becomes\n * Primary (the visually dominant CTA). Pass `<Button>` elements to\n * control variants explicitly.\n */\n actions?: React.ReactNode[]\n /**\n * When provided, the close X renders and calls this on click. Absence\n * means the banner is not user-dismissible. Clicking the close X stops\n * propagation so it never fires the banner-level `onClick`.\n */\n onDismiss?: () => void\n /** aria-label for the close button. Defaults to \"Dismiss\". */\n dismissLabel?: string\n /**\n * Makes the entire banner surface a single click target — the whole\n * banner becomes the CTA. Mutually exclusive with `action` / `actions`:\n * if you set this AND pass buttons, the buttons are ignored and a dev\n * warning is logged.\n */\n onClick?: () => void\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Component */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction Banner({\n layout = \"inline\",\n title,\n description,\n glyph,\n icon,\n action,\n actions,\n onDismiss,\n dismissLabel = \"Dismiss\",\n onClick,\n className,\n ...props\n}: BannerProps) {\n if (!title && !description) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n \"Banner: requires at least one of `title` or `description`. Rendering null.\",\n )\n }\n return null\n }\n\n const isInline = layout === \"inline\"\n const showIcon = icon !== null\n // Icon resolution:\n // icon === null → no icon at all (showIcon = false above)\n // icon set → full override; renders consumer's JSX as-is\n // icon undefined → default brand badge wrapping `glyph` (defaults\n // to <Gift className=\"size-5\" />)\n const resolvedIcon =\n icon === undefined ? (\n <IconBadge glyph={glyph ?? <Gift className=\"size-5\" />} />\n ) : (\n icon\n )\n\n if (process.env.NODE_ENV !== \"production\" && icon !== undefined && glyph !== undefined) {\n console.warn(\n \"Banner: `glyph` is ignored when `icon` is also set. `icon` overrides the entire badge; `glyph` only swaps the inner icon of the default badge.\",\n )\n }\n const showCloseButton = typeof onDismiss === \"function\"\n const isClickable = typeof onClick === \"function\"\n\n const buttonsSuppressed =\n isClickable && (Boolean(action) || (actions?.length ?? 0) > 0)\n\n if (process.env.NODE_ENV !== \"production\") {\n if (isInline && actions && actions.length > 0) {\n console.warn(\n 'Banner: `actions` is ignored when layout=\"inline\". Use `action` instead.',\n )\n }\n if (!isInline && action) {\n console.warn(\n 'Banner: `action` is ignored when layout=\"card\". Use `actions` instead.',\n )\n }\n if (buttonsSuppressed) {\n console.warn(\n \"Banner: `onClick` (clickable surface) is mutually exclusive with `action` / `actions`. Ignoring the buttons — the whole banner is the CTA.\",\n )\n }\n }\n\n const effectiveAction = isClickable ? undefined : action\n const effectiveActions = isClickable ? undefined : actions\n\n const clickableClasses = isClickable\n ? \"cursor-pointer transition-opacity hover:opacity-90 active:opacity-80 outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:ring-offset-2\"\n : \"\"\n\n const handleKeyDown = isClickable\n ? (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n onClick?.()\n }\n }\n : undefined\n\n const interactiveProps = isClickable\n ? {\n role: \"button\" as const,\n tabIndex: 0,\n onClick,\n onKeyDown: handleKeyDown,\n }\n : {}\n\n /** Body — title (bold) + optional sub-line (12px / medium / on-subtle). */\n const body = (\n <div className=\"min-w-0 flex-1\">\n {title ? (\n <p className=\"m-0 text-sm font-bold leading-snug text-on-prominent [&>b]:text-primary\">\n {title}\n </p>\n ) : null}\n {description ? (\n <p className=\"m-0 mt-0.5 text-xs font-medium leading-snug text-on-subtle\">\n {description}\n </p>\n ) : null}\n </div>\n )\n\n /** Dismiss (close X) — 32px square, gray icon, hover swap to subtle bg. */\n const closeButton = showCloseButton ? (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onDismiss?.()\n }}\n aria-label={dismissLabel}\n className=\"inline-flex size-8 shrink-0 items-center justify-center rounded-xs cursor-pointer text-on-subtle outline-none transition-colors hover:bg-secondary-hover hover:text-on-prominent focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [&_svg]:size-4 [&_svg]:pointer-events-none\"\n >\n <X />\n </button>\n ) : null\n\n /** Leading icon — consumer JSX, no size constraint. A 1px downward\n * translate optically centers the icon against the bold title glyph\n * (the title's geometric line-box center sits ~1.5px above the cap\n * vertical-centre, so a flat `items-center` looks slightly off). */\n const iconColumn = showIcon ? (\n <div aria-hidden className=\"inline-flex shrink-0 translate-y-px\">\n {resolvedIcon}\n </div>\n ) : null\n\n /* ── Inline layout ───────────────────────────────────────────────────\n * No action: a single row (icon · body · close), no reserved row 2.\n * With action on mobile: 2 rows so the body can wrap and the action\n * drops underneath, instead of squeezing the title to one word per\n * line.\n * Desktop (sm+): always collapses to a single row of 4 columns\n * (icon · body · action · close).\n * ─────────────────────────────────────────────────────────────────── */\n if (isInline) {\n const hasAction = Boolean(effectiveAction)\n const hasDescription = Boolean(description)\n // Only declare row 2 + the row gap when there's actually something to\n // put there — otherwise grid + gap-y leaves dead space at the bottom.\n const rowTemplate = hasAction\n ? \"grid-rows-[auto_auto] gap-y-3 sm:grid-rows-1 sm:gap-y-0\"\n : \"grid-rows-1 gap-y-0\"\n\n // Multi-line banners (description present) anchor the close button to\n // the top-right CORNER via absolute positioning so the corner reads as\n // \"close this surface\". Single-line keeps the close in the grid,\n // vertically centred with the title row. Action stays in its original\n // grid slot in both cases (row 2 mobile, inline-right desktop).\n const gridCols = hasDescription\n ? \"grid-cols-[auto_1fr] sm:grid-cols-[auto_1fr_auto]\"\n : \"grid-cols-[auto_1fr_auto] sm:grid-cols-[auto_1fr_auto_auto]\"\n\n return (\n <div\n data-slot=\"banner\"\n data-layout=\"inline\"\n data-clickable={isClickable ? \"true\" : undefined}\n className={cn(\n \"grid gap-x-4\",\n // Single-line banners vertically-centre the row (icon + title);\n // multi-line banners top-align so the leading icon sits next to\n // the title instead of floating mid-body.\n hasDescription ? \"items-start\" : \"items-center\",\n gridCols,\n rowTemplate,\n SURFACE_CLASSES,\n hasDescription && \"relative pr-12\",\n clickableClasses,\n className,\n )}\n {...interactiveProps}\n {...props}\n >\n {/* icon — col 1, row 1 on both breakpoints */}\n <div className=\"col-start-1 row-start-1\">{iconColumn}</div>\n {/* body — col 2, row 1 on both breakpoints */}\n <div className=\"col-start-2 row-start-1 min-w-0\">{body}</div>\n {/* close X — pinned to the top-right corner for multi-line banners,\n else lives in the grid (col 3 mobile, col 4 desktop). */}\n {hasDescription ? (\n <div className=\"absolute top-3 right-3\">{closeButton}</div>\n ) : (\n <div className=\"col-start-3 row-start-1 self-center sm:col-start-4\">{closeButton}</div>\n )}\n {/* action — col 2, row 2 (under body, left-aligned) on mobile;\n col 3, row 1 (inline, right-aligned) on desktop */}\n {hasAction ? (\n <div className=\"col-start-2 row-start-2 justify-self-start sm:col-start-3 sm:row-start-1 sm:self-center sm:justify-self-end\">\n {wrapAction(effectiveAction)}\n </div>\n ) : null}\n </div>\n )\n }\n\n /* ── Card layout — grid: icon | body on row 1, actions on row 2.\n Close pinned to top-right corner (card is always multi-row). ── */\n return (\n <div\n data-slot=\"banner\"\n data-layout=\"card\"\n data-clickable={isClickable ? \"true\" : undefined}\n className={cn(\n // Card layout is always multi-row — top-align the icon with the title.\n \"relative grid grid-cols-[auto_1fr] grid-rows-[auto_auto] items-start gap-x-4 gap-y-3\",\n SURFACE_CLASSES,\n \"pr-12\",\n clickableClasses,\n className,\n )}\n {...interactiveProps}\n {...props}\n >\n {/* Row 1 — icon | body */}\n <div className=\"col-start-1 row-start-1\">{iconColumn}</div>\n <div className=\"col-start-2 row-start-1 min-w-0\">{body}</div>\n {/* Close X — pinned to the top-right corner, outside the grid flow. */}\n <div className=\"absolute top-3 right-3\">{closeButton}</div>\n\n {/* Row 2 — actions, bottom-left under the body */}\n {effectiveActions && effectiveActions.length > 0 ? (\n <div className=\"col-start-2 row-start-2 flex flex-wrap items-center justify-start gap-2\">\n {effectiveActions.slice(0, 2).map((node, i) => (\n <React.Fragment key={i}>{wrapAction(node)}</React.Fragment>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\n/**\n * Normalize an action node. React elements pass through unchanged — so a\n * consumer can hand the Banner any `<Button variant=\"...\">` they like and\n * it will honour it. Primitives (strings, numbers) default to a Secondary\n * `Button` at `size=\"sm\"` — the calmer outlined CTA that pairs cleanly\n * with the Banner's tinted-blue surface.\n */\nfunction wrapAction(node: React.ReactNode): React.ReactNode {\n if (React.isValidElement(node)) return node\n return (\n <Button variant=\"secondary\" size=\"sm\">\n {node}\n </Button>\n )\n}\n\nexport { Banner }\nexport type { BannerProps, BannerLayout }\n","import * as React from \"react\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex flex-wrap items-center gap-1.5 text-sm break-words text-on-subtle sm:gap-2.5\",\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\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(\"transition-colors hover:text-on-prominent\", className)}\n {...props}\n />\n )\n}\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(\"font-medium text-primary\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\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\", 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","\"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 buttonVariant = \"secondary\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-prominent p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\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: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) 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-popover 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-on-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-on-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-on-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-md bg-secondary-hover\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-secondary-hover\", defaultClassNames.range_end),\n today: cn(\n \"rounded-xs data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-on-subtle aria-selected:text-on-subtle\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-on-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 bg-transparent border-transparent shadow-none text-on-prominent hover:!bg-secondary-hover hover:text-on-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-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:text-primary [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:relative [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:absolute [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:bottom-0.5 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:left-1/2 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:-translate-x-1/2 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:size-1 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:rounded-full [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:bg-primary data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-secondary-hover data-[range-end=true]:border-transparent data-[range-end=true]:text-primary data-[range-end=true]:font-bold data-[range-end=true]:hover:!bg-secondary-hover data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-secondary-hover data-[range-middle=true]:text-primary data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-secondary-hover data-[range-start=true]:border-transparent data-[range-start=true]:text-primary data-[range-start=true]:font-bold data-[range-start=true]:hover:!bg-secondary-hover data-[selected-single=true]:bg-secondary-hover data-[selected-single=true]:border-transparent data-[selected-single=true]:text-primary data-[selected-single=true]:font-bold data-[selected-single=true]:hover:!bg-secondary-hover [&>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\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"flex flex-col gap-6 rounded-sm border border-border-subtle bg-card py-6 text-card-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@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\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\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-on-subtle\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport 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","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst chipVariants = cva(\n \"inline-flex w-fit items-center justify-center rounded-full font-body whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:border disabled:border-border-subtle disabled:bg-transparent disabled:text-on-disabled\",\n {\n variants: {\n size: {\n md: \"h-10 px-4 text-sm\",\n sm: \"h-8 px-3 text-xs\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\ninterface ChipProps\n extends React.ComponentProps<\"button\">,\n VariantProps<typeof chipVariants> {\n selected?: boolean\n}\n\nfunction Chip({ children, selected = false, size, className, disabled, ...props }: ChipProps) {\n return (\n <button\n type=\"button\"\n aria-pressed={selected}\n data-slot=\"chip\"\n data-size={size}\n data-selected={selected || undefined}\n disabled={disabled}\n className={cn(\n chipVariants({ size }),\n selected\n ? \"border-[1.5px] border-primary bg-primary/10 text-primary font-semibold pointer-events-none cursor-default\"\n : \"border border-border-subtle bg-transparent text-on-prominent transition-colors hover:bg-secondary-hover active:bg-secondary-hover/80\",\n className\n )}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nexport { Chip, chipVariants }\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-border-subtle/50 bg-prominent 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-on-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-on-subtle\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium text-on-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-on-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 } from \"lucide-react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\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-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-on-primary\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\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\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\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-on-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-50\"\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-popover text-popover-foreground shadow-md ring-1 ring-border-subtle 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-on-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-on-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-on-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-subtle px-1.5 text-xs font-medium whitespace-nowrap text-on-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,\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 { Input } from \"./input\"\nimport { Textarea } from \"./textarea\"\n\ntype InputGroupSize = \"sm\" | \"md\" | \"lg\"\ntype InputGroupVariant = \"default\" | \"inverse\"\n\nconst InputGroupSizeContext = React.createContext<InputGroupSize>(\"md\")\nconst InputGroupVariantContext =\n React.createContext<InputGroupVariant>(\"default\")\n\nconst inputGroupVariants = cva(\n [\n \"group/input-group relative flex w-full items-center rounded-xs border\",\n \"transition-[color,box-shadow] outline-none min-w-0 has-[>textarea]:h-auto\",\n // Reduce input padding only on the side an addon is attached to; the\n // opposite side keeps the natural Input padding (pl-3 / pr-3 = 12 px).\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n // Focus ring (size; colour comes from the variant).\n \"has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]\",\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20\",\n ].join(\" \"),\n {\n variants: {\n // `default` is the light-surface treatment; `inverse` is the sunken\n // dark-fill treatment for coloured surfaces (mirrors `Input`).\n variant: {\n default: [\n \"border-border-subtle bg-white/5\",\n \"has-[[data-slot=input-group-control]:focus-visible]:border-primary has-[[data-slot=input-group-control]:focus-visible]:ring-primary/[0.08]\",\n ].join(\" \"),\n inverse: [\n \"border-on-primary/25 bg-input-inverse-surface\",\n \"has-[[data-slot=input-group-control]:focus-visible]:border-on-primary has-[[data-slot=input-group-control]:focus-visible]:ring-on-primary/40\",\n ].join(\" \"),\n },\n size: {\n sm: \"h-8\",\n md: \"h-10\",\n lg: \"h-12\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction InputGroup({\n className,\n variant = \"default\",\n size = \"md\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupVariants>) {\n return (\n <InputGroupVariantContext.Provider\n value={variant as InputGroupVariant}\n >\n <InputGroupSizeContext.Provider value={size as InputGroupSize}>\n <div\n data-slot=\"input-group\"\n data-variant={variant}\n data-size={size}\n role=\"group\"\n className={cn(inputGroupVariants({ variant, size }), className)}\n {...props}\n />\n </InputGroupSizeContext.Provider>\n </InputGroupVariantContext.Provider>\n )\n}\n\nconst inputGroupAddonVariants = cva(\n [\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 font-medium text-on-subtle select-none\",\n // Swap addon text/icon colour when inside an inverse group.\n \"group-data-[variant=inverse]/input-group:text-on-primary/70\",\n \"group-data-[disabled=true]/input-group:opacity-50\",\n \"[&>kbd]:rounded-[calc(var(--radius)-5px)]\",\n // Size-responsive text and icon sizing.\n \"group-data-[size=sm]/input-group:py-1 group-data-[size=sm]/input-group:text-xs\",\n \"group-data-[size=md]/input-group:text-sm\",\n \"group-data-[size=lg]/input-group:py-2 group-data-[size=lg]/input-group:text-sm\",\n // Default icon size (overridden by size variants below).\n \"[&>svg:not([class*='size-'])]:size-4\",\n \"group-data-[size=sm]/input-group:[&>svg:not([class*='size-'])]:size-3.5\",\n ].join(\" \"),\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3\",\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 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"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-2 text-on-subtle\",\n // Swap text/icon colour when inside an inverse group.\n \"group-data-[variant=inverse]/input-group:text-on-primary/70\",\n \"group-data-[size=sm]/input-group:text-xs group-data-[size=sm]/input-group:[&_svg:not([class*='size-'])]:size-3.5\",\n \"group-data-[size=md]/input-group:text-sm group-data-[size=md]/input-group:[&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[size=lg]/input-group:text-sm group-data-[size=lg]/input-group:[&_svg:not([class*='size-'])]:size-4\",\n \"[&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n size: sizeProp,\n variant: variantProp,\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\"> & {\n size?: InputGroupSize\n variant?: InputGroupVariant\n}) {\n const groupSize = React.useContext(InputGroupSizeContext)\n const groupVariant = React.useContext(InputGroupVariantContext)\n const size = sizeProp ?? groupSize\n const variant = variantProp ?? groupVariant\n return (\n <Input\n data-slot=\"input-group-control\"\n size={size}\n variant={variant}\n className={cn(\n \"h-full flex-1 rounded-none border-0 bg-transparent shadow-none 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}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst inputVariants = cva(\n [\n \"w-full min-w-0 rounded-xs border font-body transition-[color,box-shadow] outline-none\",\n \"file:inline-flex file:border-0 file:bg-transparent file:font-medium\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:ring-[3px]\",\n ].join(\" \"),\n {\n variants: {\n // `default` is the light-surface treatment; `inverse` is the sunken\n // dark-fill treatment for coloured surfaces (e.g. bg-primary).\n variant: {\n default: [\n \"border-border-subtle bg-white/5 text-on-prominent\",\n \"file:text-on-prominent\",\n \"placeholder:text-on-subtle\",\n \"selection:bg-primary selection:text-on-primary\",\n \"focus-visible:border-primary focus-visible:ring-primary/[0.08]\",\n ].join(\" \"),\n inverse: [\n \"border-on-primary/25 bg-input-inverse-surface text-on-primary\",\n \"file:text-on-primary\",\n \"placeholder:text-on-primary/45\",\n \"selection:bg-on-primary selection:text-primary\",\n \"focus-visible:border-on-primary focus-visible:ring-on-primary/40\",\n ].join(\" \"),\n },\n size: {\n sm: \"h-8 px-3 py-1 text-xs file:h-6 file:text-xs\",\n md: \"h-10 px-3 py-1 text-sm file:h-7 file:text-sm\",\n lg: \"h-12 px-4 py-2 text-base file:h-8 file:text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction Input({\n className,\n type,\n variant = \"default\",\n size = \"md\",\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\"> & VariantProps<typeof inputVariants>) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n data-variant={variant}\n data-size={size}\n className={cn(inputVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Input, inputVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"flex field-sizing-content min-h-16 w-full rounded-sm border border-border-subtle bg-white/5 px-3 py-2 text-base text-on-prominent font-body shadow-xs transition-[color,box-shadow] outline-none placeholder:text-on-subtle focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/[0.08] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\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-popover text-popover-foreground\",\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-on-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-on-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-on-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-on-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-on-prominent [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-on-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 text-on-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\"\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-50 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 ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\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-50 flex h-auto w-full max-w-[calc(100%-2rem)] flex-col translate-x-[-50%] translate-y-[-50%] gap-6 rounded-sm border border-border-subtle bg-prominent p-6 shadow-lg 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-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-prominent transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-on-subtle [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", 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-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"secondary\" size=\"md\">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-base leading-none font-semibold font-display\", 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 text-on-subtle\", 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-on-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-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border border-border-subtle bg-popover p-1 text-popover-foreground 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-50 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-border-subtle bg-popover p-1 text-popover-foreground 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-on-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-on-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 text-on-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-50 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-50 flex h-auto flex-col bg-prominent\",\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-border-subtle\",\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-lg data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=bottom]:border-border-subtle\",\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-border-subtle 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-border-subtle data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-subtle group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\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(\"font-semibold font-display text-on-prominent\", className)}\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-on-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-50 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-sm border border-border-subtle bg-popover p-1 text-popover-foreground 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-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-on-prominent 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-on-subtle data-[variant=destructive]:*:[svg]:text-destructive!\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\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-on-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 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-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-on-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 <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 text-on-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-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-on-prominent data-[inset]:pl-8 data-[state=open]:bg-secondary-hover data-[state=open]:text-on-prominent [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-on-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-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-sm border border-border-subtle bg-popover p-1 text-popover-foreground 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-2 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-subtle text-on-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-lg font-medium tracking-tight\", 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/relaxed text-on-subtle [&>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-on-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-prominent px-2 text-on-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 { Separator as SeparatorPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\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-on-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-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border border-border-subtle bg-popover p-4 text-popover-foreground 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 { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\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\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\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(\n \"relative flex h-9 w-9 items-center justify-center border border-border-subtle bg-white/5 text-sm font-body text-on-prominent shadow-xs transition-[color,box-shadow] outline-none first:rounded-l-sm last:rounded-r-sm aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[active=true]:z-10 data-[active=true]:border-primary data-[active=true]:ring-[3px] data-[active=true]:ring-primary/[0.08] data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20\",\n className\n )}\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-foreground 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 }\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\nfunction ItemGroup({\n className,\n divider = true,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /**\n * Auto-divide consecutive default-variant `Item`s with a bottom border\n * (`border-border-subtle`). The last item's bottom border is suppressed,\n * and non-default variants (`outline`, `muted`) are left untouched so\n * they don't double up with their own borders. Defaults to `true`; pass\n * `false` to opt out when the design wants flush items or uses\n * `<ItemSeparator />` manually.\n */\n divider?: boolean\n}) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n data-divider={divider ? \"true\" : undefined}\n className={cn(\n \"group/item-group flex flex-col\",\n // Divider mode: 4 px gap between items + a 1 px line drawn via\n // ::after on each non-last default item, sitting in that gap.\n // Item itself stays border-free — the line is a separate visual\n // element rather than an outline on the item.\n divider && [\n \"gap-1\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:relative\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:content-['']\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:absolute\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:-bottom-0.5\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:inset-x-4\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:h-px\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:bg-border-subtle\",\n ],\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n )\n}\n\nconst itemVariants = cva(\n \"group/item flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-instant outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-secondary-hover\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border-border-subtle text-on-prominent hover:bg-secondary-hover\",\n muted: \"bg-subtle/50\",\n },\n size: {\n default: \"gap-4 p-4\",\n sm: \"gap-2.5 px-4 py-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"div\"\n return (\n <Comp\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n className={cn(itemVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-full border bg-subtle [&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-full [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm leading-snug font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"line-clamp-2 text-sm leading-normal font-normal text-balance text-on-subtle\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n}\n","import { 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-subtle px-1 font-sans text-xs font-medium text-on-subtle select-none\",\n \"[&_svg:not([class*='size-'])]:size-3\",\n \"[[data-slot=tooltip-content]_&]:bg-border [[data-slot=tooltip-content]_&]:text-on-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 \"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 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:inline font-display font-bold normal-case text-primary underline decoration-2 underline-offset-4\",\n {\n variants: {\n size: {\n lg: \"text-base [&_svg:not([class*='size-'])]:size-4\",\n md: \"text-sm [&_svg:not([class*='size-'])]:size-4\",\n sm: \"text-xs [&_svg:not([class*='size-'])]:size-[14px]\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n)\n\nfunction Link({\n className,\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 className={cn(linkVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nexport { Link, linkVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { Menubar as MenubarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"flex h-9 items-center gap-1 rounded-md border border-border-subtle bg-prominent p-1 shadow-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n )\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-prominent data-[state=open]:bg-secondary-hover data-[state=open]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border border-border-subtle bg-popover p-1 text-popover-foreground 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]: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 </MenubarPortal>\n )\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-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 hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-prominent 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-on-subtle data-[variant=destructive]:*:[svg]:text-destructive!\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-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 checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n )\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-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 <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n )\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-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 MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"ml-auto text-xs text-on-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-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-none select-none hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-prominent data-[inset]:pl-8 data-[state=open]:bg-secondary-hover data-[state=open]:text-on-prominent\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n )\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border border-border-subtle bg-popover p-1 text-popover-foreground 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 Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n}\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-on-primary placeholder:text-on-subtle disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\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-on-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","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 navigationButtonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center bg-transparent text-on-prominent hover:bg-secondary-hover transition-all duration-fast ease-standard outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 active:opacity-60 disabled:pointer-events-none disabled:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n size: {\n lg: \"size-12 rounded-xs [&_svg:not([class*='size-'])]:size-6\",\n md: \"size-10 rounded-xs [&_svg:not([class*='size-'])]:size-5\",\n sm: \"size-8 rounded-xs [&_svg:not([class*='size-'])]:size-5\",\n xs: \"size-6 rounded-xs [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n)\n\nfunction NavigationButton({\n className,\n size = \"lg\",\n asChild = false,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof navigationButtonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"navigation-button\"\n data-size={size}\n className={cn(navigationButtonVariants({ size, className }))}\n {...props}\n >\n {children}\n </Comp>\n )\n}\n\nexport { NavigationButton, navigationButtonVariants }\n","import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { NavigationMenu as NavigationMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n )\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n )\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-prominent px-4 py-2 text-sm font-medium transition-[color,box-shadow] outline-none hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-prominent focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-secondary-hover data-[state=open]:text-on-prominent data-[state=open]:hover:bg-secondary-hover data-[state=open]:focus:bg-secondary-hover\"\n)\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-slow group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n )\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"top-0 left-0 w-full p-2 pr-2.5 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out md:absolute md:w-auto\",\n \"group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:border-border-subtle group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-base **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n \"absolute top-full left-0 isolate z-50 flex justify-center\"\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border border-border-subtle bg-popover text-popover-foreground shadow data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-prominent focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 data-[active=true]:bg-secondary-hover data-[active=true]:text-primary data-[active=true]:hover:bg-secondary-hover data-[active=true]:focus:bg-secondary-hover [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-on-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n )\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n}\n","import * as React from \"react\"\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button, type Button as ButtonType } from \"./button\"\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-1\", 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 = \"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 size-10 rounded-xs text-sm font-display font-bold uppercase whitespace-nowrap transition-[color,background-color,border-color] outline-none border\",\n isActive\n ? \"bg-primary/10 border-primary text-primary\"\n : \"bg-transparent border-transparent text-on-prominent hover:bg-secondary-hover\",\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=\"tertiary\" 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=\"tertiary\" 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\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\"flex size-10 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\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-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border border-border-subtle bg-popover p-4 text-popover-foreground 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-on-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 { Progress as ProgressPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-2xs bg-primary/20\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CircleIcon } from \"lucide-react\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"aspect-square size-4 shrink-0 rounded-full border border-input text-primary shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\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 { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\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 = \"md\",\n readOnly = false,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"md\" | \"lg\"\n readOnly?: boolean\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n data-readonly={readOnly ? \"\" : undefined}\n disabled={readOnly || props.disabled}\n className={cn(\n \"flex w-fit items-center justify-between gap-2 rounded-xs border border-input bg-prominent appearance-none whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-on-subtle data-[size=sm]:h-8 data-[size=sm]:px-3 data-[size=sm]:py-1 data-[size=sm]:text-xs data-[size=md]:h-10 data-[size=md]:px-3 data-[size=md]:py-1 data-[size=md]:text-sm data-[size=lg]:h-12 data-[size=lg]:px-4 data-[size=lg]:py-2 data-[size=lg]:text-base *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-on-subtle data-[readonly]:cursor-default data-[readonly]:opacity-100\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className={cn(\"size-4\", readOnly ? \"opacity-30\" : \"opacity-50\")} />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-sm border border-border-subtle bg-popover text-popover-foreground 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 {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] 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-2 py-1.5 text-xs text-on-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 w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-on-prominent data-[state=checked]:text-primary data-[state=checked]:font-medium 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-on-subtle *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4 text-primary\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"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\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"fixed inset-0 z-50 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 SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n showCloseButton?: boolean\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"fixed z-50 flex flex-col gap-4 bg-prominent 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-border-subtle 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-border-subtle 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-border-subtle data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n side === \"bottom\" &&\n \"inset-x-0 bottom-0 h-auto border-t border-border-subtle data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-prominent transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden 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\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\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\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"font-semibold text-on-prominent\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-sm text-on-subtle\", className)}\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-prominent\",\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-prominent 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(\n \"flex flex-col gap-2 px-layout-margin-inline py-2 group-data-[collapsible=icon]:px-2\",\n className,\n )}\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(\n \"flex flex-col gap-2 px-layout-margin-inline py-2 group-data-[collapsible=icon]:px-2\",\n className,\n )}\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(\n \"relative flex w-full min-w-0 flex-col px-layout-margin-inline py-2 group-data-[collapsible=icon]:px-2\",\n className,\n )}\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-primary/10 data-[active=true]:font-semibold data-[active=true]:text-primary data-[active=true]:hover:bg-primary/10 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-prominent 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! group-data-[collapsible=icon]:justify-center\",\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-primary/10 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-subtle\", 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 { useIsMobile } from \"../../hooks/use-mobile\"\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"./drawer\"\n\n/**\n * Internal context that lets the parent `Tooltip` tell its descendants\n * (`TooltipTrigger`, `TooltipContent`) which underlying surface to render —\n * \"tooltip\" (Radix popover on hover/focus) or \"drawer\" (vaul bottom sheet on\n * tap). Centralising the decision here guarantees all three components agree\n * on the surface in the same render, instead of each calling `useIsMobile()`\n * independently and momentarily disagreeing during the SSR→hydration flip\n * (which throws \"TooltipTrigger must be used within Tooltip\" errors).\n */\ntype TooltipMode = \"tooltip\" | \"drawer\"\nconst TooltipModeContext = React.createContext<TooltipMode>(\"tooltip\")\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 children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n const isMobile = useIsMobile()\n const mode: TooltipMode = isMobile ? \"drawer\" : \"tooltip\"\n\n if (mode === \"drawer\") {\n return (\n <TooltipModeContext.Provider value=\"drawer\">\n <Drawer>{children}</Drawer>\n </TooltipModeContext.Provider>\n )\n }\n\n return (\n <TooltipModeContext.Provider value=\"tooltip\">\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props}>\n {children}\n </TooltipPrimitive.Root>\n </TooltipModeContext.Provider>\n )\n}\n\nfunction TooltipTrigger({\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n const mode = React.useContext(TooltipModeContext)\n\n if (mode === \"drawer\") {\n return (\n <DrawerTrigger data-slot=\"tooltip-trigger\" {...props}>\n {children}\n </DrawerTrigger>\n )\n }\n\n return (\n <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props}>\n {children}\n </TooltipPrimitive.Trigger>\n )\n}\n\ntype TooltipVariant = \"default\" | \"inverse\"\n\nfunction TooltipContent({\n className,\n sideOffset = 6,\n variant = \"default\",\n title = \"Title\",\n closeLabel = \"Label\",\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n /**\n * Surface variant. `default` is the brand-blue tooltip on light surfaces.\n * `inverse` is a white surface with on-prominent (black) text — use over\n * saturated coloured surfaces (e.g. the boost badge) where a blue tooltip\n * would feel visually heavy. Only applies on desktop; mobile always uses\n * the neutral drawer surface.\n */\n variant?: TooltipVariant\n /**\n * Drawer-only: visible heading shown at the top of the mobile drawer.\n * Defaults to the placeholder string `\"Title\"` — consumers should pass\n * domain-specific text. Desktop tooltips ignore this prop.\n */\n title?: string\n /**\n * Drawer-only: text on the dismiss button at the bottom of the mobile\n * drawer (wraps a `DrawerClose`, so tapping it dismisses the drawer).\n * Defaults to the placeholder string `\"Label\"`. Desktop tooltips ignore\n * this prop.\n */\n closeLabel?: string\n}) {\n const mode = React.useContext(TooltipModeContext)\n\n // Mobile: render as a bottom-sheet drawer. Tap trigger → drawer opens and\n // persists until the user taps the scrim, swipes down, or taps the close\n // button at the bottom — much friendlier than a hover-tooltip on touch.\n // Uses the same DrawerHeader / DrawerTitle / DrawerFooter / DrawerClose\n // building blocks as the standard Drawer demo so spacing, typography and\n // dismiss-button placement stay consistent across every drawer surface.\n if (mode === \"drawer\") {\n return (\n <DrawerContent data-slot=\"tooltip-content\" data-variant={variant}>\n <DrawerHeader>\n <DrawerTitle>{title}</DrawerTitle>\n </DrawerHeader>\n <div className={cn(\"p-4 text-sm text-on-subtle\", className)}>\n {children}\n </div>\n <DrawerFooter>\n <DrawerClose asChild>\n <Button variant=\"primary\" size=\"md\">\n {closeLabel}\n </Button>\n </DrawerClose>\n </DrawerFooter>\n </DrawerContent>\n )\n }\n\n const surfaceClasses =\n variant === \"inverse\"\n ? \"bg-prominent text-on-prominent shadow-sm\"\n : \"bg-prominent-inverse text-on-prominent-inverse\"\n const arrowClasses =\n variant === \"inverse\" ? \"fill-prominent\" : \"fill-prominent-inverse\"\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 max-w-xs origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md border-0 px-3 py-1.5 has-[[data-slot=kbd]]:px-3.5 has-[[data-slot=kbd]]:py-2 has-[[data-slot=kbd]]:space-y-1.5 text-sm font-medium text-balance whitespace-normal 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 surfaceClasses,\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className={arrowClasses} />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\nexport type { TooltipVariant }\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 ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 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-subtle data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"absolute bg-slider-range data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"block size-4 shrink-0 rounded-[4px] border-0 bg-primary ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","\"use client\"\n\nimport {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, toast, type ToasterProps } from \"sonner\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n const isMobile = useIsMobile()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n position={isMobile ? \"top-center\" : \"bottom-right\"}\n visibleToasts={isMobile ? 1 : 3}\n duration={4000}\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n toastOptions={{\n classNames: {\n toast: \"!bg-[var(--prominent-inverse)] !border-none\",\n title: \"!text-[var(--on-prominent-inverse)] !font-display !font-bold\",\n description: \"!text-[var(--on-prominent-inverse)] !opacity-60 !font-body\",\n actionButton: \"!bg-[var(--primary-inverse)] !text-[var(--on-primary-inverse)]\",\n },\n }}\n style={\n {\n \"--normal-bg\": \"var(--prominent-inverse)\",\n \"--normal-text\": \"var(--on-prominent-inverse)\",\n \"--normal-border\": \"transparent\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Toaster, toast }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Minus, Plus } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n} from \"./input-group\"\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\ntype StepperSize = \"sm\" | \"md\" | \"lg\"\n\nconst stepperSizeConfig: Record<\n StepperSize,\n { container: string; buttonSize: \"icon-xs\" | \"icon-sm\"; iconClass: string }\n> = {\n sm: { container: \"h-8\", buttonSize: \"icon-xs\", iconClass: \"size-3\" },\n md: { container: \"h-10\", buttonSize: \"icon-xs\", iconClass: \"size-3.5\" },\n lg: { container: \"h-12\", buttonSize: \"icon-sm\", iconClass: \"size-4\" },\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 size?: StepperSize\n disabled?: boolean\n placeholder?: string\n className?: string\n id?: string\n name?: string\n \"aria-label\"?: string\n}\n\nfunction Stepper({\n value: controlledValue,\n defaultValue = 0,\n onValueChange,\n min = -Infinity,\n max = Infinity,\n step = 1,\n size = \"md\",\n disabled,\n placeholder,\n className,\n id,\n name,\n \"aria-label\": ariaLabel,\n}: StepperProps) {\n const { container, buttonSize, iconClass } = stepperSizeConfig[size]\n const isControlled = controlledValue !== undefined\n const [internalValue, setInternalValue] = React.useState(\n clamp(defaultValue, min, max)\n )\n const currentValue = isControlled ? controlledValue : internalValue\n const decimalPlaces = getDecimalPlaces(step)\n\n const [displayString, setDisplayString] = React.useState(\n formatValue(currentValue, decimalPlaces)\n )\n const [isFocused, setIsFocused] = React.useState(false)\n\n // Sync display string when controlled value changes externally (not while typing)\n React.useEffect(() => {\n if (!isFocused) {\n setDisplayString(formatValue(currentValue, decimalPlaces))\n }\n }, [currentValue, decimalPlaces, isFocused])\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 const parsed = parseFloat(displayString)\n if (Number.isNaN(parsed)) {\n setDisplayString(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 return (\n <InputGroup\n data-slot=\"stepper\"\n data-disabled={disabled || undefined}\n className={cn(\"w-32\", container, className)}\n >\n <InputGroupAddon align=\"inline-start\">\n <InputGroupButton\n size={buttonSize}\n variant=\"secondary\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Minus className={iconClass} />\n </InputGroupButton>\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 <InputGroupAddon align=\"inline-end\">\n <InputGroupText className=\"font-normal text-on-subtle\">\n USDT\n </InputGroupText>\n <InputGroupButton\n size={buttonSize}\n variant=\"secondary\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Plus className={iconClass} />\n </InputGroupButton>\n </InputGroupAddon>\n </InputGroup>\n )\n}\n\nexport { Stepper }\nexport type { StepperProps, StepperSize }\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 inline-flex shrink-0 items-center rounded-full border border-transparent p-[3px] shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-6 data-[size=default]:w-11 data-[size=sm]:h-5 data-[size=sm]:w-9 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\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-prominent ring-0 transition-transform group-data-[size=default]/switch:size-[18px] group-data-[size=sm]/switch:size-[14px] data-[state=checked]:translate-x-[calc(100%+1px)] data-[state=unchecked]:translate-x-0\"\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-subtle/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-subtle/50 data-[state=selected]:bg-subtle\",\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-on-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-on-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\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"group/tabs flex gap-2 data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"group/tabs-list inline-flex w-fit items-center justify-center text-on-subtle group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none has-[[data-icon-position=top]]:h-auto\",\n {\n variants: {\n variant: {\n default: \"bg-tabs\",\n line: \"gap-1 bg-transparent\",\n },\n size: {\n sm: \"h-8 rounded-md p-[2px]\",\n md: \"h-10 rounded-lg p-1\",\n lg: \"h-12 rounded-xl p-1.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n data-size={size}\n className={cn(tabsListVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n iconPosition = \"inline\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger> & {\n iconPosition?: \"inline\" | \"top\"\n}) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n data-icon-position={iconPosition}\n className={cn(\n \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-3 py-1 text-sm font-normal whitespace-nowrap text-on-prominent/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:bg-secondary-hover hover:text-on-prominent focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-none group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[size=sm]/tabs-list:gap-1 group-data-[size=sm]/tabs-list:rounded-sm group-data-[size=sm]/tabs-list:px-2 group-data-[size=sm]/tabs-list:text-xs\",\n \"group-data-[size=lg]/tabs-list:gap-2 group-data-[size=lg]/tabs-list:rounded-lg group-data-[size=lg]/tabs-list:px-4 group-data-[size=lg]/tabs-list:text-base\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:hover:bg-transparent group-data-[variant=line]/tabs-list:hover:text-primary group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent\",\n \"data-[state=active]:bg-tabs-active data-[state=active]:border-transparent data-[state=active]:text-primary data-[state=active]:font-semibold\",\n \"after:absolute after:bg-primary after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100\",\n iconPosition === \"top\" && \"h-auto flex-col gap-1 py-2\",\n iconPosition === \"top\" && \"group-data-[size=sm]/tabs-list:gap-0.5 group-data-[size=sm]/tabs-list:py-1.5\",\n iconPosition === \"top\" && \"group-data-[size=lg]/tabs-list:gap-1.5 group-data-[size=lg]/tabs-list:py-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","import * as React from \"react\"\nimport { ArrowRight, Info } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Badge } from \"./badge\"\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"./tooltip\"\n\n/**\n * Normalize a balance string so the numeric portion always shows exactly two\n * decimal places, preserving any currency prefix/suffix and thousands separators.\n *\n * Examples:\n * \"$12,450\" -> \"$12,450.00\"\n * \"$12,450.5\" -> \"$12,450.50\"\n * \"$12,450.005\" -> \"$12,450.01\"\n * \"1234\" -> \"1,234.00\"\n * \"USD 7\" -> \"USD 7.00\"\n */\nfunction formatBalanceValue(raw: string): string {\n const match = raw.match(/^(\\D*)([\\d,]+(?:\\.\\d+)?)(\\D*)$/)\n if (!match) return raw\n const [, prefix = \"\", numericPart, suffix = \"\"] = match\n const parsed = Number.parseFloat(numericPart.replace(/,/g, \"\"))\n if (Number.isNaN(parsed)) return raw\n const formatted = parsed.toLocaleString(\"en-US\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n return `${prefix}${formatted}${suffix}`\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Base TicketCard */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype TicketCardProps = {\n className?: string\n /** Optional icon rendered inside the left ring circle. */\n icon?: React.ReactNode\n /** Small label shown above the value (e.g. \"Total Balance\"). */\n label: string\n /** Main value text (e.g. \"10,000.00\"). */\n value: string\n /** Optional muted currency/unit suffix next to value (e.g. \"USDT\"). */\n currency?: string\n /** Label on the right stub button. */\n stubLabel: string\n /** Called when the stub button is clicked. */\n onStubClick?: () => void\n /** Disables the stub button. */\n stubDisabled?: boolean\n /** Compact (mobile) layout — reduces horizontal padding from 16px to 8px. */\n compact?: boolean\n}\n\nfunction TicketCard({\n className,\n icon,\n label,\n value,\n currency,\n stubLabel,\n onStubClick,\n stubDisabled = false,\n compact = false,\n}: TicketCardProps) {\n return (\n <div className={cn(\"flex w-full flex-col gap-2\", className)}>\n\n {/* ── Main ticket card ─────────────────────────────────── */}\n {/* No overflow-hidden here — notch circles extend outside the card bounds vertically */}\n <div className=\"relative flex h-20 w-full items-stretch justify-between rounded-sm bg-subtle\">\n\n {/* Left content */}\n <div className={cn(\"flex flex-1 items-center overflow-hidden\", compact ? \"gap-2 px-2\" : \"gap-4 px-4\")}>\n {icon && (\n <div className=\"flex size-10 shrink-0 items-center justify-center rounded-full border-2 border-primary text-primary\">\n {icon}\n </div>\n )}\n\n {/* Label + value */}\n <div className=\"flex h-11 flex-col justify-center gap-1 whitespace-nowrap\">\n <p className=\"text-xs text-on-subtle\">{label}</p>\n <p className=\"leading-none\">\n <span className=\"text-[20px] font-bold text-on-prominent\">{formatBalanceValue(value)}</span>\n {currency && (\n <>\n {\" \"}\n <span className=\"text-sm text-on-subtle\">{currency}</span>\n </>\n )}\n </p>\n </div>\n </div>\n\n {/* Ticket perforation notches — straddle the seam, sit above the button via z-10 */}\n <div aria-hidden className=\"pointer-events-none absolute right-[88px] top-[-12px] z-10 size-6 rounded-full bg-prominent\" />\n <div aria-hidden className=\"pointer-events-none absolute right-[88px] top-[68px] z-10 size-6 rounded-full bg-prominent\" />\n\n {/* Dashed tear-line — exact Figma spec: 4px wide, #E0E0E0, 3px dash / 3px gap */}\n <div\n aria-hidden\n className=\"pointer-events-none absolute bottom-[12px] top-[12px] z-10 w-1 -translate-x-1/2\"\n style={{\n right: 96,\n backgroundImage:\n \"repeating-linear-gradient(to bottom, color-mix(in oklch, var(--border-subtle) 80%, black) 0px, color-mix(in oklch, var(--border-subtle) 80%, black) 3px, transparent 3px, transparent 6px)\",\n }}\n />\n\n {/* Stub / deposit button — rounded on the right to match the card */}\n <button\n type=\"button\"\n onClick={onStubClick}\n disabled={stubDisabled}\n aria-label={stubLabel}\n className={cn(\n \"relative flex h-20 w-[100px] shrink-0 flex-col items-center justify-center gap-1 overflow-hidden rounded-r-sm bg-primary\",\n \"transition-colors duration-fast ease-standard\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n stubDisabled\n ? \"cursor-not-allowed opacity-50\"\n : \"hover:bg-primary-hover\"\n )}\n >\n {/* Shimmer sweep — only when enabled */}\n {!stubDisabled && (\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-0 [animation:stub-shimmer_1.5s_linear_infinite]\"\n style={{\n background:\n \"linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.30) 50%, transparent 100%)\",\n }}\n />\n )}\n <ArrowRight className=\"size-4 text-on-primary\" />\n <span className=\"text-sm font-semibold text-on-primary\">\n {stubLabel}\n </span>\n </button>\n </div>\n </div>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CreditTicketCard — TicketCard with a credit badge below the value */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype CreditTicketCardProps = {\n className?: string\n /** Optional icon rendered inside the left ring circle. */\n icon?: React.ReactNode\n /** Small label shown above the value (e.g. \"Total Balance\"). */\n label: string\n /** Main value text (e.g. \"0 USD\"). */\n value: string\n /** Optional muted currency/unit suffix next to value (e.g. \"USDT\"). */\n currency?: string\n /** Label on the right stub button. */\n stubLabel: string\n /** Called when the stub button is clicked. */\n onStubClick?: () => void\n /** Disables the stub button. */\n stubDisabled?: boolean\n /** Optional leading icon shown inside the credit badge. */\n badgeIcon?: React.ReactNode\n /** Prefix label shown inside the badge (e.g. \"Credit\", \"Bonus\"). */\n badgeLabel?: string\n /** Value shown in the badge (e.g. \"0.00\"). */\n badgeValue?: string\n /** Currency shown in the badge (e.g. \"USDT\"). */\n badgeCurrency?: string\n /**\n * Optional content for the badge info tooltip. When provided, the trailing\n * info icon on the badge becomes a focusable button that opens a\n * tooltip with this content on hover/focus. When omitted, the info icon is\n * not rendered.\n */\n badgeInfo?: React.ReactNode\n /**\n * Side the badge info tooltip opens on (desktop only — mobile always renders\n * the info as a bottom-sheet drawer). Defaults to `\"top\"` to preserve the\n * current behaviour.\n */\n badgeInfoSide?: \"top\" | \"bottom\" | \"left\" | \"right\"\n /**\n * Alignment of the badge info tooltip relative to its trigger (desktop only).\n * Defaults to `\"center\"`.\n */\n badgeInfoAlign?: \"start\" | \"center\" | \"end\"\n /**\n * Heading shown at the top of the mobile drawer (forwarded to\n * `TooltipContent.title`). Desktop tooltip ignores this. When omitted, the\n * underlying `TooltipContent` falls back to its own `\"Title\"` placeholder.\n */\n badgeInfoTitle?: string\n /**\n * Label on the dismiss button at the bottom of the mobile drawer (forwarded\n * to `TooltipContent.closeLabel`). Desktop tooltip ignores this. When\n * omitted, the underlying `TooltipContent` falls back to its own `\"Label\"`\n * placeholder.\n */\n badgeInfoCloseLabel?: string\n /** Compact (mobile) layout — reduces horizontal padding from 16px to 8px. */\n compact?: boolean\n}\n\nfunction CreditTicketCard({\n className,\n icon,\n label,\n value,\n currency,\n stubLabel,\n onStubClick,\n stubDisabled = false,\n badgeIcon,\n badgeLabel = \"Label\",\n badgeValue = \"0.00\",\n badgeCurrency = \"USDT\",\n badgeInfo,\n badgeInfoSide = \"top\",\n badgeInfoAlign = \"center\",\n badgeInfoTitle,\n badgeInfoCloseLabel,\n compact = false,\n}: CreditTicketCardProps) {\n return (\n <div className={cn(\"flex w-full flex-col gap-2\", className)}>\n\n {/* ── Main ticket card ─────────────────────────────────── */}\n <div className=\"relative flex w-full items-stretch justify-between rounded-sm bg-subtle\">\n\n {(() => {\n // Badge shows just `value currency` (e.g. \"10.00 USDT\"). The\n // `badgeLabel` prop stays in the API because the info button's\n // aria-label still uses it (e.g. \"More info about welcome credit\").\n const badgeText = badgeValue\n ? `${badgeValue}${badgeCurrency ? ` ${badgeCurrency}` : \"\"}`\n : badgeLabel;\n const creditBadge = (\n <Badge variant=\"fill-credit\" size=\"sm\" className=\"!gap-1 !tracking-normal\">\n {badgeIcon}\n {badgeText}\n {badgeInfo && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n aria-label={`More info about ${badgeLabel.toLowerCase()}`}\n className=\"inline-flex shrink-0 items-center justify-center rounded-full text-on-semantic-boost outline-none transition-opacity hover:opacity-70 focus-visible:opacity-70 focus-visible:ring-2 focus-visible:ring-on-semantic-boost/40 cursor-pointer\"\n >\n <Info className=\"!size-3.5\" strokeWidth={2} />\n </button>\n </TooltipTrigger>\n <TooltipContent side={badgeInfoSide} align={badgeInfoAlign} title={badgeInfoTitle} closeLabel={badgeInfoCloseLabel} variant=\"inverse\">{badgeInfo}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </Badge>\n );\n const valueText = (\n <p className=\"leading-none whitespace-nowrap\">\n <span className=\"text-[20px] font-bold text-on-prominent\">{formatBalanceValue(value)}</span>\n {currency && (\n <>\n {\" \"}\n <span className=\"text-sm text-on-subtle\">{currency}</span>\n </>\n )}\n </p>\n );\n return (\n <div\n className={cn(\n \"flex flex-1 items-center overflow-hidden\",\n compact ? \"gap-2 px-2 py-4\" : \"gap-4 px-4 py-4\"\n )}\n >\n {icon && (\n <div className=\"flex size-10 shrink-0 items-center justify-center rounded-full border-2 border-primary text-primary\">\n {icon}\n </div>\n )}\n <div className=\"flex min-w-0 flex-col gap-1\">\n <p className=\"text-xs text-on-subtle whitespace-nowrap\">{label}</p>\n {/* Compact keeps badge inline next to the value when there's room, and\n only wraps it onto a second line when balance + badge would otherwise\n overflow into the deposit stub. Non-compact stays single-line. */}\n <div\n className={cn(\n \"flex items-center\",\n compact ? \"flex-wrap gap-x-2 gap-y-1\" : \"gap-4\"\n )}\n >\n {valueText}\n {creditBadge}\n </div>\n </div>\n </div>\n );\n })()}\n\n {/* Ticket perforation notches — anchored to card edges so they work at any height */}\n <div aria-hidden className=\"pointer-events-none absolute right-[88px] top-[-12px] z-10 size-6 rounded-full bg-prominent\" />\n <div aria-hidden className=\"pointer-events-none absolute right-[88px] bottom-[-12px] z-10 size-6 rounded-full bg-prominent\" />\n\n {/* Dashed tear-line */}\n <div\n aria-hidden\n className=\"pointer-events-none absolute bottom-[12px] top-[12px] z-10 w-1 -translate-x-1/2\"\n style={{\n right: 96,\n backgroundImage:\n \"repeating-linear-gradient(to bottom, color-mix(in oklch, var(--border-subtle) 80%, black) 0px, color-mix(in oklch, var(--border-subtle) 80%, black) 3px, transparent 3px, transparent 6px)\",\n }}\n />\n\n {/* Stub / deposit button — self-stretch fills the full variable height */}\n <button\n type=\"button\"\n onClick={onStubClick}\n disabled={stubDisabled}\n aria-label={stubLabel}\n className={cn(\n \"relative flex w-[100px] shrink-0 self-stretch flex-col items-center justify-center gap-1 overflow-hidden rounded-r-sm bg-primary\",\n \"transition-colors duration-fast ease-standard\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n stubDisabled\n ? \"cursor-not-allowed opacity-50\"\n : \"hover:bg-primary-hover\"\n )}\n >\n {/* Shimmer sweep — only when enabled */}\n {!stubDisabled && (\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-0 [animation:stub-shimmer_1.5s_linear_infinite]\"\n style={{\n background:\n \"linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.30) 50%, transparent 100%)\",\n }}\n />\n )}\n <ArrowRight className=\"size-4 text-on-primary\" />\n <span className=\"text-sm font-semibold text-on-primary\">\n {stubLabel}\n </span>\n </button>\n </div>\n </div>\n )\n}\n\n/** Alias for the Figma-named variant. */\nconst TicketCardDesktop = TicketCard\n\nexport { TicketCard, TicketCardDesktop, CreditTicketCard }\nexport type { TicketCardProps, CreditTicketCardProps }\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 \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-secondary-hover hover:text-on-prominent focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-secondary-hover data-[state=on]:border-transparent data-[state=on]:text-primary [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-border-prominent bg-transparent text-on-prominent shadow-xs hover:bg-secondary-hover\",\n },\n size: {\n default: \"h-9 min-w-9 px-2\",\n sm: \"h-8 min-w-8 px-1.5\",\n lg: \"h-10 min-w-10 px-2.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"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\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 0,\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n \"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\",\n \"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l data-[spacing=0]:data-[variant=outline]:data-[state=on]:border-l data-[spacing=0]:data-[variant=outline]:data-[state=on]:border-primary\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","import * as React from \"react\"\nimport { Badge } from \"../ui/badge\"\nimport { Button } from \"../ui/button\"\nimport { Card } from \"../ui/card\"\n\n// ---------------------------------------------------------------------------\n// Inlined thumb illustrations — base64 WEBP data URLs (~4KB each)\n// Sourced from public/assets/thumbs-up.webp and thumbs-down.webp.\n// Inlining avoids requiring consumers to copy asset files into their public/.\n// ---------------------------------------------------------------------------\nconst THUMBS_UP_DATA_URL =\n \"data:image/webp;base64,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\"\nconst THUMBS_DOWN_DATA_URL =\n \"data:image/webp;base64,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\"\n\n// ---------------------------------------------------------------------------\n// ResultBlock — universal results card used by Rise-Fall, Swipe, and Digits.\n// Animation CSS lives in src/styles.css (selectors: [data-results-motion]).\n// ---------------------------------------------------------------------------\nexport type ResultBlockStatus = \"win\" | \"loss\"\nexport type ResultBlockCta = \"next-round\" | \"go-again\" | \"conversion\"\n\nexport type ResultBlockProps = {\n status: ResultBlockStatus\n amount: string\n currency: string\n contractLabel: string\n pickedDigit?: number\n duration: string\n ctaMode: ResultBlockCta\n}\n\nexport function ResultBlock({\n status,\n amount,\n currency,\n contractLabel,\n pickedDigit,\n duration,\n ctaMode,\n}: ResultBlockProps) {\n const isWin = status === \"win\"\n const titleText = isWin ? \"You won!\" : \"You lost!\"\n const signedAmount = isWin ? `+${amount}` : `−${amount}`\n const amountColorClass = isWin ? \"text-semantic-win\" : \"text-semantic-loss\"\n const haloBgClass = isWin ? \"bg-semantic-win\" : \"bg-semantic-loss\"\n\n return (\n <Card className=\"w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-5 items-center gap-3\">\n <div className=\"relative flex items-center justify-center py-2\">\n <span\n aria-hidden\n data-results-motion=\"halo\"\n className={`absolute size-24 rounded-full blur-2xl opacity-20 ${haloBgClass}`}\n />\n <img\n data-results-motion={isWin ? \"icon-win\" : \"icon-loss\"}\n src={isWin ? THUMBS_UP_DATA_URL : THUMBS_DOWN_DATA_URL}\n alt={isWin ? \"Win\" : \"Loss\"}\n className=\"relative size-20\"\n />\n </div>\n\n <p className=\"text-lg font-semibold text-on-prominent\">{titleText}</p>\n\n <p className={`flex items-baseline gap-1.5 ${amountColorClass}`}>\n <span className=\"font-display text-4xl font-bold tabular-nums tracking-tight\">\n {signedAmount}\n </span>\n <span className=\"text-lg font-semibold\">{currency}</span>\n </p>\n\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"standard\" size=\"sm\">\n {contractLabel}\n {pickedDigit !== undefined && (\n <>\n <span aria-hidden className=\"h-3 w-px bg-border-prominent/40 mx-1\" />\n <span className=\"tabular-nums\">{pickedDigit}</span>\n </>\n )}\n </Badge>\n <Badge variant=\"standard\" size=\"sm\">{duration}</Badge>\n </div>\n\n <div className=\"w-full pt-2\">\n {ctaMode === \"next-round\" && <Button className=\"w-full\">Next round</Button>}\n {ctaMode === \"go-again\" && <Button className=\"w-full\">Go again</Button>}\n {ctaMode === \"conversion\" && (\n <div className=\"w-full flex flex-col gap-3\">\n <p className=\"text-center text-base font-semibold text-on-prominent\">\n Ready to play for real?\n </p>\n <Button className=\"w-full\">Deposit now</Button>\n <Button variant=\"secondary\" className=\"w-full\">Stay in demo</Button>\n </div>\n )}\n </div>\n </Card>\n )\n}\n\n// ---------------------------------------------------------------------------\n// ResultDialog — fixed-width dialog variant (no thumb, no amount; just copy\n// + 2 CTAs). Used for system messages like \"out of balance\".\n// ---------------------------------------------------------------------------\nexport type ResultDialogProps = {\n title: string\n body: React.ReactNode\n primaryLabel: string\n secondaryLabel: string\n}\n\nexport function ResultDialog({\n title,\n body,\n primaryLabel,\n secondaryLabel,\n}: ResultDialogProps) {\n return (\n <Card className=\"w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-6 items-center gap-4\">\n <div className=\"flex flex-col items-center gap-2 text-center\">\n <p className=\"text-lg font-semibold text-on-prominent\">{title}</p>\n <p className=\"text-sm text-on-subtle\">{body}</p>\n </div>\n <div className=\"w-full flex flex-col gap-2\">\n <Button className=\"w-full\">{primaryLabel}</Button>\n <Button variant=\"secondary\" className=\"w-full\">{secondaryLabel}</Button>\n </div>\n </Card>\n )\n}\n","import * as React from \"react\"\nimport { ArrowLeft, History } from \"lucide-react\"\nimport { Badge } from \"../ui/badge\"\nimport { NavigationButton } from \"../ui/navigation-button\"\n\nexport type HeaderNavigationBlockProps = {\n /** Back button click handler. Back arrow is rendered only when provided. */\n onBack?: () => void\n /** Optional badge shown between back and balance (e.g. \"Demo\" indicator). */\n badge?: { label: string; variant?: React.ComponentProps<typeof Badge>[\"variant\"] }\n /** Required balance display. */\n balance: { amount: string; currency: string }\n /** History button config. When `count` is provided, a numeric badge overlays the icon. */\n history?: {\n count?: number\n onClick?: () => void\n \"aria-label\"?: string\n }\n /** Right-side icon-button slot (e.g. sound toggle, settings). Rendered after the history button. */\n actions?: React.ReactNode\n}\n\nexport function HeaderNavigationBlock({\n onBack,\n badge,\n balance,\n history,\n actions,\n}: HeaderNavigationBlockProps) {\n return (\n <div className=\"w-full min-w-80 max-w-layout-diagram-small rounded-md overflow-hidden bg-prominent\">\n <header className=\"flex items-center gap-2 border-b border-border-subtle bg-prominent px-layout-margin-inline py-3\">\n {onBack && (\n <NavigationButton type=\"button\" size=\"md\" aria-label=\"Back\" onClick={onBack}>\n <ArrowLeft className=\"size-5\" />\n </NavigationButton>\n )}\n <div className=\"flex min-w-0 flex-1 items-center justify-center gap-2\">\n {badge && (\n <Badge variant={badge.variant ?? \"fill-warning\"} size=\"sm\">\n {badge.label}\n </Badge>\n )}\n <span className=\"font-display font-semibold tabular-nums text-on-prominent\">\n {balance.amount}\n </span>\n <span className=\"text-sm text-on-subtle\">{balance.currency}</span>\n </div>\n <div className=\"flex shrink-0 items-center gap-1\">\n {history && <HistoryButton {...history} />}\n {actions}\n </div>\n </header>\n </div>\n )\n}\n\nfunction HistoryButton({\n count,\n onClick,\n \"aria-label\": ariaLabelOverride,\n}: NonNullable<HeaderNavigationBlockProps[\"history\"]>) {\n const show = typeof count === \"number\" && count > 0\n const label = show ? (count! > 99 ? \"99+\" : String(count)) : null\n const ariaLabel =\n ariaLabelOverride ?? (show ? `Open history, ${count} new` : \"Open history\")\n return (\n <div className=\"relative inline-flex\">\n <NavigationButton type=\"button\" size=\"md\" aria-label={ariaLabel} onClick={onClick}>\n <History className=\"size-5\" />\n </NavigationButton>\n {show && (\n <span\n aria-hidden\n className=\"pointer-events-none absolute -top-0.5 -right-0.5 min-w-[1.125rem] h-[1.125rem] px-1 rounded-full bg-primary text-on-primary text-[10px] leading-none font-semibold tabular-nums inline-flex items-center justify-center ring-2 ring-prominent\"\n >\n {label}\n </span>\n )}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { Plus } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"../ui/accordion\"\nimport { Button } from \"../ui/button\"\nimport { cn } from \"../../lib/utils\"\n\nexport type FAQItem = {\n value: string\n question: string\n answer: string\n}\n\nexport type FAQBlockProps = {\n /** Section eyebrow above the heading. Defaults to \"FAQ Section\". */\n eyebrow?: string\n /** Heading text. Defaults to \"Frequently asked questions\". */\n title?: string\n /** Body paragraph between heading and accordion. */\n intro?: React.ReactNode\n /** Q&A items. */\n items: FAQItem[]\n /** Which item is open by default. Defaults to the first item's `value`. */\n defaultValue?: string\n /** Footer \"Need more help?\" card. Hidden if undefined. */\n helpCard?: {\n title: string\n body: string\n ctaLabel: string\n onCtaClick?: () => void\n }\n /** Layout density. \"desktop\" is the default; \"mobile\" reduces type scale and padding. \"two-column\" places the heading on the left and the accordion on the right. */\n layout?: \"desktop\" | \"mobile\" | \"two-column\"\n}\n\nexport function FAQBlock({\n eyebrow = \"FAQ\",\n title = \"Frequently asked questions\",\n intro = \"Find answers to the most common questions below.\",\n items,\n defaultValue,\n helpCard,\n layout = \"desktop\",\n}: FAQBlockProps) {\n if (layout === \"two-column\") {\n return (\n <div className=\"@container w-full\">\n <div className=\"flex flex-col @[600px]:flex-row gap-8 @[600px]:gap-12\">\n {/* Left column */}\n <div className=\"flex flex-col gap-4 flex-1 @[600px]:max-w-xs\">\n <span className=\"text-xs font-body font-semibold tracking-widest uppercase text-on-subtle\">{eyebrow}</span>\n <h2 className=\"text-4xl @[600px]:text-6xl font-bold font-display text-on-prominent tracking-tight\">{title}</h2>\n {intro && (\n <p className=\"text-base font-body text-on-subtle\">{intro}</p>\n )}\n </div>\n {/* Right column */}\n <div className=\"flex-1\">\n <Accordion\n type=\"single\"\n collapsible\n defaultValue={defaultValue ?? items[0]?.value}\n className=\"w-full\"\n >\n {items.map(({ value, question, answer }, i) => (\n <AccordionItem key={value} value={value}>\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n className=\"group flex flex-1 items-center justify-between gap-4 py-5 text-left outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n >\n <span className=\"flex items-baseline gap-4\">\n <span className=\"text-sm font-body text-on-subtle shrink-0 w-6\">\n {String(i + 1).padStart(2, \"0\")}\n </span>\n <span className=\"text-lg @[600px]:text-xl font-bold font-display text-on-prominent\">{question}</span>\n </span>\n <span className={cn(\n \"shrink-0 size-7 flex items-center justify-center rounded-sm border transition-all duration-200\",\n \"group-data-[state=open]:bg-primary group-data-[state=open]:border-primary\",\n \"group-data-[state=closed]:bg-transparent group-data-[state=closed]:border-border-subtle\"\n )}>\n <Plus className={cn(\n \"size-4 transition-all duration-200\",\n \"group-data-[state=open]:rotate-45 group-data-[state=open]:text-on-primary\",\n \"group-data-[state=closed]:text-on-prominent\"\n )} />\n </span>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n <AccordionContent>\n <p className=\"text-base font-body text-on-subtle pl-10 pb-4\">{answer}</p>\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n </div>\n </div>\n </div>\n )\n }\n\n const headingClass =\n layout === \"desktop\"\n ? \"text-5xl font-bold font-display text-on-prominent text-center tracking-tight\"\n : \"text-4xl font-bold font-display text-on-prominent text-center tracking-tight\"\n const helpTitleClass =\n layout === \"desktop\"\n ? \"text-2xl font-semibold font-display text-on-prominent\"\n : \"text-xl font-semibold font-display text-on-prominent\"\n const helpCardPaddingClass = layout === \"desktop\" ? \"p-8\" : \"p-6\"\n const gapClass = layout === \"desktop\" ? \"gap-12\" : \"gap-10\"\n const headerGapClass = layout === \"desktop\" ? \"gap-5\" : \"gap-4\"\n\n return (\n <div className={`w-full flex flex-col ${gapClass}`}>\n <div className={`flex flex-col ${headerGapClass} items-center w-full`}>\n <span className=\"text-sm text-on-subtle font-body\">{eyebrow}</span>\n <h2 className={headingClass}>{title}</h2>\n {intro && (\n <p className=\"text-lg text-on-subtle font-body text-center\">{intro}</p>\n )}\n </div>\n\n <Accordion\n type=\"single\"\n collapsible\n defaultValue={defaultValue ?? items[0]?.value}\n className=\"w-full\"\n >\n {items.map(({ value, question, answer }) => (\n <AccordionItem key={value} value={value}>\n <AccordionTrigger className=\"text-base font-medium font-body text-on-prominent hover:no-underline\">\n {question}\n </AccordionTrigger>\n <AccordionContent>\n <p className=\"text-sm text-on-subtle font-body pb-4\">{answer}</p>\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n\n {helpCard && (\n <div className={`flex flex-col gap-6 items-center w-full bg-subtle rounded-xl ${helpCardPaddingClass}`}>\n <div className=\"flex flex-col gap-2 w-full\">\n <h3 className={helpTitleClass}>{helpCard.title}</h3>\n <p className=\"text-base text-on-subtle font-body\">{helpCard.body}</p>\n </div>\n <Button size=\"sm\" onClick={helpCard.onCtaClick}>{helpCard.ctaLabel}</Button>\n </div>\n )}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { ArrowRight, ArrowUpRight } from \"lucide-react\"\nimport { Button } from \"../ui/button\"\n\nexport type HeroBlockTagline = {\n /** Primary label (e.g. \"What's new\"). */\n label: string\n /** Secondary text shown after a separator (e.g. \"Just shipped v2.0\"). */\n suffix?: string\n}\n\nexport type HeroBlockCta = {\n label: string\n onClick?: () => void\n /** When true on the primary CTA in the centred layout, renders a trailing arrow. */\n trailingArrow?: boolean\n}\n\nexport type HeroBlockProps = {\n /** \"centered\" = single column, no image; \"split\" = two-column desktop with image. Default: \"centered\". */\n layout?: \"centered\" | \"split\"\n tagline?: HeroBlockTagline\n heading: string\n body: string\n primaryCta: HeroBlockCta\n /** Shown only in \"split\" layout. */\n secondaryCta?: HeroBlockCta\n /** Image content for \"split\" layout. Defaults to a subtle placeholder square. */\n image?: React.ReactNode\n}\n\nexport function HeroBlock({\n layout = \"centered\",\n tagline,\n heading,\n body,\n primaryCta,\n secondaryCta,\n image,\n}: HeroBlockProps) {\n if (layout === \"centered\") {\n return (\n <div className=\"w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent\">\n <div className=\"flex flex-col items-center justify-center gap-8 px-layout-margin-inline py-24 max-w-2xl mx-auto text-center\">\n <div className=\"flex flex-col items-center gap-6 w-full\">\n {tagline && <TaglinePill {...tagline} />}\n <h1 className=\"text-5xl font-semibold font-display tracking-tight text-on-prominent text-center\">\n {heading}\n </h1>\n <p className=\"text-lg font-body text-on-subtle text-center\">{body}</p>\n </div>\n <Button size=\"sm\" onClick={primaryCta.onClick}>\n {primaryCta.label}\n {primaryCta.trailingArrow !== false && <ArrowRight className=\"size-4\" />}\n </Button>\n </div>\n </div>\n )\n }\n\n // split layout\n return (\n <div className=\"w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent\">\n <div className=\"flex flex-col min-[600px]:flex-row items-center gap-layout-gutter px-layout-margin-inline py-16 min-[600px]:py-24 max-w-5xl mx-auto\">\n <div className=\"flex flex-col gap-6 min-[600px]:gap-8 flex-1 min-w-0 items-center min-[600px]:items-start text-center min-[600px]:text-left w-full\">\n <div className=\"flex flex-col gap-5 min-[600px]:gap-6 items-center min-[600px]:items-start w-full\">\n {tagline && <TaglinePill {...tagline} responsive />}\n <h1 className=\"text-4xl min-[600px]:text-5xl font-semibold font-display tracking-tight text-on-prominent\">\n {heading}\n </h1>\n <p className=\"text-lg font-body text-on-subtle\">{body}</p>\n </div>\n <div className=\"flex items-center justify-center min-[600px]:justify-start gap-2\">\n <Button size=\"sm\" onClick={primaryCta.onClick}>{primaryCta.label}</Button>\n {secondaryCta && (\n <Button variant=\"secondary\" size=\"sm\" onClick={secondaryCta.onClick}>\n {secondaryCta.label}\n </Button>\n )}\n </div>\n </div>\n <div className=\"w-full min-[600px]:flex-1 min-[600px]:min-w-0 aspect-square rounded-xl bg-subtle shrink-0\" aria-hidden=\"true\">\n {image}\n </div>\n </div>\n </div>\n )\n}\n\nfunction TaglinePill({\n label,\n suffix,\n responsive,\n}: HeroBlockTagline & { responsive?: boolean }) {\n return (\n <div className=\"inline-flex items-center gap-1.5 h-7 px-3 rounded-full border border-border-subtle bg-prominent shadow-sm shrink-0\">\n <span className=\"size-1.5 rounded-full bg-semantic-win shrink-0\" aria-hidden=\"true\" />\n {responsive && suffix ? (\n <span className=\"text-sm font-body text-on-prominent whitespace-nowrap\">\n <span className=\"hidden min-[600px]:inline\">{label}<span className=\"text-on-subtle\">{\" · \"}</span></span>\n <span className=\"text-on-subtle min-[600px]:text-on-prominent\">{suffix}</span>\n </span>\n ) : (\n <span className=\"text-sm font-body text-on-prominent whitespace-nowrap\">\n {label}\n {suffix && <span className=\"text-on-subtle\">{` · ${suffix}`}</span>}\n </span>\n )}\n <ArrowUpRight className=\"size-4 text-on-subtle shrink-0\" aria-hidden=\"true\" />\n </div>\n )\n}\n","import * as React from \"react\"\nimport { Button } from \"../ui/button\"\nimport { Input } from \"../ui/input\"\nimport { Link } from \"../ui/link\"\n\nexport type AuthBlockMode = \"sign-in\" | \"sign-up\"\nexport type AuthBlockProvider = \"google\" | \"telegram\" | \"x\"\n\nexport type AuthBlockProps = {\n mode: AuthBlockMode\n /** Logo source URL (consumer-provided). Renders the small icon in the header lockup. */\n logoSrc: string\n /** Wordmark text in the header lockup. Defaults to \"trading.game\". */\n wordmark?: string\n /** OAuth providers to show as buttons. Default: all three. Order is preserved. */\n providers?: AuthBlockProvider[]\n /** Submit handler. Receives just the email field for v1 (form is single-field). */\n onSubmit?: (data: { email: string }) => void\n /** Footer link href (sign-in → sign-up, sign-up → sign-in). */\n crossLinkHref?: string\n /** Unique prefix for input IDs (allows multiple instances on the same page). */\n idPrefix?: string\n}\n\nexport function AuthBlock({\n mode,\n logoSrc,\n wordmark = \"trading.game\",\n providers = [\"google\", \"telegram\", \"x\"],\n onSubmit,\n crossLinkHref = \"#\",\n idPrefix = \"auth\",\n}: AuthBlockProps) {\n const headingText = mode === \"sign-in\" ? \"Sign in\" : \"Sign up\"\n const termsText = mode === \"sign-in\" ? \"By signing in\" : \"By signing up\"\n const ctaText = mode === \"sign-in\" ? \"Sign in\" : \"Sign up\"\n const footerPrompt =\n mode === \"sign-in\" ? \"Don't have an account?\" : \"Already have an account?\"\n const footerLinkLabel = mode === \"sign-in\" ? \"Sign up\" : \"Log in\"\n const [email, setEmail] = React.useState(\"\")\n\n return (\n <div className=\"flex flex-col items-center gap-6 w-full\">\n <div className=\"flex items-center gap-2\">\n <img src={logoSrc} alt={wordmark} className=\"size-8 object-contain\" />\n <span className=\"font-display font-semibold text-base text-on-prominent tracking-tight\">\n {wordmark}\n </span>\n </div>\n\n <h2 className=\"text-3xl font-bold font-display text-on-prominent text-center\">\n {headingText}\n </h2>\n\n <div className=\"flex flex-col gap-3 w-full\">\n {providers.map((p) => (\n <ProviderButton key={p} provider={p} />\n ))}\n </div>\n\n <div className=\"flex items-center gap-3 w-full\">\n <div className=\"flex-1 h-px bg-border-subtle\" />\n <span className=\"text-sm text-on-subtle font-body\">or</span>\n <div className=\"flex-1 h-px bg-border-subtle\" />\n </div>\n\n <div className=\"flex items-center gap-2 w-full\">\n <Input\n id={`${idPrefix}-email`}\n type=\"text\"\n placeholder=\"Email or phone number\"\n className=\"flex-1\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n />\n </div>\n\n <p className=\"text-sm text-on-subtle font-body text-left w-full\">\n {termsText}, you agree to our{\" \"}\n <Link size=\"sm\" href=\"#\">Terms &amp; Conditions</Link>\n </p>\n\n <Button size=\"md\" className=\"w-full\" onClick={() => onSubmit?.({ email })}>\n {ctaText}\n </Button>\n\n <p className=\"text-sm text-on-subtle font-body text-center\">\n {footerPrompt}{\" \"}\n <Link size=\"sm\" href={crossLinkHref}>{footerLinkLabel}</Link>\n </p>\n </div>\n )\n}\n\nfunction ProviderButton({ provider }: { provider: AuthBlockProvider }) {\n switch (provider) {\n case \"google\":\n return (\n <Button variant=\"secondary\" size=\"lg\" className=\"w-full\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" aria-hidden=\"true\" fill=\"none\" className=\"shrink-0\">\n <path d=\"M17.64 9.205c0-.639-.057-1.252-.164-1.841H9v3.481h4.844a4.14 4.14 0 0 1-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615Z\" fill=\"#4285F4\" />\n <path d=\"M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18Z\" fill=\"#34A853\" />\n <path d=\"M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.996 8.996 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332Z\" fill=\"#FBBC05\" />\n <path d=\"M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 7.29C4.672 5.163 6.656 3.58 9 3.58Z\" fill=\"#EA4335\" />\n </svg>\n Continue with Google\n </Button>\n )\n case \"telegram\":\n return (\n <Button variant=\"secondary\" size=\"lg\" className=\"w-full\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" aria-hidden=\"true\" fill=\"none\" className=\"shrink-0\">\n <circle cx=\"9\" cy=\"9\" r=\"9\" fill=\"#29B6F6\" />\n <path d=\"M13.5 5.25 11.25 13.5l-2.25-3-3 1.5 1.5-5.25 6-1.5Z\" fill=\"white\" opacity=\"0.3\" />\n <path d=\"m4.5 8.625 7.5-3-1.125 7.125-2.625-2.25-1.5 1.5.375-3.375Z\" fill=\"white\" />\n </svg>\n Continue with Telegram\n </Button>\n )\n case \"x\":\n return (\n <Button variant=\"secondary\" size=\"lg\" className=\"w-full\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" aria-hidden=\"true\" fill=\"currentColor\" className=\"shrink-0\">\n <path d=\"M13.955 2.25h2.423L10.977 8.28 17.25 15.75h-4.812l-3.913-5.116-4.477 5.116H1.645l5.703-6.52L1.125 2.25h4.934l3.538 4.678 4.358-4.678Zm-.85 12.105h1.343L5.025 3.627H3.579l9.526 10.728Z\" />\n </svg>\n Continue with X (Twitter)\n </Button>\n )\n }\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Menu, X } from \"lucide-react\"\nimport { Button } from \"../ui/button\"\n\nexport type NavBarBlockLink = {\n label: string\n href?: string\n onClick?: () => void\n}\n\nexport type NavBarBlockProps = {\n /** Brand logo URLs and alt text. */\n brand: {\n fullLogoSrc: string\n iconLogoSrc: string\n alt: string\n }\n /** Primary nav links. */\n links: NavBarBlockLink[]\n /** Sign-in button. Hidden if omitted. Default label: \"Sign in\". */\n signIn?: { label?: string; onClick?: () => void }\n /** Sign-up button. Hidden if omitted. Default label: \"Sign up\". */\n signUp?: { label?: string; onClick?: () => void }\n}\n\nexport function NavBarBlock({ brand, links, signIn, signUp }: NavBarBlockProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = React.useState(false)\n\n return (\n <div className=\"w-full border border-border-subtle rounded-md overflow-hidden\">\n <nav className=\"bg-prominent\">\n <div className=\"flex items-center justify-between px-layout-margin-inline py-3\">\n <div className=\"flex items-center gap-6\">\n <img\n src={brand.fullLogoSrc}\n alt={brand.alt}\n className=\"hidden min-[600px]:block h-7 w-auto shrink-0 object-contain object-left\"\n />\n <img\n src={brand.iconLogoSrc}\n alt={brand.alt}\n className=\"min-[600px]:hidden size-7 shrink-0 object-contain\"\n />\n <div className=\"hidden min-[600px]:flex items-center gap-1\">\n {links.map((l) => (\n <Button key={l.label} variant=\"tertiary\" size=\"sm\" onClick={l.onClick}>\n {l.label}\n </Button>\n ))}\n </div>\n </div>\n\n <div className=\"hidden min-[600px]:flex items-center gap-2\">\n {signIn && (\n <Button variant=\"tertiary\" size=\"sm\" onClick={signIn.onClick}>\n {signIn.label ?? \"Sign in\"}\n </Button>\n )}\n {signUp && (\n <Button size=\"sm\" onClick={signUp.onClick}>\n {signUp.label ?? \"Sign up\"}\n </Button>\n )}\n </div>\n\n <Button\n variant=\"tertiary\"\n size=\"icon-sm\"\n aria-label={mobileMenuOpen ? \"Close navigation menu\" : \"Open navigation menu\"}\n aria-expanded={mobileMenuOpen}\n className=\"min-[600px]:hidden\"\n onClick={() => setMobileMenuOpen((prev) => !prev)}\n >\n {mobileMenuOpen ? <X className=\"size-4\" /> : <Menu className=\"size-4\" />}\n </Button>\n </div>\n\n {mobileMenuOpen && (\n <div className=\"min-[600px]:hidden flex flex-col border-t border-border-subtle px-layout-margin-inline py-3 gap-1\">\n {links.map((l) => (\n <Button\n key={l.label}\n variant=\"tertiary\"\n size=\"sm\"\n className=\"justify-start w-full\"\n onClick={l.onClick}\n >\n {l.label}\n </Button>\n ))}\n {(signIn || signUp) && (\n <div className=\"flex flex-col gap-2 pt-3 mt-2 border-t border-border-subtle\">\n {signIn && (\n <Button variant=\"secondary\" size=\"sm\" className=\"w-full\" onClick={signIn.onClick}>\n {signIn.label ?? \"Sign in\"}\n </Button>\n )}\n {signUp && (\n <Button size=\"sm\" className=\"w-full\" onClick={signUp.onClick}>\n {signUp.label ?? \"Sign up\"}\n </Button>\n )}\n </div>\n )}\n </div>\n )}\n </nav>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { History, X } from \"lucide-react\"\nimport { Button } from \"../ui/button\"\nimport { Drawer, DrawerClose, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger } from \"../ui/drawer\"\nimport { Empty, EmptyHeader, EmptyMedia, EmptyTitle } from \"../ui/empty\"\nimport { Item, ItemActions, ItemContent, ItemGroup, ItemTitle } from \"../ui/item\"\nimport { NavigationButton } from \"../ui/navigation-button\"\nimport { Separator } from \"../ui/separator\"\nimport { Sheet, SheetClose, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from \"../ui/sheet\"\nimport { useIsMobile } from \"../../hooks/use-mobile\"\n\n// ── Position discriminated union ─────────────────────────────────────────────\ntype PositionBase = {\n market: string\n duration: string\n stake: string\n pnl: string\n win: boolean\n}\nexport type RiseFallPosition = PositionBase & { kind: \"rise-fall\"; direction: \"Rise\" | \"Fall\" }\nexport type SwipePosition = PositionBase & { kind: \"swipe\"; direction: \"Up\" | \"Down\" }\nexport type BoxOPosition = PositionBase & { kind: \"box-o\"; multiplier: string }\nexport type DigitsPosition = PositionBase & {\n kind: \"digits\"\n type: \"matches\" | \"differs\" | \"odd\" | \"even\" | \"over\" | \"under\"\n digit?: string\n}\nexport type Position = RiseFallPosition | SwipePosition | BoxOPosition | DigitsPosition\n\n// ── Public component ─────────────────────────────────────────────────────────\nexport type OpenPositionsBlockProps = {\n /** Consumer-provided trigger element. Wrapped with a Sheet/Drawer trigger asChild. */\n trigger: React.ReactNode\n /** Sheet/drawer title. Default: \"Positions\". */\n sheetTitle?: string\n /** Position items to render in the list. Empty array → emptyState is shown. */\n positions: Position[]\n /** Footer link handler. The button label is fixed: \"View trade history\". */\n onViewHistory?: () => void\n /** Replaces the default empty state when positions.length === 0. */\n emptyState?: React.ReactNode\n}\n\nexport function OpenPositionsBlock({\n trigger,\n sheetTitle = \"Positions\",\n positions,\n onViewHistory,\n emptyState,\n}: OpenPositionsBlockProps) {\n const isMobile = useIsMobile()\n\n const body =\n positions.length === 0\n ? (emptyState ?? <DefaultEmptyState onViewHistory={onViewHistory} />)\n : <PositionsList positions={positions} onViewHistory={onViewHistory} />\n\n if (isMobile) {\n return (\n <Drawer>\n <DrawerTrigger asChild>{trigger}</DrawerTrigger>\n <DrawerContent className=\"p-0 flex flex-col\">\n <DrawerHeader className=\"flex-row items-center justify-between px-4 py-3 shrink-0 text-left\">\n <DrawerTitle className=\"text-base font-semibold font-display text-on-prominent\">\n {sheetTitle}\n </DrawerTitle>\n <DrawerClose asChild>\n <NavigationButton size=\"sm\" aria-label=\"Close\"><X /></NavigationButton>\n </DrawerClose>\n </DrawerHeader>\n <Separator />\n {body}\n </DrawerContent>\n </Drawer>\n )\n }\n\n return (\n <Sheet>\n <SheetTrigger asChild>{trigger}</SheetTrigger>\n <SheetContent side=\"right\" showCloseButton={false} className=\"p-0 flex flex-col w-80 sm:max-w-xs\">\n <SheetHeader className=\"flex-row items-center justify-between px-4 py-3 shrink-0\">\n <SheetTitle className=\"text-base font-semibold font-display text-on-prominent\">\n {sheetTitle}\n </SheetTitle>\n <SheetClose asChild>\n <NavigationButton size=\"sm\" aria-label=\"Close\"><X /></NavigationButton>\n </SheetClose>\n </SheetHeader>\n <Separator />\n {body}\n </SheetContent>\n </Sheet>\n )\n}\n\n// ── Internals ────────────────────────────────────────────────────────────────\nfunction PositionsList({\n positions,\n onViewHistory,\n}: {\n positions: Position[]\n onViewHistory?: () => void\n}) {\n return (\n <div className=\"flex flex-col flex-1 min-h-0\">\n <ItemGroup className=\"min-h-0 overflow-y-auto\">\n {positions.map((pos, i) => (\n <PositionRow key={i} position={pos} />\n ))}\n </ItemGroup>\n <Separator />\n <div className=\"shrink-0 flex justify-center py-4\">\n <Button variant=\"tertiary\" size=\"md\" onClick={onViewHistory}>\n View trade history\n </Button>\n </div>\n </div>\n )\n}\n\nfunction PositionRow({ position }: { position: Position }) {\n const { label, suffix } = positionTitleParts(position)\n return (\n <Item size=\"sm\">\n <ItemContent>\n <ItemTitle>\n <span className=\"text-on-prominent\">{label}</span>\n {suffix && <span className=\"text-on-subtle\">{` ${suffix}`}</span>}\n </ItemTitle>\n <MetaNote market={position.market} duration={position.duration} />\n </ItemContent>\n <ItemActions>\n <PnlMeta pnl={position.pnl} win={position.win} stake={position.stake} />\n </ItemActions>\n </Item>\n )\n}\n\nconst DIGITS_TYPE_LABEL: Record<DigitsPosition[\"type\"], string> = {\n matches: \"Matches\",\n differs: \"Differs\",\n odd: \"Odd\",\n even: \"Even\",\n over: \"Over\",\n under: \"Under\",\n}\n\n/**\n * Splits a position's row title into the prominent label and an optional\n * subtle suffix (rendered in `text-on-subtle` so the multiplier/digit doesn't\n * compete with the contract type for visual weight).\n */\nfunction positionTitleParts(p: Position): { label: string; suffix?: string } {\n switch (p.kind) {\n case \"rise-fall\": return { label: p.direction }\n case \"swipe\": return { label: `Swipe-${p.direction.toLowerCase()}` }\n case \"box-o\": return { label: \"Box-O\", suffix: p.multiplier }\n // Digits with a picked value (matches/differs/over/under) show it as a\n // subtle suffix; odd/even have no digit so just the label.\n case \"digits\": return { label: DIGITS_TYPE_LABEL[p.type], suffix: p.digit }\n }\n}\n\nfunction MetaNote({ market, duration }: { market: string; duration: string }) {\n return (\n <span className=\"text-xs text-on-subtle whitespace-nowrap\">\n {market} · {duration}\n </span>\n )\n}\n\nfunction PnlMeta({ pnl, win, stake }: { pnl: string; win: boolean; stake: string }) {\n return (\n <div className=\"flex flex-col items-end gap-0.5\">\n <span className={`font-display font-bold tabular-nums text-base ${win ? \"text-semantic-win\" : \"text-semantic-loss\"}`}>\n {pnl}\n </span>\n <span className=\"tabular-nums text-xs text-on-subtle\">{stake}</span>\n </div>\n )\n}\n\nfunction DefaultEmptyState({ onViewHistory }: { onViewHistory?: () => void }) {\n return (\n <Empty className=\"flex min-h-0 flex-1 flex-col justify-center border-none rounded-none p-6 text-center\">\n <EmptyHeader className=\"gap-4\">\n <EmptyMedia>\n <History className=\"size-8 text-on-subtle\" />\n </EmptyMedia>\n <EmptyTitle className=\"text-base leading-6 font-semibold tracking-normal body-md text-on-subtle\">\n No trades yet.\n </EmptyTitle>\n <Button variant=\"tertiary\" size=\"md\" onClick={onViewHistory}>\n View trade history\n </Button>\n </EmptyHeader>\n </Empty>\n )\n}\n"],"mappings":"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","names":["cva","jsx","jsxs","jsx","jsxs","jsx","jsxs","cva","jsx","jsxs","jsx","jsx","cva","Slot","jsx","cva","Slot","React","X","jsx","jsxs","_a","X","wrapAction","Slot","jsx","jsxs","Slot","React","ChevronDownIcon","jsx","_a","_b","className","props","ChevronDownIcon","jsx","React","jsx","jsxs","api","cva","jsx","cva","React","Fragment","jsx","jsxs","config","jsx","jsx","React","CheckIcon","ChevronDownIcon","React","cva","cva","jsx","cva","jsx","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","jsx","jsxs","cva","useMemo","_a","React","Slot","jsx","Slot","_a","jsx","React","jsx","jsxs","_a","cva","Slot","jsx","cva","Slot","jsx","cva","Slot","jsx","cva","Slot","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","cva","Slot","jsx","cva","Slot","cva","ChevronDownIcon","jsx","jsxs","cva","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","jsx","jsxs","ChevronLeftIcon","ChevronRightIcon","jsx","jsx","CircleIcon","jsx","CircleIcon","jsx","jsx","jsxs","CheckIcon","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","CheckIcon","XIcon","jsx","jsxs","XIcon","React","cva","Slot","React","jsx","React","jsx","jsxs","Tooltip","jsx","jsxs","open","Slot","cva","Tooltip","React","jsx","jsxs","jsx","React","jsx","jsxs","jsx","jsx","cva","jsx","cva","ArrowRight","Info","Fragment","jsx","jsxs","ArrowRight","Tooltip","Info","cva","jsx","cva","React","jsx","Fragment","jsx","jsxs","ArrowLeft","jsx","jsxs","ArrowLeft","Plus","AccordionPrimitive","jsx","jsxs","AccordionPrimitive","Plus","ArrowRight","jsx","jsxs","ArrowRight","React","jsx","jsxs","React","X","jsx","jsxs","X","History","X","jsx","jsxs","X","History"]}
1
+ {"version":3,"sources":["../components/ui/accordion.tsx","../lib/utils.ts","../components/ui/section-message.tsx","../components/ui/button.tsx","../components/ui/spinner.tsx","../components/ui/navigation-button.tsx","../components/ui/alert-dialog.tsx","../components/ui/aspect-ratio.tsx","../components/ui/avatar.tsx","../components/ui/badge.tsx","../components/ui/banner.tsx","../components/ui/bottom-navigation.tsx","../components/ui/breadcrumb.tsx","../components/ui/calendar.tsx","../components/ui/select.tsx","../components/ui/card.tsx","../components/ui/carousel.tsx","../components/ui/chip.tsx","../components/ui/checkbox.tsx","../components/ui/command.tsx","../components/ui/dialog.tsx","../components/ui/context-menu.tsx","../components/ui/drawer.tsx","../components/ui/dropdown-menu.tsx","../components/ui/empty.tsx","../components/ui/field.tsx","../components/ui/label.tsx","../components/ui/separator.tsx","../components/ui/hover-card.tsx","../components/ui/input.tsx","../components/ui/input-group.tsx","../components/ui/textarea.tsx","../components/ui/input-otp.tsx","../components/ui/item.tsx","../components/ui/link.tsx","../components/ui/menubar.tsx","../components/ui/native-select.tsx","../components/ui/navigation-menu.tsx","../components/ui/numpad.tsx","../components/ui/pagination.tsx","../components/ui/popover.tsx","../components/ui/progress.tsx","../components/ui/profile-photo.tsx","../components/ui/radio-group.tsx","../components/ui/resizable.tsx","../components/ui/scroll-area.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/toast.tsx","../components/ui/stepper.tsx","../components/ui/switch.tsx","../components/ui/table.tsx","../components/ui/tabs.tsx","../components/ui/toggle.tsx","../components/ui/toggle-group.tsx","../components/blocks/result-block.tsx","../components/blocks/header-navigation-block.tsx","../components/blocks/faq-block.tsx","../components/blocks/hero-block.tsx","../components/blocks/auth-block.tsx","../components/blocks/navbar-block.tsx","../components/blocks/open-positions-block.tsx","../components/blocks/game-loading-block.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\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b border-border-default-default last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left type-accordion-trigger transition-all outline-none hover:underline focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:pointer-events-none disabled:opacity-24 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 text-icon-prominent-default transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden type-accordion-content data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\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\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport {\n AlertTriangle,\n CheckCircle2,\n Info,\n X,\n XCircle,\n} from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { NavigationButton } from \"./navigation-button\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Types */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype SectionMessageVariant = \"info\" | \"warning\" | \"danger\" | \"success\"\n\n/**\n * `row` keeps everything on one band with the action beside the text;\n * `stack` drops the actions below the body. The old `inline` / `card`\n * values are accepted as deprecated aliases until the v1.0 sweep.\n */\ntype SectionMessageLayout = \"row\" | \"stack\" | \"inline\" | \"card\"\n\ntype SectionMessageSize = \"sm\" | \"md\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Variants */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\n/**\n * Per-variant surface + border classes. Title, description, icon, and close X\n * are applied via dedicated slot classes below — they're not part of the cva\n * root because they target descendant elements.\n *\n * Sizes are a strict one-step ladder: every metric in `sm` sits exactly one\n * scale step below `md` (padding 16→12, gaps 12→8, icon 16→14, radius xl→lg,\n * type 14/20→12/16), so both densities read as the same component.\n */\nconst sectionMessageVariants = cva(\n \"grid w-full\",\n {\n variants: {\n variant: {\n info: \"bg-background-information-default border border-border-information-default\",\n warning: \"bg-background-warning-default border border-border-warning-default\",\n danger: \"bg-background-error-default border border-border-error-default\",\n success: \"bg-background-success-default border border-border-success-default\",\n },\n layout: {\n // Row is mobile-first: 3 columns × 2 rows so a long title can wrap and the\n // action button drops below the body. At sm+ (640px) it collapses to a single\n // row of 4 columns (icon · body · action · close).\n row: \"grid-cols-[auto_1fr_auto] grid-rows-[auto_auto] items-start sm:grid-cols-[auto_1fr_auto_auto] sm:grid-rows-1\",\n stack: \"grid-cols-[auto_1fr_auto] grid-rows-[auto_auto] items-start\",\n },\n size: {\n md: \"rounded-xl px-4 py-4 gap-x-3\",\n sm: \"rounded-lg px-3 py-3 gap-x-2\",\n },\n },\n compoundVariants: [\n { layout: \"row\", size: \"md\", class: \"gap-y-3\" },\n { layout: \"row\", size: \"sm\", class: \"gap-y-2\" },\n { layout: \"stack\", size: \"md\", class: \"gap-y-2\" },\n { layout: \"stack\", size: \"sm\", class: \"gap-y-1.5\" },\n ],\n defaultVariants: {\n variant: \"info\",\n layout: \"row\",\n size: \"md\",\n },\n },\n)\n\n/**\n * Classes applied when the row layout is single-line (only title or only\n * description). `min-h` keeps the resting height (48px md / 40px sm) when\n * content fits; the container is free to grow when text wraps on narrow\n * viewports so it never overflows. The reduced vertical padding keeps text\n * comfortably off the edges when growth does happen.\n */\nconst SINGLE_LINE_CLASSES: Record<SectionMessageSize, string> = {\n md: \"items-center min-h-12 py-2 gap-y-0\",\n sm: \"items-center min-h-10 py-1.5 gap-y-0\",\n}\n\n/**\n * Title color — uniform `text-prominent` across every variant so\n * the title reads with consistent weight. The leading icon alone carries the\n * severity colour signal.\n */\nconst TITLE_CLASSES: Record<SectionMessageVariant, string> = {\n info: \"text-text-prominent-default\",\n warning: \"text-text-prominent-default\",\n danger: \"text-text-prominent-default\",\n success: \"text-text-prominent-default\",\n}\n\n/** Icon color per variant — the only place severity shows up as colour. */\nconst ICON_CLASSES: Record<SectionMessageVariant, string> = {\n info: \"text-icon-information-default\",\n warning: \"text-icon-warning-default\",\n danger: \"text-icon-error-default\",\n success: \"text-icon-success-default\",\n}\n\n/** Description color — prominent ink at regular weight; the title/description\n hierarchy is carried by weight (600 vs 400) alone. */\nconst DESC_CLASSES: Record<SectionMessageVariant, string> = {\n info: \"text-text-prominent-default\",\n warning: \"text-text-prominent-default\",\n danger: \"text-text-prominent-default\",\n success: \"text-text-prominent-default\",\n}\n\n/**\n * Close X color — neutral gray on every variant. The X reads as a generic\n * dismiss affordance, not a status signal, so it stays out of the accent\n * palette.\n */\nconst CLOSE_CLASSES: Record<SectionMessageVariant, string> = {\n info: \"text-icon-subtle-default opacity-70\",\n warning: \"text-icon-subtle-default opacity-70\",\n danger: \"text-icon-subtle-default opacity-70\",\n success: \"text-icon-subtle-default opacity-70\",\n}\n\n/** Default per-variant leading icon. Pass `icon={null}` to omit; pass any ReactNode to override. */\nfunction defaultIconForVariant(variant: SectionMessageVariant): React.ReactNode {\n switch (variant) {\n case \"info\":\n return <Info />\n case \"warning\":\n return <AlertTriangle />\n case \"danger\":\n return <XCircle />\n case \"success\":\n return <CheckCircle2 />\n }\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Props */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ninterface SectionMessageProps\n extends Omit<React.ComponentProps<\"div\">, \"title\"> {\n /** Surface + accent variant. */\n variant?: SectionMessageVariant\n /** Layout shape — `row` (action beside text) or `stack` (actions below). */\n layout?: SectionMessageLayout\n /** Density — `md` (default) or `sm`, one full scale step down. */\n size?: SectionMessageSize\n /** Title text. At least one of `title` or `description` is required. */\n title?: React.ReactNode\n /** Description / supporting text. At least one of `title` or `description` is required. */\n description?: React.ReactNode\n /**\n * Leading icon. When `undefined`, the default for the variant is used.\n * Pass `null` to omit the icon entirely. Pass any `ReactNode` to override.\n */\n icon?: React.ReactNode | null\n /** Single action button — honoured only when `layout=\"row\"`. */\n action?: React.ReactNode\n /** Up to 2 action buttons — honoured only when `layout=\"stack\"`. */\n actions?: React.ReactNode[]\n /**\n * When provided, the close X renders and calls this on click. Absence\n * means the message is not user-dismissible.\n */\n onDismiss?: () => void\n /** aria-label for the close button. Defaults to \"Dismiss\". */\n dismissLabel?: string\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Component */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction SectionMessage({\n variant = \"info\",\n layout = \"row\",\n size = \"md\",\n title,\n description,\n icon,\n action,\n actions,\n onDismiss,\n dismissLabel = \"Dismiss\",\n className,\n ...props\n}: SectionMessageProps) {\n // At least one of title or description must be supplied.\n if (!title && !description) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n \"SectionMessage: requires at least one of `title` or `description`. Rendering null.\",\n )\n }\n return null\n }\n\n // Normalize the deprecated layout aliases (inline→row, card→stack).\n const resolvedLayout: \"row\" | \"stack\" =\n layout === \"inline\" ? \"row\" : layout === \"card\" ? \"stack\" : layout\n\n const isRow = resolvedLayout === \"row\"\n const isSingleLine = isRow && !(title && description)\n const showIcon = icon !== null\n const resolvedIcon = icon === undefined ? defaultIconForVariant(variant) : icon\n const showCloseButton = typeof onDismiss === \"function\"\n // All SectionMessage variants use the standard Secondary button. (Promotional surfaces\n // that need the primary-inverse button live on `Banner` instead.)\n const buttonVariant = \"secondary\" as const\n const buttonSize = \"sm\" as const\n const isAssertive = variant === \"danger\" || variant === \"warning\"\n const role = isAssertive ? \"alert\" : \"status\"\n const ariaLive = isAssertive ? \"assertive\" : \"polite\"\n\n // Dev-only warnings for layout/slot mismatches.\n if (process.env.NODE_ENV !== \"production\") {\n if (isRow && actions && actions.length > 0) {\n console.warn(\n 'SectionMessage: `actions` is ignored when layout=\"row\". Use `action` instead.',\n )\n }\n if (!isRow && action) {\n console.warn(\n 'SectionMessage: `action` is ignored when layout=\"stack\". Use `actions` instead.',\n )\n }\n }\n\n /** The body: title + optional description. */\n const body = (\n <div className=\"min-w-0\">\n {title ? (\n <p\n className={cn(\n size === \"sm\" ? \"type-section-message-title-sm\" : \"type-section-message-title\",\n TITLE_CLASSES[variant],\n description ? (size === \"sm\" ? \"mb-1\" : \"mb-2\") : \"mb-0\",\n )}\n >\n {title}\n </p>\n ) : null}\n {description ? (\n <p\n className={cn(\n size === \"sm\"\n ? \"type-section-message-description-sm m-0\"\n : \"type-section-message-description m-0\",\n DESC_CLASSES[variant],\n )}\n >\n {description}\n </p>\n ) : null}\n </div>\n )\n\n /** The dismiss (close X) button — a NavigationButton, per the icon-button\n * law, carrying the message tone's ink. */\n const closeButton = showCloseButton ? (\n <NavigationButton\n type=\"button\"\n size=\"xs\"\n onClick={onDismiss}\n aria-label={dismissLabel}\n className={cn(\n // No positioning nudges — the button sits at the grid cell's natural\n // top-right position, which (with items-start + the container's own\n // padding) lands it a uniform inset from the top and right edges in\n // every layout, matching the card's own padding exactly.\n \"cursor-pointer bg-transparent transition-opacity hover:bg-transparent hover:opacity-100\",\n size === \"sm\" ? \"size-5 [&_svg:not([class*='size-'])]:size-3.5\" : \"size-6 [&_svg:not([class*='size-'])]:size-4\",\n CLOSE_CLASSES[variant],\n )}\n >\n <X />\n </NavigationButton>\n ) : null\n\n /** The leading icon column. */\n const iconColumn = showIcon ? (\n <div\n aria-hidden\n className={cn(\n \"inline-flex shrink-0 [&_svg]:size-full\",\n size === \"sm\" ? \"size-3.5\" : \"size-4\",\n // Single-line: grid is items-center so the icon centers automatically.\n // Multi-line / stack: top-aligned with the title cap-height via an\n // optical nudge so the icon reads as introducing the message header,\n // not floating between title and description.\n isSingleLine ? \"\" : size === \"sm\" ? \"mt-px\" : \"mt-0.5\",\n ICON_CLASSES[variant],\n )}\n >\n {resolvedIcon}\n </div>\n ) : null\n\n if (isRow) {\n return (\n <div\n role={role}\n aria-live={ariaLive}\n data-slot=\"section-message\"\n data-variant={variant}\n data-layout=\"row\"\n data-size={size}\n className={cn(\n sectionMessageVariants({ variant, layout: \"row\", size }),\n isSingleLine ? SINGLE_LINE_CLASSES[size] : \"\",\n // No action button → never need the second (mobile action-wrap) row.\n // Without this, that row still exists at 0px tall but its gap-y\n // renders below the body anyway, padding the bottom more than the top.\n !action ? \"grid-rows-1\" : \"\",\n className,\n )}\n {...props}\n >\n {/* icon — col 1 row 1, both breakpoints */}\n {iconColumn}\n {/* body — col 2 row 1, both breakpoints */}\n <div className=\"col-start-2 row-start-1 min-w-0\">{body}</div>\n {/* close X — col 3 row 1 on mobile, col 4 row 1 on desktop (always top-right) */}\n <div className=\"col-start-3 row-start-1 sm:col-start-4 sm:row-start-1\">\n {closeButton}\n </div>\n {/* action — col 2 row 2 (under body) on mobile; col 3 row 1 (inline) on desktop.\n justify-self-start on mobile keeps the button left-aligned under the body. */}\n {action ? (\n <div className=\"col-start-2 row-start-2 justify-self-start sm:col-start-3 sm:row-start-1 sm:self-center sm:justify-self-end\">\n {wrapAction(action, buttonVariant, buttonSize)}\n </div>\n ) : null}\n </div>\n )\n }\n\n // Stack layout\n return (\n <div\n role={role}\n aria-live={ariaLive}\n data-slot=\"section-message\"\n data-variant={variant}\n data-layout=\"stack\"\n data-size={size}\n className={cn(\n sectionMessageVariants({ variant, layout: \"stack\", size }),\n className,\n )}\n {...props}\n >\n {iconColumn}\n <div className=\"col-start-2 row-start-1 min-w-0\">{body}</div>\n <div className=\"col-start-3 row-start-1\">{closeButton}</div>\n {actions && actions.length > 0 ? (\n // Stack's grid only has 3 columns (icon · body · close), so the actions\n // row spans the 2 columns under body+close (col-span-2), not 3 — col-span-3\n // was reaching past the grid, which silently added an extra invisible\n // column and pushed the close button further from the right edge than\n // every other layout.\n <div\n className={cn(\n \"col-span-2 col-start-2 row-start-2 flex flex-wrap items-center justify-start gap-2\",\n size === \"sm\" ? \"mt-1.5\" : \"mt-2\",\n )}\n >\n {actions.slice(0, 2).map((node, i) => (\n <React.Fragment key={i}>{wrapAction(node, buttonVariant, buttonSize)}</React.Fragment>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\n/**\n * Normalize an action node. React elements (e.g. `<Button>`, `<Link>`) pass through\n * untouched — callers can use them directly to control variant, size, and event\n * handlers. Primitives (`string`, `number`) get wrapped in a `Button` sized to\n * match the message density. Anything else (`null`/`undefined`/booleans/arrays)\n * renders as-is, matching React's defaults.\n */\nfunction wrapAction(\n node: React.ReactNode,\n variant: \"primary-on-brand\" | \"secondary\",\n size: \"sm\",\n): React.ReactNode {\n // If it already looks like a React element (e.g. <Button>...), pass through.\n if (React.isValidElement(node)) return node\n return (\n <Button variant={variant} size={size}>\n {node}\n </Button>\n )\n}\n\nexport { SectionMessage, sectionMessageVariants }\nexport type {\n SectionMessageProps,\n SectionMessageVariant,\n SectionMessageLayout,\n SectionMessageSize,\n}\n\n/* @deprecated — the component was renamed to SectionMessage. These aliases keep\n the old import surface working until the v1.0 cleanup sweep. */\nconst Alert = SectionMessage\nconst alertVariants = sectionMessageVariants\ntype AlertProps = SectionMessageProps\ntype AlertVariant = SectionMessageVariant\ntype AlertLayout = SectionMessageLayout\nexport { Alert, alertVariants }\nexport type { AlertProps, AlertVariant, AlertLayout }\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 { Spinner } from \"./spinner\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-[color,border-color,opacity,box-shadow,transform] outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong active:opacity-60 disabled:pointer-events-none disabled:opacity-24 aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display\",\n {\n variants: {\n variant: {\n // Primary brand blue (#2323FF)\n primary:\n \"bg-background-brand-default text-text-on-brand-static hover:bg-background-brand-hover active:bg-background-brand-pressed active:opacity-100\",\n // Primary Inverse — white bg + blue text; for use on dark/coloured surfaces\n // On-brand family — for buttons standing on a brand-coloured surface\n // (NOT theme inverses): white pill with primary ink, white outline,\n // white text. All static, because the brand panel is the same in\n // both themes.\n \"primary-on-brand\":\n \"bg-background-static-white text-text-brand-default hover:bg-background-static-white-wash\",\n // Secondary — the design file's white-surface pill: card surface,\n // hairline border, prominent ink. Hover swaps to the secondary\n // surface (one lift up), press dims via the shared active state.\n secondary:\n \"bg-background-primary-surface border border-border-default-default text-text-prominent-default hover:bg-background-secondary-surface\",\n // Secondary Inverse — white border + white text; for use on dark/coloured surfaces\n \"secondary-on-brand\":\n \"bg-transparent border border-background-static-white text-text-on-brand-static hover:bg-(--primitive-white-alpha-8)\",\n tertiary:\n \"bg-transparent text-text-prominent-default hover:bg-background-hover-default\",\n // Tertiary Inverse — transparent + white text/icon; for use on dark/coloured surfaces\n \"tertiary-on-brand\":\n \"bg-transparent text-text-on-brand-static hover:bg-(--primitive-white-alpha-8)\",\n // Frosted — the tinted-glass family, one look per surface:\n // `frosted` sits on page surfaces (brand-selected tint + brand ink,\n // hover/pressed via the state-layer glazes stacked over the solid\n // fill); `frosted-on-brand` is the white frost for coloured/art\n // surfaces (hover thickens the frost, press thins it).\n frosted:\n \"bg-background-brand-selected text-text-brand-selected active:opacity-100 hover:[background-image:linear-gradient(var(--background-hover-default),var(--background-hover-default))] active:[background-image:linear-gradient(var(--background-pressed-default),var(--background-pressed-default))]\",\n \"frosted-on-brand\":\n \"bg-(--primitive-white-alpha-24) backdrop-blur-md border border-(--primitive-white-alpha-24) text-text-on-brand-static hover:bg-(--primitive-white-alpha-32) active:bg-(--primitive-white-alpha-16) active:opacity-100\",\n\n /* @deprecated aliases — shimmer became the `shimmer` boolean prop;\n the inverse names became the on-brand family; `glass` became\n `frosted-on-brand`. Deleted at v1.0. */\n glass:\n \"bg-(--primitive-white-alpha-24) backdrop-blur-md border border-(--primitive-white-alpha-24) text-text-on-brand-static hover:bg-(--primitive-white-alpha-32) active:bg-(--primitive-white-alpha-16) active:opacity-100\",\n \"primary-shimmer\":\n \"relative overflow-hidden bg-background-brand-default text-text-on-brand-static hover:bg-background-brand-hover active:bg-background-brand-pressed active:opacity-100\",\n \"primary-on-brand-shimmer\":\n \"relative overflow-hidden bg-background-static-white text-text-brand-default hover:bg-background-static-white-wash\",\n \"primary-inverse\":\n \"bg-background-static-white text-text-brand-container-static hover:bg-background-static-white-wash\",\n \"primary-inverse-shimmer\":\n \"relative overflow-hidden bg-background-static-white text-text-brand-container-static hover:bg-background-static-white-wash\",\n \"secondary-inverse\":\n \"bg-transparent border border-background-static-white text-text-on-brand-static hover:bg-(--primitive-white-alpha-8)\",\n \"tertiary-inverse\":\n \"bg-transparent text-text-on-brand-static hover:bg-(--primitive-white-alpha-8)\",\n },\n size: {\n // One primitive type step per size (16/14/12) and padding-x = half\n // the height (24/20/16) — the same ladder Badge rides.\n // Spacing rule: padding-x = height/2 - 4 (20/16/12), gap fixed at 8.\n // Type one primitive step per size (18/16/14); icons track the height.\n lg: \"type-button-lg h-12 w-fit gap-2 rounded-full px-5 [&_svg:not([class*='size-'])]:size-5\",\n md: \"type-button-md h-10 w-fit gap-2 rounded-full px-4 [&_svg:not([class*='size-'])]:size-4\",\n sm: \"type-button-sm h-8 w-fit gap-2 rounded-full px-3 [&_svg:not([class*='size-'])]:size-3.5\",\n icon: \"size-12 rounded-full [&_svg:not([class*='size-'])]:size-5\",\n \"icon-lg\": \"size-12 rounded-full [&_svg:not([class*='size-'])]:size-5\",\n \"icon-md\": \"size-10 rounded-full [&_svg:not([class*='size-'])]:size-4\",\n \"icon-sm\": \"size-8 rounded-full [&_svg:not([class*='size-'])]:size-3.5\",\n \"icon-xs\": \"size-6 rounded-full [&_svg:not([class*='size-'])]:size-3\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n }\n)\n\nconst spinnerSizeMap: Record<string, string> = {\n lg: \"size-5\",\n md: \"size-4\",\n sm: \"size-3.5\",\n icon: \"size-4\",\n \"icon-lg\": \"size-4\",\n \"icon-md\": \"size-4\",\n \"icon-sm\": \"size-3.5\",\n \"icon-xs\": \"size-3\",\n}\n\n/**\n * Shimmer gradients. The animation keyframes (`button-shimmer`) live in\n * `src/styles.css` and translate the gradient from -100% to 100%\n * horizontally. 110° tilts the bright band forward so the sweep reads as a\n * diagonal shine; three stops around 50% (soft → mid → soft) shape the\n * highlight like a polished-metal gleam.\n *\n * primary → white sweep over the brand fill\n * primary-on-brand → brand-blue sweep over the white pill (a white sweep\n * would be invisible on white)\n */\nconst WHITE_SWEEP =\n \"linear-gradient(110deg, transparent 20%, rgba(255,255,255,0.10) 40%, rgba(255,255,255,0.20) 50%, rgba(255,255,255,0.10) 60%, transparent 80%)\"\nconst BRAND_SWEEP =\n \"linear-gradient(110deg, transparent 20%, rgba(35,35,255,0.07) 40%, rgba(35,35,255,0.14) 50%, rgba(35,35,255,0.07) 60%, transparent 80%)\"\n\n/** Which sweep a variant gets when `shimmer` is on (or via deprecated variants). */\nconst shimmerGradients: Record<string, string> = {\n primary: WHITE_SWEEP,\n \"primary-on-brand\": BRAND_SWEEP,\n \"primary-shimmer\": WHITE_SWEEP,\n \"primary-on-brand-shimmer\": BRAND_SWEEP,\n \"primary-inverse\": BRAND_SWEEP,\n \"primary-inverse-shimmer\": BRAND_SWEEP,\n}\n\nfunction Button({\n className,\n variant = \"primary\",\n size = \"md\",\n asChild = false,\n loading = false,\n shimmer = false,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n loading?: boolean\n /**\n * Attention sweep for headline CTAs — a modifier, not a variant.\n * Only meaningful on the primary family (`primary`, `primary-on-brand`);\n * ignored elsewhere with a dev warning.\n */\n shimmer?: boolean\n }) {\n // Shimmer applies to the primary family only; the deprecated *-shimmer\n // variants imply it for back-compat.\n const shimmerCapable =\n variant === \"primary\" || variant === \"primary-on-brand\" ||\n variant === \"primary-inverse\"\n const legacyShimmer =\n variant === \"primary-shimmer\" ||\n variant === \"primary-on-brand-shimmer\" ||\n variant === \"primary-inverse-shimmer\"\n const showShimmer = legacyShimmer || (shimmer && shimmerCapable)\n if (process.env.NODE_ENV !== \"production\" && shimmer && !shimmerCapable && !legacyShimmer) {\n console.warn(\n `Button: \\`shimmer\\` only applies to the primary family — ignored on variant=\"${variant}\".`,\n )\n }\n\n const sharedProps = {\n \"data-slot\": \"button\",\n \"data-variant\": variant,\n \"data-size\": size,\n \"data-loading\": loading || undefined,\n \"data-shimmer\": showShimmer || undefined,\n className: cn(\n buttonVariants({ variant, size, className }),\n showShimmer && \"relative overflow-hidden\",\n loading && \"pointer-events-none opacity-24 relative\",\n ),\n \"aria-busy\": loading || undefined,\n ...props,\n }\n\n // `asChild` merges Button's styling onto a caller-supplied element via Slot,\n // which accepts exactly ONE child. The shimmer and loading branches below sit\n // in their own JSX slots, so even when they render nothing they make `children`\n // an array of two — and Slot rejects any array, empty entries included. Pass\n // `children` through on its own here. Shimmer and loading are unavailable in\n // this mode by nature: Slot has no room for the extra layers they need.\n if (asChild) {\n return <Slot.Root {...sharedProps}>{children}</Slot.Root>\n }\n\n return (\n <button {...sharedProps}>\n {/* Shimmer sweep — rendered before children so the icon/label paint\n over the (mostly-transparent) gradient. Suppressed while loading\n or disabled so the button still reads as inert. */}\n {showShimmer && variant && shimmerGradients[variant] && !loading && !props.disabled ? (\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-0 [animation:var(--animate-button-shimmer)]\"\n style={{ background: shimmerGradients[variant] }}\n />\n ) : null}\n {loading ? (\n <>\n <span className=\"invisible inline-flex items-center gap-[inherit]\" aria-hidden>\n {children}\n </span>\n <span className=\"absolute inset-0 flex items-center justify-center\">\n <Spinner className={spinnerSizeMap[size ?? \"md\"]} />\n </span>\n </>\n ) : children}\n </button>\n )\n}\n\nexport { Button, buttonVariants }\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 {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: \"currentColor\",\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 * 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 navigationButtonVariants = cva(\n // Icon-only nav control — circular like every icon button in the system.\n \"inline-flex shrink-0 items-center justify-center rounded-full transition-all duration-fast ease-standard outline-none focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong active:opacity-60 disabled:pointer-events-none disabled:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-transparent text-icon-prominent-default hover:bg-background-hover-default\",\n // Frosted circle for art/hero/brand surfaces — same recipe as\n // Button's frosted-on-brand: hover thickens the frost, press thins it.\n \"frosted-on-brand\":\n \"bg-(--primitive-white-alpha-24) backdrop-blur-md border border-(--primitive-white-alpha-24) text-text-on-brand-static hover:bg-(--primitive-white-alpha-32) active:bg-(--primitive-white-alpha-16) active:opacity-100\",\n /* @deprecated — renamed to frosted-on-brand. Deleted at v1.0. */\n glass:\n \"bg-(--primitive-white-alpha-24) backdrop-blur-md border border-(--primitive-white-alpha-24) text-text-on-brand-static hover:bg-(--primitive-white-alpha-32) active:bg-(--primitive-white-alpha-16) active:opacity-100\",\n },\n size: {\n lg: \"size-12 [&_svg:not([class*='size-'])]:size-6\",\n md: \"size-10 [&_svg:not([class*='size-'])]:size-5\",\n sm: \"size-8 [&_svg:not([class*='size-'])]:size-5\",\n xs: \"size-6 [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"lg\",\n },\n }\n)\n\nfunction NavigationButton({\n className,\n variant = \"default\",\n size = \"lg\",\n asChild = false,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof navigationButtonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"navigation-button\"\n data-variant={variant}\n data-size={size}\n className={cn(navigationButtonVariants({ variant, size, className }))}\n {...props}\n >\n {children}\n </Comp>\n )\n}\n\nexport { NavigationButton, navigationButtonVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-background-overlay-default 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 AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n \"group/alert-dialog-content fixed top-[50%] left-[50%] z-50 flex h-auto w-full max-w-[calc(100%-2rem)] flex-col translate-x-[-50%] translate-y-[-50%] gap-6 rounded-2xl border border-border-default-default bg-background-primary-surface p-6 duration-base data-[size=sm]:max-w-xs 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 data-[size=default]:sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n \"type-alert-dialog-title sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"type-alert-dialog-description text-text-subtle-default\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-16 items-center justify-center rounded-md bg-background-secondary-surface sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n variant = \"primary\",\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <Button variant={variant} size={size} asChild className={cn(\"group-data-[size=sm]/alert-dialog-content:w-full\", className)}>\n <AlertDialogPrimitive.Action\n data-slot=\"alert-dialog-action\"\n {...props}\n />\n </Button>\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"tertiary\",\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <Button variant={variant} size={size} asChild className={cn(\"group-data-[size=sm]/alert-dialog-content:w-full\", className)}>\n <AlertDialogPrimitive.Cancel\n data-slot=\"alert-dialog-cancel\"\n {...props}\n />\n </Button>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\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 \"type-avatar-fallback flex size-full items-center justify-center overflow-hidden rounded-full bg-background-secondary-surface text-text-subtle-default\",\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-background-brand-default text-text-on-brand-static ring-2 ring-background-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-background-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 \"type-avatar-group-count relative flex size-8 shrink-0 items-center justify-center rounded-full bg-background-secondary-surface text-text-subtle-default ring-2 ring-background-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 badgeVariants = cva(\n \"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent font-display whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong [&>svg]:pointer-events-none [&>svg]:size-3\",\n {\n variants: {\n variant: {\n /* Emphasis + meaning. Emphasis is `solid` | `tint`;\n meaning is the suffix, with brand left unsuffixed as the\n default. Two variants sit outside the grid — `glass` and\n `demo` — because they are single-purpose surfaces. */\n\n // Solid — saturated surface, paired foreground. Status fills are\n // the bright 600 steps with shared white ink\n // (--text-on-status-static) — a deliberate style call.\n solid: \"bg-background-brand-default text-text-on-brand-static\",\n \"solid-demo\": \"bg-background-demo-solid text-text-on-brand-static\",\n \"solid-neutral\": \"bg-background-inverse-surface text-text-prominent-inverse\",\n \"solid-success\": \"bg-background-success-solid text-text-on-status-static\",\n \"solid-fail\": \"bg-background-error-solid text-text-on-status-static\",\n \"solid-warning\": \"bg-background-warning-solid text-text-on-status-static\",\n\n // Tint — the Section Message surface tokens, coloured foreground.\n // Brand tint = the static brand-container recipe (layered value,\n // so it paints via `background`, not a bg-* utility).\n tint: \"[background:var(--background-brand-container)] border-transparent text-text-brand-container-static\",\n \"tint-demo\": \"bg-background-demo-default border-transparent text-text-demo-default\",\n \"tint-neutral\": \"bg-background-secondary-surface border-border-neutral-default text-text-prominent-default\",\n \"tint-success\": \"bg-background-success-default border-border-success-default text-text-success-default\",\n \"tint-fail\": \"bg-background-error-default border-border-error-default text-text-error-default\",\n \"tint-warning\": \"bg-background-warning-default border-border-warning-default text-text-warning-default\",\n\n },\n size: {\n xs: \"type-badge-xs h-5 px-2 py-0.5\",\n sm: \"type-badge-sm h-6 px-2.5 py-0.5\",\n md: \"type-badge-md h-8 px-3 py-1\",\n lg: \"type-badge-lg h-10 px-4 py-1.5\",\n },\n },\n defaultVariants: {\n variant: \"solid\",\n size: \"md\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"solid\",\n size = \"md\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Gift, X } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { NavigationButton } from \"./navigation-button\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Banner — the editorial gradient panel */\n/* */\n/* One variant (per the design file): a colour gradient panel with art on */\n/* the left, white copy, and a white pill CTA. Horizontal on desktop, */\n/* stacked on mobile (the \"device delta\"). */\n/* */\n/* The colour is CUSTOMISABLE: pass any CSS colour via `color` — the panel */\n/* paints it as a solid base with a fixed black fade layered on top */\n/* (transparent → 50% left-to-right), which lands on the design file's jade */\n/* panel exactly (#0AA060 → #04512E). Brand blue is the standard when no */\n/* colour is given. The panel is art, not a status surface, so it renders */\n/* identically in both themes. */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ninterface BannerProps extends Omit<React.ComponentProps<\"div\">, \"title\" | \"onClick\"> {\n /**\n * Panel colour — any CSS colour (a game-accent primitive, a hex, a var()).\n * The gradient derives from it automatically. Defaults to the brand blue.\n */\n color?: string\n /** Title text. Required in spirit — the panel is meaningless without it. */\n title?: React.ReactNode\n /** Supporting copy under the title. */\n description?: React.ReactNode\n /**\n * Art slot — game artwork, an illustration, or an icon. Rendered in a\n * frosted square. Defaults to a Gift glyph. Pass `null` to omit.\n */\n art?: React.ReactNode | null\n /**\n * CTA — a string gets wrapped in the Banner's white pill; pass an element\n * to take over the slot entirely.\n */\n action?: React.ReactNode\n /** Click handler for a string `action` — required for the pill to do anything. */\n onAction?: () => void\n /** When provided, the close X renders and calls this on click. */\n onDismiss?: () => void\n /** aria-label for the close button. Defaults to \"Dismiss\". */\n dismissLabel?: string\n /**\n * Makes the entire panel a single click target. Mutually exclusive with\n * `action` — if both are set, the button is ignored and a dev warning logs.\n */\n onClick?: () => void\n}\n\nfunction Banner({\n color = \"var(--background-brand-default)\",\n title,\n description,\n art,\n action,\n onAction,\n onDismiss,\n dismissLabel = \"Dismiss\",\n onClick,\n className,\n style,\n ...props\n}: BannerProps) {\n if (!title && !description) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n \"Banner: requires at least one of `title` or `description`. Rendering null.\",\n )\n }\n return null\n }\n\n const showArt = art !== null\n const resolvedArt = art === undefined ? <Gift className=\"size-6\" /> : art\n const showCloseButton = typeof onDismiss === \"function\"\n const isClickable = typeof onClick === \"function\"\n const buttonSuppressed = isClickable && Boolean(action)\n\n if (process.env.NODE_ENV !== \"production\" && buttonSuppressed) {\n console.warn(\n \"Banner: `onClick` (clickable surface) is mutually exclusive with `action`. Ignoring the button — the whole banner is the CTA.\",\n )\n }\n const effectiveAction = isClickable ? undefined : action\n\n if (\n process.env.NODE_ENV !== \"production\" &&\n effectiveAction !== undefined &&\n effectiveAction !== null &&\n !React.isValidElement(effectiveAction) &&\n typeof onAction !== \"function\"\n ) {\n console.warn(\n \"Banner: a string `action` renders a button that does nothing without `onAction`.\",\n )\n }\n\n const interactiveProps = isClickable\n ? {\n role: \"button\" as const,\n tabIndex: 0,\n onClick,\n onKeyDown: (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n onClick?.()\n }\n },\n }\n : {}\n\n return (\n // The wrapper is a size container so the panel stacks whenever the BANNER\n // is narrow — not just when the viewport is (the design file's device\n // delta, made container-aware).\n <div className=\"@container w-full\">\n <div\n data-slot=\"banner\"\n data-clickable={isClickable ? \"true\" : undefined}\n className={cn(\n \"relative flex w-full flex-col items-start gap-3 overflow-hidden rounded-2xl p-4 @sm:flex-row @sm:items-center @sm:gap-4\",\n // Reserve the top-right corner for the absolute close X so copy never\n // runs underneath it (12 = 32px button + 16px breathing room).\n showCloseButton && \"pr-12\",\n isClickable &&\n \"cursor-pointer transition-opacity hover:opacity-90 active:opacity-80 outline-none focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong focus-visible:ring-offset-2\",\n className,\n )}\n style={{\n // Two layers, like a Figma fill stack: the consumer's solid colour at\n // the bottom, a FIXED black fade on top (transparent -> black 50%,\n // left to right). The fade never depends on the colour, so any custom\n // colour — token or not — darkens correctly with zero tuning.\n background: `linear-gradient(120deg, rgb(0 0 0 / 0%), rgb(0 0 0 / 50%)), ${color}`,\n ...style,\n }}\n {...interactiveProps}\n {...props}\n >\n {/* Art — frosted square riding the panel colour */}\n {showArt ? (\n <span\n aria-hidden\n className=\"inline-flex size-14 shrink-0 items-center justify-center overflow-hidden rounded-xl bg-[var(--primitive-white-alpha-16)] text-text-on-brand-static [&_img]:size-full [&_img]:object-cover\"\n >\n {resolvedArt}\n </span>\n ) : null}\n\n {/* Copy */}\n <div className=\"min-w-0 flex-1\">\n {title ? (\n <p className=\"type-banner-title m-0 text-text-on-brand-static\">{title}</p>\n ) : null}\n {description ? (\n <p className=\"type-banner-description m-0 mt-1 text-[var(--primitive-white-alpha-80)]\">\n {description}\n </p>\n ) : null}\n </div>\n\n {/* CTA — white pill with near-black ink; full-width when stacked */}\n {effectiveAction !== undefined && effectiveAction !== null ? (\n <div className=\"w-full shrink-0 @sm:w-auto\">{wrapAction(effectiveAction, onAction)}</div>\n ) : null}\n\n {/* Dismiss — a NavigationButton carrying the on-brand ink */}\n {showCloseButton ? (\n <NavigationButton\n type=\"button\"\n size=\"sm\"\n onClick={(e) => {\n e.stopPropagation()\n onDismiss?.()\n }}\n aria-label={dismissLabel}\n className=\"absolute top-3 right-3 cursor-pointer text-text-on-brand-static opacity-70 transition-opacity hover:bg-transparent hover:opacity-100 [&_svg:not([class*='size-'])]:size-4\"\n >\n <X />\n </NavigationButton>\n ) : null}\n </div>\n </div>\n )\n}\n\n/**\n * Normalize the CTA. Elements pass through untouched; strings/numbers get\n * the system Button (primary-on-brand: white pill, brand ink) on the sm\n * rail — full-width in the stacked (mobile) layout, hugging its label at sm+.\n */\nfunction wrapAction(node: React.ReactNode, onAction?: () => void): React.ReactNode {\n if (React.isValidElement(node)) return node\n return (\n <Button\n variant=\"primary-on-brand\"\n size=\"sm\"\n className=\"w-full @sm:w-auto\"\n onClick={(e) => {\n e.stopPropagation()\n onAction?.()\n }}\n >\n {node}\n </Button>\n )\n}\n\nexport { Banner }\nexport type { BannerProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Sparkles } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Bottom Navigation — the mobile counterpart of the desktop Sidebar */\n/* */\n/* A floating pill docked above the bottom edge, holding up to five */\n/* destinations as icon + label stacks (four maximum — three is the norm, */\n/* giving each cell and the bubble generous breathing room). */\n/* */\n/* Material (Refined Mobile spec): heavy near-solid frost — white 78% in */\n/* light, navy 72% in dark — with blur(20)+saturate(1.4) and a soft ambient */\n/* lift. That lift is the one sanctioned shadow exception: floating chrome */\n/* over scrolling content needs separation; inline components still never */\n/* carry shadows. */\n/* */\n/* Selection is a single liquid bubble that travels between destinations: */\n/* the leading edge darts ahead (200ms), the trailing edge is pulled after */\n/* on a slower spring (380ms) — the water-drop absorb. The bubble keeps an */\n/* equal 4px gap on every side (the bar's px-1 padding is the horizontal */\n/* gap), so its full-pill radius nests concentrically inside the bar's */\n/* corners. The bubble is a top-lit gloss over the brand-selected fill; the */\n/* arriving icon pops on an overshoot spring; labels never change size or */\n/* weight. */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nconst MAX_ITEMS = 4\n/** Fallbacks mirroring the motion tokens (used before styles resolve). */\nconst LEAD_MS = 200 // --motion-travel-lead\nconst TRAIL_MS = 380 // --motion-travel-trail\nconst SPRING = \"cubic-bezier(0.3, 1.25, 0.4, 1)\" // --primitive-ease-spring\n\n/** Read a duration token off the nav; falls back to the TS mirror.\n * Computed custom properties normalise to seconds (\"0.38s\"). */\nfunction readMs(styles: CSSStyleDeclaration, token: string, fallback: number) {\n const raw = styles.getPropertyValue(token).trim()\n const value = parseFloat(raw)\n if (!Number.isFinite(value)) return fallback\n return raw.endsWith(\"ms\") ? value : value * 1000\n}\n\nfunction BottomNavigation({\n className,\n children,\n ...props\n}: React.ComponentProps<\"nav\">) {\n const navRef = React.useRef<HTMLElement>(null)\n const bubbleRef = React.useRef<HTMLSpanElement>(null)\n const prevLeft = React.useRef<number | null>(null)\n\n const items = React.Children.toArray(children)\n if (process.env.NODE_ENV !== \"production\" && items.length > MAX_ITEMS) {\n console.warn(\n `BottomNavigation: ${items.length} items — a phone fits at most ${MAX_ITEMS}.`,\n )\n }\n const activeIndex = items.findIndex(\n (child) =>\n React.isValidElement<{ active?: boolean }>(child) && child.props.active,\n )\n\n // Places the bubble over the active item. left/right animate on staggered\n // timings: the edge leading the travel direction moves fast, the other is\n // dragged behind on the spring — the liquid pull.\n const measure = React.useCallback(() => {\n const nav = navRef.current\n const bubble = bubbleRef.current\n if (!nav || !bubble) return\n const target = nav.querySelectorAll<HTMLElement>(\n \"[data-slot=bottom-navigation-item]\",\n )[activeIndex]\n if (!target) {\n bubble.style.opacity = \"0\"\n prevLeft.current = null\n return\n }\n const left = target.offsetLeft\n const right = nav.clientWidth - (target.offsetLeft + target.offsetWidth)\n\n const first = prevLeft.current === null\n const movingRight = !first && left > (prevLeft.current as number)\n prevLeft.current = left\n\n if (first) {\n // First paint (and re-placement after resize): no travel animation.\n bubble.style.transition = \"none\"\n } else {\n const styles = getComputedStyle(nav)\n const lead = readMs(styles, \"--motion-travel-lead\", LEAD_MS)\n const trail = readMs(styles, \"--motion-travel-trail\", TRAIL_MS)\n const spring = styles.getPropertyValue(\"--primitive-ease-spring\").trim() || SPRING\n const leftMs = movingRight ? trail : lead\n const rightMs = movingRight ? lead : trail\n bubble.style.transition = `left ${leftMs}ms ${spring}, right ${rightMs}ms ${spring}`\n }\n bubble.style.opacity = \"1\"\n bubble.style.left = `${left}px`\n bubble.style.right = `${right}px`\n if (first) {\n requestAnimationFrame(() => {\n if (bubbleRef.current) bubbleRef.current.style.transition = \"\"\n })\n }\n }, [activeIndex])\n\n React.useLayoutEffect(() => {\n measure()\n }, [measure, items.length])\n\n const lastWidth = React.useRef<number | null>(null)\n React.useEffect(() => {\n const nav = navRef.current\n if (!nav) return\n const ro = new ResizeObserver((entries) => {\n const width = entries[0]?.contentRect.width ?? nav.clientWidth\n // The observer fires once on observe — only re-place when the bar\n // actually changed size, otherwise it wipes the travel memory and the\n // first selection snaps instead of animating.\n if (lastWidth.current !== null && lastWidth.current !== width) {\n prevLeft.current = null\n measure()\n }\n lastWidth.current = width\n })\n ro.observe(nav)\n return () => ro.disconnect()\n }, [measure])\n\n return (\n <nav\n ref={navRef}\n data-slot=\"bottom-navigation\"\n className={cn(\n \"relative flex h-15 w-full items-center justify-around rounded-full border px-1\",\n \"border-(--border-chrome-default) bg-(--background-chrome-default)\",\n \"[backdrop-filter:blur(20px)_saturate(1.4)] [box-shadow:var(--shadow-chrome-default)]\",\n className,\n )}\n {...props}\n >\n <span\n ref={bubbleRef}\n aria-hidden\n data-slot=\"bottom-navigation-bubble\"\n className=\"pointer-events-none absolute inset-y-1 rounded-full opacity-0 [background:var(--background-chrome-selected)] [box-shadow:inset_0_1px_0_var(--chrome-highlight-default)]\"\n />\n {children}\n </nav>\n )\n}\n\nfunction BottomNavigationItem({\n className,\n active = false,\n asChild = false,\n children,\n ...props\n}: React.ComponentProps<\"button\"> & {\n /** Marks the current destination — the liquid bubble travels to it. */\n active?: boolean\n /** Render as the child element (e.g. a router link). */\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"button\"\n return (\n <Comp\n data-slot=\"bottom-navigation-item\"\n data-active={active || undefined}\n aria-current={active ? \"page\" : undefined}\n className={cn(\n \"type-bottom-navigation-label relative z-10 flex flex-1 cursor-pointer flex-col items-center justify-center gap-0.5 rounded-full py-1.5 text-(--text-chrome-subtle) outline-none transition-colors\",\n \"hover:text-text-prominent-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong\",\n \"data-[active]:text-(--text-chrome-selected)\",\n // Icon pop on arrival lives in styles.css (a data-active CSS rule —\n // stacked arbitrary variants can't reach descendant svgs reliably).\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\",\n className,\n )}\n {...props}\n >\n {children}\n </Comp>\n )\n}\n\n/**\n * The optional AI circle from the Refined Mobile chrome: identical material\n * and ambient lift, circular, sits beside the bar (typically in a\n * `flex items-center gap-2.5` row). Render it or don't — that's the toggle.\n */\nfunction BottomNavigationAI({\n className,\n asChild = false,\n children,\n ...props\n}: React.ComponentProps<\"button\"> & {\n /** Render as the child element (e.g. a router link). */\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"button\"\n return (\n <Comp\n data-slot=\"bottom-navigation-ai\"\n className={cn(\n \"grid size-15 flex-none cursor-pointer place-items-center rounded-full border\",\n \"border-(--border-chrome-default) bg-(--background-chrome-default)\",\n \"[backdrop-filter:blur(20px)_saturate(1.4)] [box-shadow:var(--shadow-chrome-default)]\",\n \"text-(--text-chrome-selected) transition-transform active:scale-[0.93]\",\n \"outline-none focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5.5\",\n className,\n )}\n {...props}\n >\n {children ?? <Sparkles />}\n </Comp>\n )\n}\n\nexport { BottomNavigation, BottomNavigationItem, BottomNavigationAI }\n","import * as React from \"react\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"type-breadcrumb flex flex-wrap items-center gap-1.5 break-words text-text-subtle-default sm:gap-2.5\",\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\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(\"transition-colors hover:text-text-prominent-default\", className)}\n {...props}\n />\n )\n}\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(\"type-breadcrumb-page text-text-brand-default\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\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-8 items-center justify-center\", 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","\"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\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./select\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"secondary\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-background-primary-surface p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\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 // pointer-events-none lets clicks reach the caption dropdowns the\n // strip overlaps; the arrow buttons re-enable their own hits.\n \"pointer-events-none 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: buttonVariant }),\n \"pointer-events-auto size-(--cell-size) p-0 select-none aria-disabled:opacity-24\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"pointer-events-auto size-(--cell-size) p-0 select-none aria-disabled:opacity-24\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex h-(--cell-size) w-full items-center justify-center px-10\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"type-calendar-caption flex h-(--cell-size) w-full items-center justify-center gap-1.5\",\n defaultClassNames.dropdowns\n ),\n caption_label: cn(\n \"type-calendar-caption font-body text-text-prominent-default select-none\",\n captionLayout === \"label\"\n ? \"\"\n : \"flex h-8 items-center gap-1 rounded-full pr-1 pl-2 [&>svg]:size-3.5 [&>svg]:text-icon-subtle-default\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"type-calendar-weekday flex-1 rounded-md font-body text-text-subtle-default 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 \"type-calendar-weekday text-text-subtle-default 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-full\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-full\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-full\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-full [background:var(--background-brand-container)]\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-full [background:var(--background-brand-container)]\", defaultClassNames.range_end),\n today: cn(\n \"rounded-full data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-text-disabled-default aria-selected:text-text-disabled-default\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-text-disabled-default\",\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 Dropdown: CalendarDropdown,\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\n/**\n * Themed replacement for the caption's native month/year <select>s: the\n * trigger is a system pill, the options open in our own scrollable popover\n * instead of the OS menu.\n */\nfunction CalendarDropdown({\n options,\n value,\n onChange,\n \"aria-label\": ariaLabel,\n}: React.ComponentProps<\"select\"> & {\n options?: { value: number; label: string; disabled?: boolean }[]\n}) {\n // Fixed trigger widths so the caption — and therefore the whole w-fit\n // panel — never resizes when the label changes (Jan vs Sep, 999 vs 2026).\n const isMonth = options?.some(({ label }) => /[^0-9]/.test(label)) ?? false\n return (\n <Select\n value={String(value)}\n onValueChange={(next) => {\n const event = {\n target: { value: next },\n } as React.ChangeEvent<HTMLSelectElement>\n onChange?.(event)\n }}\n >\n <SelectTrigger\n aria-label={ariaLabel}\n size=\"sm\"\n className={cn(\n \"type-calendar-caption h-8 justify-between gap-1 rounded-full border-border-default-default bg-background-primary-surface px-3 text-text-prominent-default\",\n isMonth ? \"w-20\" : \"w-24\",\n )}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-64 min-w-24\">\n {options?.map(({ value: v, label, disabled }) => (\n <SelectItem key={v} value={String(v)} disabled={disabled}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\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 // Base day cell — circular, calendar's own type, prominent ink,\n // hover = the standard hover glaze.\n \"type-calendar-day flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 rounded-full leading-none font-body bg-transparent border-transparent shadow-none text-text-prominent-default hover:!bg-background-hover-default hover:text-text-prominent-default hover:no-underline hover:shadow-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong\",\n // Today (when not selected) — brand number + a 4px brand dot below.\n \"[&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:font-semibold [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:text-text-brand-default [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:relative [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:absolute [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:bottom-0.5 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:left-1/2 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:-translate-x-1/2 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:size-1 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:rounded-full [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:bg-background-brand-default\",\n // Selected single — the static icy brand chip, circular.\n \"data-[selected-single=true]:[background:var(--background-brand-container)] data-[selected-single=true]:border-transparent data-[selected-single=true]:text-text-brand-container-static data-[selected-single=true]:font-semibold data-[selected-single=true]:hover:![background:var(--background-brand-container)]\",\n // Range — icy band: circular ends (semibold), square middle.\n \"data-[range-start=true]:rounded-full data-[range-start=true]:rounded-l-full data-[range-start=true]:[background:var(--background-brand-container)] data-[range-start=true]:border-transparent data-[range-start=true]:text-text-brand-container-static data-[range-start=true]:font-semibold data-[range-start=true]:hover:![background:var(--background-brand-container)]\",\n \"data-[range-middle=true]:rounded-none data-[range-middle=true]:[background:var(--background-brand-container)] data-[range-middle=true]:text-text-brand-container-static data-[range-middle=true]:hover:![background:var(--background-brand-container)]\",\n \"data-[range-end=true]:rounded-full data-[range-end=true]:rounded-r-full data-[range-end=true]:[background:var(--background-brand-container)] data-[range-end=true]:border-transparent data-[range-end=true]:text-text-brand-container-static data-[range-end=true]:font-semibold data-[range-end=true]:hover:![background:var(--background-brand-container)]\",\n \"[&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\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\n// .type-* classes are plain CSS, not utilities — Tailwind data-[] variants\n// can't gate them, so the trigger picks its type class here.\nconst selectTriggerType = {\n sm: \"type-select-sm\",\n md: \"type-select-md\",\n lg: \"type-select-lg\",\n} as const\n\nfunction SelectTrigger({\n className,\n size = \"md\",\n readOnly = false,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"md\" | \"lg\"\n readOnly?: boolean\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n data-readonly={readOnly ? \"\" : undefined}\n className={cn(\n selectTriggerType[size],\n \"flex w-fit items-center justify-between gap-2 rounded-xs border border-border-default-default bg-background-primary-surface text-text-prominent-default appearance-none whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-soft disabled:cursor-not-allowed disabled:opacity-24 aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft data-[placeholder]:text-text-subtle-default data-[size=sm]:h-8 data-[size=sm]:px-3 data-[size=sm]:py-1 data-[size=md]:h-10 data-[size=md]:px-3 data-[size=md]:py-1 data-[size=lg]:h-12 data-[size=lg]:px-4 data-[size=lg]:py-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 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[readonly]:cursor-default data-[readonly]:opacity-100\",\n className\n )}\n {...props}\n // Read-only stays focusable and announced (unlike disabled) — it just\n // never opens. Guards sit after the props spread so a consumer handler\n // can't undo them.\n aria-readonly={readOnly || undefined}\n onPointerDown={(e) => {\n if (readOnly) { e.preventDefault(); return }\n props.onPointerDown?.(e)\n }}\n onKeyDown={(e) => {\n if (readOnly && [\"Enter\", \" \", \"ArrowDown\", \"ArrowUp\"].includes(e.key)) {\n e.preventDefault()\n return\n }\n props.onKeyDown?.(e)\n }}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className={cn(\"size-4\", readOnly ? \"opacity-30\" : \"opacity-50\")} />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n // \"popper\" drops the list below the trigger, fixed in place. The Radix\n // default (\"item-aligned\") slides the list so the chosen item overlaps\n // the trigger — reads as a bug next to our other menus.\n position = \"popper\",\n align = \"start\",\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-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg border border-border-default-default bg-background-primary-surface text-text-prominent-default 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 {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] 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(\"type-menu-heading px-2 py-1.5 text-text-subtle-default\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-8 pl-2 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[state=checked]:text-text-brand-selected data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4 text-text-brand-selected\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border-default-default\", 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","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Card shell — the design file's shared surface language: card surface,\n * hairline border, 18px (2xl) radius, flat (no shadow, per system rule).\n *\n * `variant=\"frosted-on-brand\"` is the frosted shell for sitting over\n * hero/game art: white 72% + blur + soft white hairline, identical in both\n * themes. (`glass` is its @deprecated alias — deleted at v1.0.)\n * `interactive` opts into the design file's desktop-only hover lift.\n */\nfunction Card({\n className,\n variant = \"default\",\n interactive = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: \"default\" | \"frosted-on-brand\" | \"glass\"\n interactive?: boolean\n}) {\n return (\n <div\n data-slot=\"card\"\n data-variant={variant}\n className={cn(\n \"flex flex-col gap-4 rounded-2xl py-4\",\n variant === \"frosted-on-brand\" || variant === \"glass\"\n ? \"border border-(--primitive-white-alpha-64) bg-(--primitive-white-alpha-80) backdrop-blur-xl text-text-static-black\"\n : \"border border-border-default-default bg-background-primary-surface text-text-prominent-default\",\n interactive &&\n \"transition-transform duration-base ease-standard sm:hover:-translate-y-0.75 motion-reduce:transition-none motion-reduce:sm:hover:translate-y-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-4 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"h6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"body-sm text-text-subtle-default\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-4\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-4 [.border-t]:pt-4\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport 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\",\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\",\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","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Chip — the design file's \"one shape, four jobs\" pill. Quick amounts and\n * categories are the default look; `selected` turns solid brand (white ink);\n * `variant=\"outline\"` is the error-recovery chip (brand border + brand text,\n * e.g. \"Max 1,240.50\"). Live-status pills belong to Badge, not Chip.\n */\nconst chipVariants = cva(\n \"inline-flex w-fit items-center justify-center rounded-full font-body whitespace-nowrap transition-colors outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:pointer-events-none disabled:border disabled:border-border-default-default disabled:bg-transparent disabled:text-text-disabled-default\",\n {\n variants: {\n size: {\n md: \"type-chip-md h-10 px-4\",\n sm: \"type-chip-sm h-8 px-3\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\ninterface ChipProps\n extends React.ComponentProps<\"button\">,\n VariantProps<typeof chipVariants> {\n selected?: boolean\n /** `outline` = the brand-outlined recovery chip. */\n variant?: \"default\" | \"outline\"\n}\n\nfunction Chip({ children, selected = false, variant = \"default\", size, className, disabled, ...props }: ChipProps) {\n return (\n <button\n type=\"button\"\n aria-pressed={selected}\n data-slot=\"chip\"\n data-size={size}\n data-variant={variant}\n data-selected={selected || undefined}\n disabled={disabled}\n className={cn(\n chipVariants({ size }),\n selected\n ? \"border border-transparent bg-background-brand-default text-text-on-brand-static pointer-events-none cursor-default\"\n : variant === \"outline\"\n ? \"border-[1.5px] border-border-brand-selected bg-background-primary-surface text-text-brand-selected hover:bg-background-hover-default\"\n : \"border border-border-default-default bg-background-primary-surface text-text-prominent-default hover:bg-background-secondary-surface active:bg-background-secondary-wash\",\n className\n )}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nexport { Chip, chipVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon } from \"lucide-react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\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-2xs border border-border-default-default bg-background-primary-surface transition-colors outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:cursor-not-allowed disabled:opacity-24 data-[state=checked]:border-transparent data-[state=checked]:bg-background-brand-default data-[state=checked]:text-text-on-brand-static\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\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-2xl bg-background-primary-surface text-text-prominent-default\",\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-text-subtle-default [&_[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 border-border-default-default px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 text-icon-subtle-default\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"type-menu-item flex h-10 w-full rounded-md bg-transparent py-3 outline-hidden placeholder:text-text-subtle-default disabled:cursor-not-allowed disabled:opacity-24\",\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=\"type-menu-item py-6 text-center text-text-subtle-default\"\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-text-prominent-default [&_[cmdk-group-heading]]:type-menu-heading [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-text-subtle-default\",\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-default-default\", 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 \"type-menu-item relative flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-24 data-[selected=true]:bg-background-hover-default data-[selected=true]:text-text-prominent-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default\",\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 \"type-menu-heading ml-auto text-text-subtle-default\",\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\"\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-50 bg-background-overlay-default 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 ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\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-50 flex h-auto w-full max-w-[calc(100%-2rem)] flex-col translate-x-[-50%] translate-y-[-50%] gap-6 rounded-2xl border border-border-default-default bg-background-primary-surface p-6 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-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"absolute top-4 right-4 inline-flex size-8 items-center justify-center rounded-full text-icon-subtle-default opacity-70 transition-opacity hover:opacity-100 hover:bg-background-hover-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong focus-visible:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", 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-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"secondary\" size=\"md\">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(\"type-dialog-title text-text-prominent-default\", 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(\"type-dialog-description text-text-subtle-default\", 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 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[inset]:pl-8 data-[state=open]:bg-background-hover-default data-[state=open]:text-text-prominent-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default\",\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-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg border border-border-default-default bg-background-primary-surface p-1 text-text-prominent-default 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-50 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-lg border border-border-default-default bg-background-primary-surface p-1 text-text-prominent-default 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 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 data-[inset]:pl-8 data-[variant=destructive]:text-text-error-default data-[variant=destructive]:focus:bg-background-error-default data-[variant=destructive]:focus:text-text-error-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[variant=destructive]:*:[svg]:text-text-error-default!\",\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 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_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 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_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 \"type-menu-heading px-2 py-1.5 text-text-prominent-default 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-default-default\", 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 \"type-menu-shortcut ml-auto text-text-subtle-default\",\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 { 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-50 bg-background-overlay-default 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-50 flex h-auto flex-col bg-background-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-2xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=top]:border-border-default-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-2xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=bottom]:border-border-default-default\",\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-border-default-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-border-default-default data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-border-default-default group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\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(\"type-drawer-title text-text-prominent-default\", className)}\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(\"type-drawer-description text-text-subtle-default\", 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-50 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-lg border border-border-default-default bg-background-primary-surface p-1 text-text-prominent-default 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 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 data-[inset]:pl-8 data-[variant=destructive]:text-text-error-default data-[variant=destructive]:focus:bg-background-error-default data-[variant=destructive]:focus:text-text-error-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[variant=destructive]:*:[svg]:text-text-error-default!\",\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 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_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 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_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 \"type-menu-heading px-2 py-1.5 text-text-prominent-default 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-default-default\", 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 \"type-menu-shortcut ml-auto text-text-subtle-default\",\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 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[inset]:pl-8 data-[state=open]:bg-background-hover-default data-[state=open]:text-text-prominent-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default\",\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-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg border border-border-default-default bg-background-primary-surface p-1 text-text-prominent-default 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-2xl border-dashed border-border-default-default 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-2 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-background-secondary-surface text-icon-prominent-default [&_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(\"type-empty-title text-text-prominent-default\", 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 \"type-empty-description text-text-subtle-default [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-default\",\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 \"type-empty-description flex w-full max-w-sm min-w-0 flex-col items-center gap-4 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 * as React from \"react\"\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\ntype FieldSize = \"sm\" | \"md\" | \"lg\"\n\n/**\n * Field's size cascades to the control inside it: Input (and, as they join\n * the system, other form controls) read this context and default their own\n * size to it, so `<Field size=\"sm\">` sizes the whole frame with one prop.\n * An explicit size on the control still wins.\n */\nconst FieldSizeContext = React.createContext<FieldSize>(\"md\")\n\nfunction useFieldSize() {\n return React.useContext(FieldSizeContext)\n}\n\nconst fieldLabelType: Record<FieldSize, string> = {\n sm: \"type-field-label-sm\",\n md: \"type-field-label-md\",\n lg: \"type-field-label-lg\",\n}\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 text-text-prominent-default\",\n // .type-* classes are plain CSS, not utilities — Tailwind data-[]\n // variants can't gate them, so pick the class here instead.\n variant === \"legend\" ? \"type-field-legend\" : \"type-field-legend-label\",\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 data-[invalid=true]:text-text-error-default\",\n {\n variants: {\n size: {\n sm: \"gap-2\",\n md: \"gap-3\",\n lg: \"gap-3\",\n },\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 size: \"md\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n size = \"md\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <FieldSizeContext.Provider value={size ?? \"md\"}>\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n data-size={size}\n className={cn(fieldVariants({ orientation, size }), className)}\n {...props}\n />\n </FieldSizeContext.Provider>\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 const size = useFieldSize()\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n fieldLabelType[size],\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-24\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border has-[>[data-slot=field]]:border-border-default-default [&>*]:data-[slot=field]:p-4\",\n \"has-data-[state=checked]:border-border-brand-selected has-data-[state=checked]:bg-background-brand-selected\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n const size = useFieldSize()\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n fieldLabelType[size],\n \"flex w-fit items-center gap-2 group-data-[disabled=true]/field:opacity-24\",\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 \"type-field-description text-text-subtle-default 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-text-brand-default\",\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 \"type-field-description relative -my-2 h-5 group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"relative mx-auto block w-fit bg-background-primary-surface px-2 text-text-subtle-default\"\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(\"type-field-description text-text-error-default\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n useFieldSize,\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 // Colour is inherited on purpose: a Field marked data-invalid paints its\n // subtree error-red, and the label follows.\n \"type-label flex items-center gap-2 select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-24 peer-disabled:cursor-not-allowed peer-disabled:opacity-24\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Separator as SeparatorPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border-default-default data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\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-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-2xl border border-border-default-default bg-background-primary-surface p-4 text-text-prominent-default 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\"\nimport { useFieldSize } from \"./field\"\n\nconst inputVariants = cva(\n [\n \"w-full min-w-0 rounded-xs border font-body transition-[color,box-shadow] outline-none\",\n \"file:inline-flex file:border-0 file:bg-transparent file:font-medium\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-24\",\n // Read-only stays focusable and selectable (users copy codes/amounts);\n // only the surface flattens.\n \"read-only:border-transparent read-only:bg-background-secondary-surface\",\n \"focus-visible:ring-[3px]\",\n \"aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft\",\n ].join(\" \"),\n {\n variants: {\n // `default` is the surface treatment; `on-brand` is the sunken\n // dark-glaze treatment for brand-coloured surfaces. Both are built the\n // solid-base-plus-fixed-glaze way: on-brand's fill is a black glaze\n // over whatever brand colour the consumer painted underneath.\n variant: {\n default: [\n \"border-border-default-default bg-background-primary-surface text-text-prominent-default\",\n \"file:text-text-prominent-default\",\n \"placeholder:text-text-subtle-default\",\n \"selection:bg-background-brand-default selection:text-text-on-brand-static\",\n \"focus-visible:border-ring-focus-default focus-visible:ring-ring-focus-soft\",\n ].join(\" \"),\n \"on-brand\": [\n \"border-(--primitive-white-alpha-24) bg-(--primitive-black-alpha-32) text-text-on-brand-static\",\n \"file:text-text-on-brand-static\",\n \"placeholder:text-(--primitive-white-alpha-50)\",\n \"selection:bg-background-static-white selection:text-text-brand-container-static\",\n \"focus-visible:border-background-static-white focus-visible:ring-(--primitive-white-alpha-40)\",\n ].join(\" \"),\n /* @deprecated alias — renamed to `on-brand`. Deleted at v1.0. */\n inverse: [\n \"border-(--primitive-white-alpha-24) bg-(--primitive-black-alpha-32) text-text-on-brand-static\",\n \"file:text-text-on-brand-static\",\n \"placeholder:text-(--primitive-white-alpha-50)\",\n \"selection:bg-background-static-white selection:text-text-brand-container-static\",\n \"focus-visible:border-background-static-white focus-visible:ring-(--primitive-white-alpha-40)\",\n ].join(\" \"),\n },\n size: {\n sm: \"type-input-sm h-8 px-3 py-1 file:h-6 file:text-xs\",\n md: \"type-input-md h-10 px-3 py-1 file:h-7 file:text-sm\",\n lg: \"type-input-lg h-12 px-4 py-2 file:h-8 file:text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction Input({\n className,\n type,\n variant = \"default\",\n size,\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\"> & VariantProps<typeof inputVariants>) {\n // Inside a Field, the field's size prop sets the default; an explicit\n // size on the Input still wins.\n const fieldSize = useFieldSize()\n const resolvedSize = size ?? fieldSize\n return (\n <input\n type={type}\n data-slot=\"input\"\n data-variant={variant}\n data-size={resolvedSize}\n className={cn(inputVariants({ variant, size: resolvedSize }), className)}\n {...props}\n />\n )\n}\n\nexport { Input, inputVariants }\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 { useFieldSize } from \"./field\"\nimport { Input } from \"./input\"\nimport { Textarea } from \"./textarea\"\n\ntype InputGroupSize = \"sm\" | \"md\" | \"lg\"\ntype InputGroupVariant = \"default\" | \"on-brand\" | \"inverse\"\n\nconst InputGroupSizeContext = React.createContext<InputGroupSize>(\"md\")\nconst InputGroupVariantContext =\n React.createContext<InputGroupVariant>(\"default\")\n\nconst inputGroupVariants = cva(\n [\n \"group/input-group relative flex w-full items-center rounded-xs border\",\n \"transition-[color,box-shadow] outline-none min-w-0 has-[>textarea]:h-auto\",\n // Reduce input padding only on the side an addon is attached to; the\n // opposite side keeps the natural Input padding (pl-3 / pr-3 = 12 px).\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n // Focus ring (size; colour comes from the variant).\n \"has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]\",\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:border-border-error-default has-[[data-slot][aria-invalid=true]]:ring-ring-error-soft\",\n ].join(\" \"),\n {\n variants: {\n // `default` is the surface treatment; `on-brand` is the sunken\n // black-glaze treatment for brand-coloured surfaces (mirrors `Input`).\n variant: {\n default: [\n \"border-border-default-default bg-background-primary-surface\",\n \"has-[[data-slot=input-group-control]:focus-visible]:border-ring-focus-default has-[[data-slot=input-group-control]:focus-visible]:ring-ring-focus-soft\",\n ].join(\" \"),\n \"on-brand\": [\n \"border-(--primitive-white-alpha-24) bg-(--primitive-black-alpha-32)\",\n \"has-[[data-slot=input-group-control]:focus-visible]:border-background-static-white has-[[data-slot=input-group-control]:focus-visible]:ring-(--primitive-white-alpha-40)\",\n ].join(\" \"),\n /* @deprecated alias — renamed to `on-brand`. Deleted at v1.0. */\n inverse: [\n \"border-(--primitive-white-alpha-24) bg-(--primitive-black-alpha-32)\",\n \"has-[[data-slot=input-group-control]:focus-visible]:border-background-static-white has-[[data-slot=input-group-control]:focus-visible]:ring-(--primitive-white-alpha-40)\",\n ].join(\" \"),\n },\n size: {\n sm: \"h-8\",\n md: \"h-10\",\n lg: \"h-12\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction InputGroup({\n className,\n variant = \"default\",\n size,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupVariants>) {\n // Inside a Field, the field's size prop sets the default (same cascade as\n // Input); an explicit size on the group still wins.\n const fieldSize = useFieldSize()\n const resolvedSize = (size ?? fieldSize) as InputGroupSize\n return (\n <InputGroupVariantContext.Provider\n value={variant as InputGroupVariant}\n >\n <InputGroupSizeContext.Provider value={resolvedSize}>\n <div\n data-slot=\"input-group\"\n data-variant={variant}\n data-size={resolvedSize}\n role=\"group\"\n className={cn(inputGroupVariants({ variant, size: resolvedSize }), className)}\n {...props}\n />\n </InputGroupSizeContext.Provider>\n </InputGroupVariantContext.Provider>\n )\n}\n\nconst inputGroupAddonVariants = cva(\n [\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-text-subtle-default select-none\",\n // Swap addon text/icon colour when inside an on-brand group.\n \"group-data-[variant=on-brand]/input-group:text-(--primitive-white-alpha-64)\",\n \"group-data-[variant=inverse]/input-group:text-(--primitive-white-alpha-64)\",\n \"group-data-[disabled=true]/input-group:opacity-24\",\n \"[&>kbd]:rounded-[calc(var(--radius)-5px)]\",\n // Text size inherits the group's --input-* ladder (set on the group in CSS).\n \"group-data-[size=sm]/input-group:py-1\",\n \"group-data-[size=lg]/input-group:py-2\",\n // Default icon size (overridden by size variants below).\n \"[&>svg:not([class*='size-'])]:size-4\",\n \"group-data-[size=sm]/input-group:[&>svg:not([class*='size-'])]:size-3.5\",\n ].join(\" \"),\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3\",\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 // Pills inside the field — real Buttons at `sm` type (14/semibold), with\n // heights compressed to fit the frame. Icon variants are circles.\n \"flex items-center gap-2 shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-full px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-full px-3 has-[>svg]:px-2.5\",\n \"icon-xs\": \"size-6 rounded-full p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 rounded-full 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 size=\"sm\"\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-text-subtle-default\",\n // Swap text/icon colour when inside an on-brand group.\n \"group-data-[variant=on-brand]/input-group:text-(--primitive-white-alpha-64)\",\n \"group-data-[variant=inverse]/input-group:text-(--primitive-white-alpha-64)\",\n // Text size inherits the group's --input-* ladder; icons track it.\n \"group-data-[size=sm]/input-group:[&_svg:not([class*='size-'])]:size-3.5\",\n \"group-data-[size=md]/input-group:[&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[size=lg]/input-group:[&_svg:not([class*='size-'])]:size-4\",\n \"[&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n size: sizeProp,\n variant: variantProp,\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\"> & {\n size?: InputGroupSize\n variant?: InputGroupVariant\n}) {\n const groupSize = React.useContext(InputGroupSizeContext)\n const groupVariant = React.useContext(InputGroupVariantContext)\n const size = sizeProp ?? groupSize\n const variant = variantProp ?? groupVariant\n return (\n <Input\n data-slot=\"input-group-control\"\n size={size}\n variant={variant}\n className={cn(\n \"h-full flex-1 rounded-none border-0 bg-transparent shadow-none 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}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"type-textarea flex field-sizing-content min-h-16 w-full rounded-xs border border-border-default-default bg-background-primary-surface px-3 py-2 text-text-prominent-default font-body transition-[color,box-shadow] outline-none placeholder:text-text-subtle-default selection:bg-background-brand-default selection:text-text-on-brand-static focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-soft disabled:cursor-not-allowed disabled:opacity-24 aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\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-24\",\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\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\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(\n \"type-input-otp relative flex size-10 items-center justify-center border border-border-default-default bg-background-primary-surface font-body text-text-prominent-default transition-[color,box-shadow] outline-none first:rounded-l-xs last:rounded-r-xs aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft data-[active=true]:z-10 data-[active=true]:border-ring-focus-default data-[active=true]:ring-[3px] data-[active=true]:ring-ring-focus-soft data-[active=true]:aria-invalid:border-border-error-default data-[active=true]:aria-invalid:ring-ring-error-soft\",\n className\n )}\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-text-prominent-default 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 }\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\nfunction ItemGroup({\n className,\n divider = true,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /**\n * Auto-divide consecutive default-variant `Item`s with a bottom border\n * (`border-default-default`). The last item's bottom border is suppressed,\n * and non-default variants (`outline`, `muted`) are left untouched so\n * they don't double up with their own borders. Defaults to `true`; pass\n * `false` to opt out when the design wants flush items or uses\n * `<ItemSeparator />` manually.\n */\n divider?: boolean\n}) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n data-divider={divider ? \"true\" : undefined}\n className={cn(\n \"group/item-group flex flex-col\",\n // Divider mode: 4 px gap between items + a 1 px line drawn via\n // ::after on each non-last default item, sitting in that gap.\n // Item itself stays border-free — the line is a separate visual\n // element rather than an outline on the item.\n divider && [\n \"gap-1\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:relative\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:content-['']\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:absolute\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:-bottom-0.5\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:inset-x-4\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:h-px\",\n \"[&>[data-slot=item][data-variant=default]:not(:last-child)]:after:bg-border-default-default\",\n ],\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n )\n}\n\nconst itemVariants = cva(\n \"group/item type-item-description flex flex-wrap items-center rounded-md border border-transparent transition-colors duration-instant outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong [a]:transition-colors [a]:hover:bg-background-hover-default\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border-border-default-default text-text-prominent-default hover:bg-background-hover-default\",\n muted: \"bg-background-secondary-surface\",\n },\n size: {\n default: \"gap-4 p-4\",\n sm: \"gap-2.5 px-4 py-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"div\"\n return (\n <Comp\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n className={cn(itemVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-full border border-border-default-default bg-background-secondary-surface text-icon-prominent-default [&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-full [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n \"type-item-title flex w-fit items-center gap-2 text-text-prominent-default\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"type-item-description line-clamp-2 text-balance text-text-subtle-default\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-default\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst linkVariants = cva(\n [\n \"inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap transition-colors outline-none focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong active:opacity-60 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:inline font-display normal-case\",\n // Quiet at rest, the underline arrives as hover feedback.\n \"hover:underline decoration-2 underline-offset-4\",\n // Arrow nudge — a trailing icon slides right on hover.\n \"[&_svg]:transition-transform hover:[&>svg:last-child]:translate-x-0.5\",\n ].join(\" \"),\n {\n variants: {\n size: {\n lg: \"type-link-lg [&_svg:not([class*='size-'])]:size-4\",\n md: \"type-link-md [&_svg:not([class*='size-'])]:size-4\",\n sm: \"type-link-sm [&_svg:not([class*='size-'])]:size-3.5\",\n },\n // on-brand = static white for links on brand-coloured surfaces\n // (same family naming as Button/Input).\n tone: {\n brand: \"text-text-brand-default hover:text-text-brand-hover\",\n \"on-brand\":\n \"text-text-on-brand-static hover:text-(--primitive-white-alpha-80)\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n tone: \"brand\",\n },\n }\n)\n\nfunction Link({\n className,\n size = \"lg\",\n tone = \"brand\",\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-tone={tone}\n className={cn(linkVariants({ size, tone, className }))}\n {...props}\n />\n )\n}\n\nexport { Link, linkVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { Menubar as MenubarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"flex h-10 items-center gap-1 rounded-lg border border-border-default-default bg-background-primary-surface p-1\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n )\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"flex items-center type-menu-trigger rounded-md px-2 py-1 outline-hidden select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[state=open]:bg-background-hover-default data-[state=open]:text-text-brand-selected\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg border border-border-default-default bg-background-primary-surface p-1 text-text-prominent-default 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]: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 </MenubarPortal>\n )\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"relative flex cursor-default items-center gap-2 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 data-[inset]:pl-8 data-[variant=destructive]:text-text-error-default data-[variant=destructive]:focus:bg-background-error-default data-[variant=destructive]:focus:text-text-error-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[variant=destructive]:*:[svg]:text-text-error-default!\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_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 <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n )\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_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 <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n )\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n \"type-menu-heading px-2 py-1.5 text-text-prominent-default data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border-default-default\", className)}\n {...props}\n />\n )\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"type-menu-shortcut ml-auto text-text-subtle-default\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-2 type-menu-item rounded-md px-2 py-1.5 outline-none select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[inset]:pl-8 data-[state=open]:bg-background-hover-default data-[state=open]:text-text-prominent-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </MenubarPrimitive.SubTrigger>\n )\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg border border-border-default-default bg-background-primary-surface p-1 text-text-prominent-default 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 Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { useFieldSize } from \"./field\"\n\ntype NativeSelectSize = \"sm\" | \"md\" | \"lg\"\n\nconst sizeClasses: Record<NativeSelectSize, string> = {\n sm: \"type-native-select-sm h-8 py-1\",\n md: \"type-native-select-md h-10 py-2\",\n lg: \"type-native-select-lg h-12 py-2 px-4 pr-10\",\n}\n\nfunction NativeSelect({\n className,\n size,\n ...props\n}: Omit<React.ComponentProps<\"select\">, \"size\"> & {\n /** `\"default\"` is a deprecated alias for `\"md\"` — deleted at v1.0. */\n size?: NativeSelectSize | \"default\"\n}) {\n // Inside a Field, the field's size prop sets the default (same cascade as\n // Input); an explicit size on the select still wins.\n const fieldSize = useFieldSize()\n const resolvedSize: NativeSelectSize =\n size === \"default\" || size == null ? (size == null ? fieldSize : \"md\") : size\n return (\n <div\n className=\"group/native-select relative w-fit has-[select:disabled]:opacity-24\"\n data-slot=\"native-select-wrapper\"\n >\n <select\n data-slot=\"native-select\"\n data-size={resolvedSize}\n className={cn(\n \"w-full min-w-0 appearance-none rounded-xs border border-border-default-default bg-background-primary-surface px-3 pr-9 text-text-prominent-default transition-[color,box-shadow] outline-none selection:bg-background-brand-default selection:text-text-on-brand-static disabled:pointer-events-none disabled:cursor-not-allowed\",\n \"focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-soft\",\n sizeClasses[resolvedSize],\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-icon-subtle-default 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","import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { NavigationMenu as NavigationMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n )\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n )\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group type-menu-trigger inline-flex h-10 w-max items-center justify-center rounded-md bg-background-primary-surface px-4 py-2 transition-[color,box-shadow] outline-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-24 data-[state=open]:bg-background-hover-default data-[state=open]:text-text-prominent-default data-[state=open]:hover:bg-background-hover-default data-[state=open]:focus:bg-background-hover-default\"\n)\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-slow group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n )\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"top-0 left-0 w-full p-2 pr-2.5 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out md:absolute md:w-auto\",\n \"group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:border-border-default-default group-data-[viewport=false]/navigation-menu:bg-background-primary-surface group-data-[viewport=false]/navigation-menu:text-text-prominent-default group-data-[viewport=false]/navigation-menu:duration-base **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n \"absolute top-full left-0 isolate z-50 flex justify-center\"\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-lg border border-border-default-default bg-background-primary-surface text-text-prominent-default data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"type-menu-item flex flex-col gap-1 rounded-md p-2 transition-all outline-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong focus-visible:outline-1 data-[active=true]:bg-background-brand-selected data-[active=true]:text-text-brand-selected data-[active=true]:hover:bg-background-brand-selected data-[active=true]:focus:bg-background-brand-selected [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border-default-default\" />\n </NavigationMenuPrimitive.Indicator>\n )\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Delete } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Numpad — the mobile amount-entry tray */\n/* */\n/* A bare 3×4 digit grid, no key backgrounds — only the press glaze marks a */\n/* touch (per the design file). Controlled: the component emits keys and the */\n/* consumer owns the amount string. Long-pressing backspace clears it. */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nconst LONG_PRESS_MS = 600\n\ntype NumpadKey =\n | \"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\"\n | \".\" | \"backspace\"\n\ninterface NumpadProps\n extends Omit<React.ComponentProps<\"div\">, \"onKeyDown\" | \"onKeyPress\"> {\n /** Fired for every tap: a digit, \".\", or \"backspace\". */\n onKeyPress?: (key: NumpadKey) => void\n /** Fired when backspace is long-pressed (~600ms) — clear the amount. */\n onClear?: () => void\n /** Hide the \".\" key for integer-only entry. */\n decimal?: boolean\n disabled?: boolean\n}\n\nfunction Numpad({\n className,\n onKeyPress,\n onClear,\n decimal = true,\n disabled = false,\n ...props\n}: NumpadProps) {\n // Long-press bookkeeping for the backspace key: when the hold timer fires\n // we clear and swallow the tap that would otherwise land on release.\n const holdTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null)\n const longPressFired = React.useRef(false)\n\n const startHold = () => {\n longPressFired.current = false\n holdTimer.current = setTimeout(() => {\n longPressFired.current = true\n onClear?.()\n }, LONG_PRESS_MS)\n }\n const cancelHold = () => {\n if (holdTimer.current) clearTimeout(holdTimer.current)\n holdTimer.current = null\n }\n React.useEffect(() => cancelHold, [])\n\n const keys: (NumpadKey | null)[] = [\n \"1\", \"2\", \"3\",\n \"4\", \"5\", \"6\",\n \"7\", \"8\", \"9\",\n decimal ? \".\" : null, \"0\", \"backspace\",\n ]\n\n return (\n <div\n data-slot=\"numpad\"\n role=\"group\"\n aria-label=\"Number pad\"\n className={cn(\n \"grid w-full grid-cols-3 gap-1\",\n disabled && \"pointer-events-none opacity-24\",\n className,\n )}\n {...props}\n >\n {keys.map((key, i) =>\n key === null ? (\n <span key={`empty-${i}`} aria-hidden />\n ) : (\n <button\n key={key}\n type=\"button\"\n data-slot=\"numpad-key\"\n data-key={key}\n disabled={disabled}\n aria-label={key === \"backspace\" ? \"Backspace — hold to clear\" : key}\n className={cn(\n \"type-numpad flex h-12 cursor-pointer items-center justify-center rounded-lg text-text-prominent-default outline-none transition-colors select-none\",\n \"hover:bg-background-hover-default active:bg-background-pressed-default\",\n \"focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong\",\n key === \"backspace\" && \"text-icon-subtle-default\",\n )}\n onPointerDown={key === \"backspace\" ? startHold : undefined}\n onPointerUp={key === \"backspace\" ? cancelHold : undefined}\n onPointerLeave={key === \"backspace\" ? cancelHold : undefined}\n onContextMenu={\n key === \"backspace\" ? (e) => e.preventDefault() : undefined\n }\n onClick={() => {\n if (key === \"backspace\" && longPressFired.current) {\n longPressFired.current = false\n return\n }\n onKeyPress?.(key)\n }}\n >\n {key === \"backspace\" ? <Delete className=\"size-5.5\" /> : key}\n </button>\n ),\n )}\n </div>\n )\n}\n\nexport { Numpad }\nexport type { NumpadKey, NumpadProps }\n","import * as React from \"react\"\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\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-1\", 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} & React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\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 \"type-pagination inline-flex shrink-0 items-center justify-center size-10 rounded-full font-display whitespace-nowrap transition-[color,background-color,border-color] outline-none border focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong\",\n isActive\n ? \"bg-background-brand-selected border-border-brand-selected text-text-brand-selected\"\n : \"bg-transparent border-transparent text-text-prominent-default hover:bg-background-hover-default\",\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=\"tertiary\" 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=\"tertiary\" 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\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\"flex size-10 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\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-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-2xl border border-border-default-default bg-background-primary-surface p-4 text-text-prominent-default 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\", 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(\"type-popover-title text-text-prominent-default\", 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(\"type-popover-description text-text-subtle-default\", 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 { Progress as ProgressPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n // One track spec, shared with Slider: h-2, full radius, secondary\n // surface, solid brand fill.\n \"relative h-2 w-full overflow-hidden rounded-full bg-background-secondary-surface\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"h-full w-full flex-1 bg-background-brand-default transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Camera, User } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Geometry */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\n/**\n * The composite is a fixed 112px: a 96px photo with a 5px ring sitting flush to\n * the outer edge, leaving a 3px gap between photo and ring.\n *\n * The ring is drawn as an SVG circle whose stroke straddles its path, so the\n * path radius is inset by half the stroke to keep the ring inside the box.\n */\nconst BOX = 112\nconst PHOTO = 96\nconst STROKE = 5\nconst RADIUS = BOX / 2 - STROKE / 2 // 53.5\nconst CIRCUMFERENCE = 2 * Math.PI * RADIUS\nconst INSET = (BOX - PHOTO) / 2 // 8\n\nexport interface ProfilePhotoProps extends Omit<React.ComponentProps<\"div\">, \"children\"> {\n /** Photo URL. Omit to show the placeholder glyph. */\n src?: string\n /** Alt text for the photo. Ignored when no `src` is given. */\n alt?: string\n /** Verification progress, 0–100. Drives the ring. */\n progress?: number\n /**\n * Fires when the camera button is pressed. Omit to hide the button entirely —\n * use that for read-only contexts where the viewer can't change the photo.\n */\n onPhotoChange?: () => void\n /** aria-label for the camera button. */\n photoChangeLabel?: string\n /**\n * Status slot, rendered overlapping the bottom edge. Pass a `Badge` — the\n * component positions it but does not style its content.\n */\n status?: React.ReactNode\n}\n\n/**\n * Profile photo with a verification progress ring.\n *\n * Distinct from `Avatar`: that is a 24–48px identity chip for lists and nav,\n * whereas this is a page-level element carrying progress, a photo-change\n * affordance, and a status badge. The ring animates between values as the\n * player completes verification steps, and starts and ends at 6 o'clock so its\n * seam sits behind the status badge.\n */\nfunction ProfilePhoto({\n src,\n alt = \"\",\n progress = 0,\n onPhotoChange,\n photoChangeLabel = \"Change photo\",\n status,\n className,\n ...props\n}: ProfilePhotoProps) {\n const pct = Math.min(100, Math.max(0, progress))\n const complete = pct >= 100\n\n return (\n <div\n data-slot=\"profile-photo\"\n data-progress={pct}\n data-complete={complete || undefined}\n className={cn(\"relative shrink-0\", className)}\n style={{ width: BOX, height: BOX }}\n {...props}\n >\n {/* rotate-90 moves the circle's start point from 3 to 6 o'clock, so the\n arc opens and closes behind the status badge while still travelling\n clockwise. */}\n <svg\n viewBox={`0 0 ${BOX} ${BOX}`}\n aria-hidden=\"true\"\n className=\"absolute inset-0 size-full rotate-90\"\n >\n <circle\n cx={BOX / 2}\n cy={BOX / 2}\n r={RADIUS}\n fill=\"none\"\n stroke=\"var(--border-default-default)\"\n strokeWidth={STROKE}\n />\n <circle\n data-slot=\"profile-photo-ring\"\n cx={BOX / 2}\n cy={BOX / 2}\n r={RADIUS}\n fill=\"none\"\n strokeWidth={STROKE}\n strokeLinecap=\"round\"\n stroke={complete ? \"var(--text-success-default)\" : \"var(--background-brand-default)\"}\n strokeDasharray={CIRCUMFERENCE}\n strokeDashoffset={CIRCUMFERENCE * (1 - pct / 100)}\n className=\"transition-[stroke-dashoffset,stroke] duration-open ease-enter motion-reduce:transition-none\"\n />\n </svg>\n\n <div\n data-slot=\"profile-photo-image\"\n className=\"absolute flex items-center justify-center overflow-hidden rounded-full bg-background-secondary-surface\"\n style={{ inset: INSET }}\n >\n {src ? (\n <img src={src} alt={alt} className=\"size-full object-cover\" />\n ) : (\n <User className=\"size-10 text-icon-subtle-default\" strokeWidth={1.5} aria-hidden=\"true\" />\n )}\n </div>\n\n {onPhotoChange ? (\n // 24px keeps the chip subordinate to the photo; the ::after extends the\n // hit area to ~44px so it still meets the touch-target minimum.\n <Button\n variant=\"primary\"\n size=\"icon-xs\"\n aria-label={photoChangeLabel}\n onClick={onPhotoChange}\n data-slot=\"profile-photo-camera\"\n className=\"absolute right-0.5 bottom-5 rounded-full border-2 border-prominent after:absolute after:-inset-2.5 after:content-['']\"\n >\n <Camera />\n </Button>\n ) : null}\n\n {status ? (\n <div\n data-slot=\"profile-photo-status\"\n className=\"absolute -bottom-1 left-1/2 -translate-x-1/2\"\n >\n {status}\n </div>\n ) : null}\n </div>\n )\n}\n\nexport { ProfilePhoto }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CircleIcon } from \"lucide-react\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"aspect-square size-4 shrink-0 rounded-full border border-border-default-default bg-background-primary-surface text-text-brand-default transition-[color,box-shadow] outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong data-[state=checked]:border-background-brand-default disabled:cursor-not-allowed disabled:opacity-24 aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-background-brand-default text-background-brand-default\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\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-default-default 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-default 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 border-border-default-default bg-border-default-default text-icon-subtle-default\">\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-focus-strong 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-default-default\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-background-overlay-default 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 SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n showCloseButton?: boolean\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"fixed z-50 flex flex-col gap-4 bg-background-primary-surface transition data-[state=closed]:animate-out data-[state=closed]:ease-exit data-[state=closed]:[animation-duration:var(--motion-overlay-close)] data-[state=open]:animate-in data-[state=open]:ease-enter data-[state=open]:[animation-duration:var(--motion-overlay-open)]\",\n side === \"right\" &&\n \"inset-y-0 right-0 h-full w-3/4 border-l border-border-default-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-border-default-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-border-default-default data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n side === \"bottom\" &&\n \"inset-x-0 bottom-0 h-auto border-t border-border-default-default data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute top-4 right-4 inline-flex size-8 items-center justify-center rounded-full text-icon-subtle-default opacity-70 transition-opacity hover:opacity-100 hover:bg-background-hover-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong focus-visible:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\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\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"type-sheet-title text-text-prominent-default\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"type-sheet-description text-text-subtle-default\", className)}\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-background-primary-surface\",\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-background-primary-surface text-text-prominent-default\",\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-background-primary-surface p-0 text-text-prominent-default [&>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-text-prominent-default 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-background-primary-surface group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-border-default-default\"\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-border-default-default 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-background-primary-surface\",\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-background-primary-canvas\",\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]: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-background-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(\n \"flex flex-col gap-2 px-layout-margin-inline py-2 group-data-[collapsible=icon]:px-2\",\n className,\n )}\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(\n \"flex flex-col gap-2 px-layout-margin-inline py-2 group-data-[collapsible=icon]:px-2\",\n className,\n )}\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-border-default-default\", 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(\n \"relative flex w-full min-w-0 flex-col px-layout-margin-inline py-2 group-data-[collapsible=icon]:px-2\",\n className,\n )}\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 \"type-sidebar-label flex h-8 shrink-0 items-center rounded-md px-2 text-text-subtle-default ring-ring-focus-default 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-text-prominent-default ring-ring-focus-default outline-hidden transition-transform hover:bg-background-secondary-surface hover:text-text-prominent-default 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(\"type-sidebar-menu w-full\", 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-text-prominent-default ring-ring-focus-default 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-background-hover-default hover:text-text-brand-hover focus-visible:ring-2 active:bg-background-hover-default active:text-text-brand-hover disabled:pointer-events-none disabled:opacity-24 aria-disabled:pointer-events-none aria-disabled:opacity-24 data-[active=true]:bg-background-brand-selected data-[active=true]:text-text-brand-selected data-[active=true]:hover:bg-background-brand-selected data-[active=true]:hover:text-text-brand-selected data-[state=open]:hover:bg-background-hover-default data-[state=open]:hover:text-text-brand-hover [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-text-brand-selected\",\n {\n variants: {\n variant: {\n default: \"\",\n outline:\n \"bg-background-primary-surface ring-1 ring-border-default-default hover:ring-ring-brand-soft data-[active=true]:ring-ring-brand-soft\",\n },\n size: {\n default: \"type-sidebar-menu h-8\",\n sm: \"type-sidebar-menu-sm h-7\",\n lg: \"type-sidebar-menu h-12 group-data-[collapsible=icon]:p-0! group-data-[collapsible=icon]:justify-center\",\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-text-prominent-default ring-ring-focus-default outline-hidden transition-transform peer-hover/menu-button:text-text-prominent-default hover:bg-background-secondary-surface hover:text-text-prominent-default 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-text-prominent-default 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 type-sidebar-label rounded-md px-1 text-text-prominent-default tabular-nums select-none\",\n \"peer-hover/menu-button:text-text-prominent-default peer-data-[active=true]/menu-button:text-text-prominent-default\",\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-border-default-default 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-text-prominent-default ring-ring-focus-default outline-hidden hover:bg-background-hover-default hover:text-text-brand-hover focus-visible:ring-2 active:bg-background-hover-default active:text-text-brand-hover disabled:pointer-events-none disabled:opacity-24 aria-disabled:pointer-events-none aria-disabled:opacity-24 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-text-brand-selected\",\n \"data-[active=true]:bg-background-brand-selected data-[active=true]:text-text-brand-selected\",\n size === \"sm\" && \"type-sidebar-menu-sm\",\n size === \"md\" && \"type-sidebar-menu\",\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(\n \"relative overflow-hidden rounded-md bg-background-secondary-surface\",\n \"after:pointer-events-none after:absolute after:inset-0 after:[animation:var(--animate-skeleton-sweep)] after:bg-[linear-gradient(90deg,transparent,var(--background-hover-default),transparent)]\",\n className,\n )}\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 { useIsMobile } from \"../../hooks/use-mobile\"\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"./drawer\"\n\n/**\n * Internal context that lets the parent `Tooltip` tell its descendants\n * (`TooltipTrigger`, `TooltipContent`) which underlying surface to render —\n * \"tooltip\" (Radix popover on hover/focus) or \"drawer\" (vaul bottom sheet on\n * tap). Centralising the decision here guarantees all three components agree\n * on the surface in the same render, instead of each calling `useIsMobile()`\n * independently and momentarily disagreeing during the SSR→hydration flip\n * (which throws \"TooltipTrigger must be used within Tooltip\" errors).\n */\ntype TooltipMode = \"tooltip\" | \"drawer\"\nconst TooltipModeContext = React.createContext<TooltipMode>(\"tooltip\")\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 children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n const isMobile = useIsMobile()\n const mode: TooltipMode = isMobile ? \"drawer\" : \"tooltip\"\n\n if (mode === \"drawer\") {\n return (\n <TooltipModeContext.Provider value=\"drawer\">\n <Drawer>{children}</Drawer>\n </TooltipModeContext.Provider>\n )\n }\n\n return (\n <TooltipModeContext.Provider value=\"tooltip\">\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props}>\n {children}\n </TooltipPrimitive.Root>\n </TooltipModeContext.Provider>\n )\n}\n\nfunction TooltipTrigger({\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n const mode = React.useContext(TooltipModeContext)\n\n if (mode === \"drawer\") {\n return (\n <DrawerTrigger data-slot=\"tooltip-trigger\" {...props}>\n {children}\n </DrawerTrigger>\n )\n }\n\n return (\n <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props}>\n {children}\n </TooltipPrimitive.Trigger>\n )\n}\n\ntype TooltipVariant = \"default\" | \"inverse\"\n\nfunction TooltipContent({\n className,\n sideOffset = 6,\n variant = \"default\",\n title = \"Title\",\n closeLabel = \"Label\",\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n /**\n * Surface variant. `default` is the brand-blue tooltip on light surfaces.\n * `inverse` is a white surface with on-prominent (black) text — use over\n * saturated coloured surfaces (e.g. the boost badge) where a blue tooltip\n * would feel visually heavy. Only applies on desktop; mobile always uses\n * the neutral drawer surface.\n */\n variant?: TooltipVariant\n /**\n * Drawer-only: visible heading shown at the top of the mobile drawer.\n * Defaults to the placeholder string `\"Title\"` — consumers should pass\n * domain-specific text. Desktop tooltips ignore this prop.\n */\n title?: string\n /**\n * Drawer-only: text on the dismiss button at the bottom of the mobile\n * drawer (wraps a `DrawerClose`, so tapping it dismisses the drawer).\n * Defaults to the placeholder string `\"Label\"`. Desktop tooltips ignore\n * this prop.\n */\n closeLabel?: string\n}) {\n const mode = React.useContext(TooltipModeContext)\n\n // Mobile: render as a bottom-sheet drawer. Tap trigger → drawer opens and\n // persists until the user taps the scrim, swipes down, or taps the close\n // button at the bottom — much friendlier than a hover-tooltip on touch.\n // Uses the same DrawerHeader / DrawerTitle / DrawerFooter / DrawerClose\n // building blocks as the standard Drawer demo so spacing, typography and\n // dismiss-button placement stay consistent across every drawer surface.\n if (mode === \"drawer\") {\n return (\n <DrawerContent data-slot=\"tooltip-content\" data-variant={variant}>\n <DrawerHeader>\n <DrawerTitle>{title}</DrawerTitle>\n </DrawerHeader>\n <div className={cn(\"type-drawer-description p-4 text-text-subtle-default\", className)}>\n {children}\n </div>\n <DrawerFooter>\n <DrawerClose asChild>\n <Button variant=\"primary\" size=\"md\">\n {closeLabel}\n </Button>\n </DrawerClose>\n </DrawerFooter>\n </DrawerContent>\n )\n }\n\n const surfaceClasses =\n variant === \"inverse\"\n ? \"border border-border-default-default bg-background-primary-surface text-text-prominent-default\"\n : \"bg-background-inverse-surface text-text-prominent-inverse\"\n const arrowClasses =\n variant === \"inverse\"\n ? \"fill-background-primary-surface\"\n : \"fill-background-inverse-surface\"\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 max-w-xs origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md border-0 px-3 py-1.5 has-[[data-slot=kbd]]:px-3.5 has-[[data-slot=kbd]]:py-2 has-[[data-slot=kbd]]:space-y-1.5 type-tooltip text-balance whitespace-normal 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 surfaceClasses,\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className={arrowClasses} />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\nexport type { TooltipVariant }\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 ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-24 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 // One track spec, shared with Progress: h-2, full radius, secondary\n // surface, solid brand fill.\n \"relative grow overflow-hidden rounded-full bg-background-secondary-surface data-[orientation=horizontal]:h-2 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"absolute bg-background-brand-default data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"block size-4 shrink-0 rounded-full border-0 bg-background-brand-default ring-ring-focus-strong transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","\"use client\"\n\nimport {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, toast, type ToasterProps } from \"sonner\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n const isMobile = useIsMobile()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n position={isMobile ? \"top-center\" : \"bottom-right\"}\n visibleToasts={isMobile ? 1 : 3}\n duration={4000}\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n toastOptions={{\n classNames: {\n toast: \"!bg-[var(--background-inverse-surface)] !border-none\",\n title: \"!text-[var(--text-prominent-inverse)] !font-display !font-semibold\",\n description: \"!text-[var(--text-subtle-inverse)] !font-body\",\n actionButton: \"!bg-[var(--background-static-white)] !text-[var(--text-brand-container-static)]\",\n },\n }}\n style={\n {\n \"--normal-bg\": \"var(--background-inverse-surface)\",\n \"--normal-text\": \"var(--text-prominent-inverse)\",\n \"--normal-border\": \"transparent\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Toaster, toast }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Minus, Plus } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n} from \"./input-group\"\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\ntype StepperSize = \"sm\" | \"md\" | \"lg\"\n\nconst stepperSizeConfig: Record<\n StepperSize,\n { container: string; buttonSize: \"icon-xs\" | \"icon-sm\"; iconClass: string }\n> = {\n sm: { container: \"h-8\", buttonSize: \"icon-xs\", iconClass: \"size-3\" },\n md: { container: \"h-10\", buttonSize: \"icon-xs\", iconClass: \"size-3.5\" },\n lg: { container: \"h-12\", buttonSize: \"icon-sm\", iconClass: \"size-4\" },\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 size?: StepperSize\n disabled?: boolean\n placeholder?: string\n className?: string\n id?: string\n name?: string\n \"aria-label\"?: string\n}\n\nfunction Stepper({\n value: controlledValue,\n defaultValue = 0,\n onValueChange,\n min = -Infinity,\n max = Infinity,\n step = 1,\n size = \"md\",\n disabled,\n placeholder,\n className,\n id,\n name,\n \"aria-label\": ariaLabel,\n}: StepperProps) {\n const { container, buttonSize, iconClass } = stepperSizeConfig[size]\n const isControlled = controlledValue !== undefined\n const [internalValue, setInternalValue] = React.useState(\n clamp(defaultValue, min, max)\n )\n const currentValue = isControlled ? controlledValue : internalValue\n const decimalPlaces = getDecimalPlaces(step)\n\n const [displayString, setDisplayString] = React.useState(\n formatValue(currentValue, decimalPlaces)\n )\n const [isFocused, setIsFocused] = React.useState(false)\n\n // Sync display string when controlled value changes externally (not while typing)\n React.useEffect(() => {\n if (!isFocused) {\n setDisplayString(formatValue(currentValue, decimalPlaces))\n }\n }, [currentValue, decimalPlaces, isFocused])\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 const parsed = parseFloat(displayString)\n if (Number.isNaN(parsed)) {\n setDisplayString(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 return (\n <InputGroup\n data-slot=\"stepper\"\n data-disabled={disabled || undefined}\n className={cn(\"w-32\", container, className)}\n >\n <InputGroupAddon align=\"inline-start\">\n <InputGroupButton\n size={buttonSize}\n variant=\"secondary\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Minus className={iconClass} />\n </InputGroupButton>\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 <InputGroupAddon align=\"inline-end\">\n <InputGroupText>\n USDT\n </InputGroupText>\n <InputGroupButton\n size={buttonSize}\n variant=\"secondary\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Plus className={iconClass} />\n </InputGroupButton>\n </InputGroupAddon>\n </InputGroup>\n )\n}\n\nexport { Stepper }\nexport type { StepperProps, StepperSize }\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 inline-flex shrink-0 items-center rounded-full border border-transparent p-[3px] transition-all outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:cursor-not-allowed disabled:opacity-24 data-[size=default]:h-6 data-[size=default]:w-11 data-[size=sm]:h-5 data-[size=sm]:w-9 data-[state=checked]:bg-background-brand-default data-[state=unchecked]:bg-border-default-default\",\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-background-static-white ring-0 transition-transform group-data-[size=default]/switch:size-[18px] group-data-[size=sm]/switch:size-[14px] data-[state=checked]:translate-x-[calc(100%+1px)] data-[state=unchecked]:translate-x-0\"\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(\"type-table w-full caption-bottom\", 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 [&_tr]:border-border-default-default\", 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 \"type-table-head border-t border-border-default-default bg-background-secondary-surface [&>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 border-border-default-default transition-colors hover:bg-background-hover-default data-[state=selected]:bg-background-brand-selected\",\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 \"type-table-head h-10 px-2 text-left align-middle whitespace-nowrap text-text-prominent-default [&: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-text-subtle-default\", 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\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"group/tabs flex gap-2 data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"group/tabs-list inline-flex w-fit items-center justify-center text-text-subtle-default group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none has-[[data-icon-position=top]]:h-auto\",\n {\n variants: {\n variant: {\n default: \"bg-background-secondary-surface\",\n line: \"gap-1 bg-transparent\",\n },\n size: {\n sm: \"h-8 rounded-md p-[2px]\",\n md: \"h-10 rounded-lg p-1\",\n lg: \"h-12 rounded-xl p-1.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n data-size={size}\n className={cn(tabsListVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n iconPosition = \"inline\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger> & {\n iconPosition?: \"inline\" | \"top\"\n}) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n data-icon-position={iconPosition}\n className={cn(\n \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-3 py-1 whitespace-nowrap text-text-subtle-default transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:bg-background-hover-default hover:text-text-prominent-default focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong focus-visible:outline-1 focus-visible:outline-ring-focus-default disabled:pointer-events-none disabled:opacity-24 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-none group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[size=sm]/tabs-list:gap-1 group-data-[size=sm]/tabs-list:rounded-sm group-data-[size=sm]/tabs-list:px-2\",\n \"group-data-[size=lg]/tabs-list:gap-2 group-data-[size=lg]/tabs-list:rounded-lg group-data-[size=lg]/tabs-list:px-4\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:hover:bg-transparent group-data-[variant=line]/tabs-list:hover:text-text-brand-hover group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent\",\n \"data-[state=active]:bg-background-primary-surface data-[state=active]:border-transparent data-[state=active]:text-text-brand-selected\",\n \"after:absolute after:bg-border-brand-selected after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100\",\n iconPosition === \"top\" && \"h-auto flex-col gap-1 py-2\",\n iconPosition === \"top\" && \"group-data-[size=sm]/tabs-list:gap-0.5 group-data-[size=sm]/tabs-list:py-1.5\",\n iconPosition === \"top\" && \"group-data-[size=lg]/tabs-list:gap-1.5 group-data-[size=lg]/tabs-list:py-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\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 \"type-toggle inline-flex items-center justify-center gap-2 rounded-md whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-background-hover-default hover:text-text-prominent-default focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:pointer-events-none disabled:opacity-24 aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft data-[state=on]:bg-background-hover-default data-[state=on]:border-transparent data-[state=on]:text-text-brand-selected [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-border-prominent-default bg-transparent text-text-prominent-default hover:bg-background-hover-default\",\n },\n size: {\n default: \"h-10 min-w-10 px-2.5\",\n sm: \"h-8 min-w-8 px-1.5\",\n lg: \"h-12 min-w-12 px-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"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\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 0,\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n \"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\",\n \"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l data-[spacing=0]:data-[variant=outline]:data-[state=on]:border-l data-[spacing=0]:data-[variant=outline]:data-[state=on]:border-border-brand-selected\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","import * as React from \"react\"\nimport { Badge } from \"../ui/badge\"\nimport { Button } from \"../ui/button\"\nimport { Card } from \"../ui/card\"\n\n// ---------------------------------------------------------------------------\n// Inlined thumb illustrations — base64 WEBP data URLs (~4KB each)\n// Sourced from public/assets/thumbs-up.webp and thumbs-down.webp.\n// Inlining avoids requiring consumers to copy asset files into their public/.\n// ---------------------------------------------------------------------------\nconst THUMBS_UP_DATA_URL =\n \"data:image/webp;base64,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\"\nconst THUMBS_DOWN_DATA_URL =\n \"data:image/webp;base64,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\"\n\n// ---------------------------------------------------------------------------\n// ResultBlock — universal results card used by Rise-Fall, Swipe, and Digits.\n// Animation CSS lives in src/styles.css (selectors: [data-results-motion]).\n// ---------------------------------------------------------------------------\nexport type ResultBlockStatus = \"win\" | \"loss\"\nexport type ResultBlockCta = \"next-round\" | \"go-again\" | \"conversion\"\n\nexport type ResultBlockProps = {\n status: ResultBlockStatus\n amount: string\n currency: string\n contractLabel: string\n pickedDigit?: number\n duration: string\n ctaMode: ResultBlockCta\n}\n\nexport function ResultBlock({\n status,\n amount,\n currency,\n contractLabel,\n pickedDigit,\n duration,\n ctaMode,\n}: ResultBlockProps) {\n const isWin = status === \"win\"\n const titleText = isWin ? \"You won!\" : \"You lost!\"\n const signedAmount = isWin ? `+${amount}` : `−${amount}`\n const amountColorClass = isWin ? \"text-semantic-win\" : \"text-semantic-loss\"\n const haloBgClass = isWin ? \"bg-semantic-win\" : \"bg-semantic-loss\"\n\n return (\n <Card className=\"w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-5 items-center gap-3\">\n <div className=\"relative flex items-center justify-center py-2\">\n <span\n aria-hidden\n data-results-motion=\"halo\"\n className={`absolute size-24 rounded-full blur-2xl opacity-20 ${haloBgClass}`}\n />\n <img\n data-results-motion={isWin ? \"icon-win\" : \"icon-loss\"}\n src={isWin ? THUMBS_UP_DATA_URL : THUMBS_DOWN_DATA_URL}\n alt={isWin ? \"Win\" : \"Loss\"}\n className=\"relative size-20\"\n />\n </div>\n\n <p className=\"text-lg font-semibold text-on-prominent\">{titleText}</p>\n\n <p className={`flex items-baseline gap-1.5 ${amountColorClass}`}>\n <span className=\"font-display text-4xl font-semibold tabular-nums tracking-tight\">\n {signedAmount}\n </span>\n <span className=\"text-lg font-semibold\">{currency}</span>\n </p>\n\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"tint-neutral\" size=\"sm\">\n {contractLabel}\n {pickedDigit !== undefined && (\n <>\n <span aria-hidden className=\"h-3 w-px bg-border-prominent/40 mx-1\" />\n <span className=\"tabular-nums\">{pickedDigit}</span>\n </>\n )}\n </Badge>\n <Badge variant=\"tint-neutral\" size=\"sm\">{duration}</Badge>\n </div>\n\n <div className=\"w-full pt-2\">\n {ctaMode === \"next-round\" && <Button className=\"w-full\">Next round</Button>}\n {ctaMode === \"go-again\" && <Button className=\"w-full\">Go again</Button>}\n {ctaMode === \"conversion\" && (\n <div className=\"w-full flex flex-col gap-3\">\n <p className=\"text-center text-base font-semibold text-on-prominent\">\n Ready to play for real?\n </p>\n <Button className=\"w-full\">Deposit now</Button>\n <Button variant=\"secondary\" className=\"w-full\">Stay in demo</Button>\n </div>\n )}\n </div>\n </Card>\n )\n}\n\n// ---------------------------------------------------------------------------\n// ResultDialog — fixed-width dialog variant (no thumb, no amount; just copy\n// + 2 CTAs). Used for system messages like \"out of balance\".\n// ---------------------------------------------------------------------------\nexport type ResultDialogProps = {\n title: string\n body: React.ReactNode\n primaryLabel: string\n secondaryLabel: string\n}\n\nexport function ResultDialog({\n title,\n body,\n primaryLabel,\n secondaryLabel,\n}: ResultDialogProps) {\n return (\n <Card className=\"w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-6 items-center gap-4\">\n <div className=\"flex flex-col items-center gap-2 text-center\">\n <p className=\"text-lg font-semibold text-on-prominent\">{title}</p>\n <p className=\"text-sm text-on-subtle\">{body}</p>\n </div>\n <div className=\"w-full flex flex-col gap-2\">\n <Button className=\"w-full\">{primaryLabel}</Button>\n <Button variant=\"secondary\" className=\"w-full\">{secondaryLabel}</Button>\n </div>\n </Card>\n )\n}\n","import * as React from \"react\"\nimport { ArrowLeft, History } from \"lucide-react\"\nimport { Badge } from \"../ui/badge\"\nimport { NavigationButton } from \"../ui/navigation-button\"\n\nexport type HeaderNavigationBlockProps = {\n /** Back button click handler. Back arrow is rendered only when provided. */\n onBack?: () => void\n /** Optional badge shown between back and balance (e.g. \"Demo\" indicator). */\n badge?: { label: string; variant?: React.ComponentProps<typeof Badge>[\"variant\"] }\n /** Required balance display. */\n balance: { amount: string; currency: string }\n /** History button config. When `count` is provided, a numeric badge overlays the icon. */\n history?: {\n count?: number\n onClick?: () => void\n \"aria-label\"?: string\n }\n /** Right-side icon-button slot (e.g. sound toggle, settings). Rendered after the history button. */\n actions?: React.ReactNode\n}\n\nexport function HeaderNavigationBlock({\n onBack,\n badge,\n balance,\n history,\n actions,\n}: HeaderNavigationBlockProps) {\n return (\n <div className=\"w-full min-w-80 max-w-layout-diagram-small rounded-md overflow-hidden bg-prominent\">\n <header className=\"flex items-center gap-2 border-b border-border-subtle bg-prominent px-layout-margin-inline py-3\">\n {onBack && (\n <NavigationButton type=\"button\" size=\"md\" aria-label=\"Back\" onClick={onBack}>\n <ArrowLeft className=\"size-5\" />\n </NavigationButton>\n )}\n <div className=\"flex min-w-0 flex-1 items-center justify-center gap-2\">\n {badge && (\n <Badge variant={badge.variant ?? \"tint-warning\"} size=\"sm\">\n {badge.label}\n </Badge>\n )}\n <span className=\"font-display font-semibold tabular-nums text-on-prominent\">\n {balance.amount}\n </span>\n <span className=\"text-sm text-on-subtle\">{balance.currency}</span>\n </div>\n <div className=\"flex shrink-0 items-center gap-1\">\n {history && <HistoryButton {...history} />}\n {actions}\n </div>\n </header>\n </div>\n )\n}\n\nfunction HistoryButton({\n count,\n onClick,\n \"aria-label\": ariaLabelOverride,\n}: NonNullable<HeaderNavigationBlockProps[\"history\"]>) {\n const show = typeof count === \"number\" && count > 0\n const label = show ? (count! > 99 ? \"99+\" : String(count)) : null\n const ariaLabel =\n ariaLabelOverride ?? (show ? `Open history, ${count} new` : \"Open history\")\n return (\n <div className=\"relative inline-flex\">\n <NavigationButton type=\"button\" size=\"md\" aria-label={ariaLabel} onClick={onClick}>\n <History className=\"size-5\" />\n </NavigationButton>\n {show && (\n <span\n aria-hidden\n className=\"pointer-events-none absolute -top-0.5 -right-0.5 min-w-[1.125rem] h-[1.125rem] px-1 rounded-full bg-primary text-on-primary text-[10px] leading-none font-semibold tabular-nums inline-flex items-center justify-center ring-2 ring-prominent\"\n >\n {label}\n </span>\n )}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { Plus } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"../ui/accordion\"\nimport { Button } from \"../ui/button\"\nimport { cn } from \"../../lib/utils\"\n\nexport type FAQItem = {\n value: string\n question: string\n answer: string\n}\n\nexport type FAQBlockProps = {\n /** Section eyebrow above the heading. Defaults to \"FAQ Section\". */\n eyebrow?: string\n /** Heading text. Defaults to \"Frequently asked questions\". */\n title?: string\n /** Body paragraph between heading and accordion. */\n intro?: React.ReactNode\n /** Q&A items. */\n items: FAQItem[]\n /** Which item is open by default. Defaults to the first item's `value`. */\n defaultValue?: string\n /** Footer \"Need more help?\" card. Hidden if undefined. */\n helpCard?: {\n title: string\n body: string\n ctaLabel: string\n onCtaClick?: () => void\n }\n /** Layout density. \"desktop\" is the default; \"mobile\" reduces type scale and padding. \"two-column\" places the heading on the left and the accordion on the right. */\n layout?: \"desktop\" | \"mobile\" | \"two-column\"\n}\n\nexport function FAQBlock({\n eyebrow = \"FAQ\",\n title = \"Frequently asked questions\",\n intro = \"Find answers to the most common questions below.\",\n items,\n defaultValue,\n helpCard,\n layout = \"desktop\",\n}: FAQBlockProps) {\n if (layout === \"two-column\") {\n return (\n <div className=\"@container w-full\">\n <div className=\"flex flex-col @[600px]:flex-row gap-8 @[600px]:gap-12\">\n {/* Left column */}\n <div className=\"flex flex-col gap-4 flex-1 @[600px]:max-w-xs\">\n <span className=\"text-xs font-body font-semibold tracking-widest uppercase text-on-subtle\">{eyebrow}</span>\n <h2 className=\"text-4xl @[600px]:text-6xl font-semibold font-display text-on-prominent tracking-tight\">{title}</h2>\n {intro && (\n <p className=\"text-base font-body text-on-subtle\">{intro}</p>\n )}\n </div>\n {/* Right column */}\n <div className=\"flex-1\">\n <Accordion\n type=\"single\"\n collapsible\n defaultValue={defaultValue ?? items[0]?.value}\n className=\"w-full\"\n >\n {items.map(({ value, question, answer }, i) => (\n <AccordionItem key={value} value={value}>\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n className=\"group flex flex-1 items-center justify-between gap-4 py-5 text-left outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n >\n <span className=\"flex items-baseline gap-4\">\n <span className=\"text-sm font-body text-on-subtle shrink-0 w-6\">\n {String(i + 1).padStart(2, \"0\")}\n </span>\n <span className=\"text-lg @[600px]:text-xl font-semibold font-display text-on-prominent\">{question}</span>\n </span>\n <span className={cn(\n \"shrink-0 size-7 flex items-center justify-center rounded-sm border transition-all duration-200\",\n \"group-data-[state=open]:bg-primary group-data-[state=open]:border-primary\",\n \"group-data-[state=closed]:bg-transparent group-data-[state=closed]:border-border-subtle\"\n )}>\n <Plus className={cn(\n \"size-4 transition-all duration-200\",\n \"group-data-[state=open]:rotate-45 group-data-[state=open]:text-on-primary\",\n \"group-data-[state=closed]:text-on-prominent\"\n )} />\n </span>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n <AccordionContent>\n <p className=\"text-base font-body text-on-subtle pl-10 pb-4\">{answer}</p>\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n </div>\n </div>\n </div>\n )\n }\n\n const headingClass =\n layout === \"desktop\"\n ? \"text-5xl font-semibold font-display text-on-prominent text-center tracking-tight\"\n : \"text-4xl font-semibold font-display text-on-prominent text-center tracking-tight\"\n const helpTitleClass =\n layout === \"desktop\"\n ? \"text-2xl font-semibold font-display text-on-prominent\"\n : \"text-xl font-semibold font-display text-on-prominent\"\n const helpCardPaddingClass = layout === \"desktop\" ? \"p-8\" : \"p-6\"\n const gapClass = layout === \"desktop\" ? \"gap-12\" : \"gap-10\"\n const headerGapClass = layout === \"desktop\" ? \"gap-5\" : \"gap-4\"\n\n return (\n <div className={`w-full flex flex-col ${gapClass}`}>\n <div className={`flex flex-col ${headerGapClass} items-center w-full`}>\n <span className=\"text-sm text-on-subtle font-body\">{eyebrow}</span>\n <h2 className={headingClass}>{title}</h2>\n {intro && (\n <p className=\"text-lg text-on-subtle font-body text-center\">{intro}</p>\n )}\n </div>\n\n <Accordion\n type=\"single\"\n collapsible\n defaultValue={defaultValue ?? items[0]?.value}\n className=\"w-full\"\n >\n {items.map(({ value, question, answer }) => (\n <AccordionItem key={value} value={value}>\n <AccordionTrigger className=\"text-base font-medium font-body text-on-prominent hover:no-underline\">\n {question}\n </AccordionTrigger>\n <AccordionContent>\n <p className=\"text-sm text-on-subtle font-body pb-4\">{answer}</p>\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n\n {helpCard && (\n <div className={`flex flex-col gap-6 items-center w-full bg-subtle rounded-xl ${helpCardPaddingClass}`}>\n <div className=\"flex flex-col gap-2 w-full\">\n <h3 className={helpTitleClass}>{helpCard.title}</h3>\n <p className=\"text-base text-on-subtle font-body\">{helpCard.body}</p>\n </div>\n <Button size=\"sm\" onClick={helpCard.onCtaClick}>{helpCard.ctaLabel}</Button>\n </div>\n )}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { ArrowRight, ArrowUpRight } from \"lucide-react\"\nimport { Button } from \"../ui/button\"\n\nexport type HeroBlockTagline = {\n /** Primary label (e.g. \"What's new\"). */\n label: string\n /** Secondary text shown after a separator (e.g. \"Just shipped v2.0\"). */\n suffix?: string\n}\n\nexport type HeroBlockCta = {\n label: string\n onClick?: () => void\n /** When true on the primary CTA in the centred layout, renders a trailing arrow. */\n trailingArrow?: boolean\n}\n\nexport type HeroBlockProps = {\n /** \"centered\" = single column, no image; \"split\" = two-column desktop with image. Default: \"centered\". */\n layout?: \"centered\" | \"split\"\n tagline?: HeroBlockTagline\n heading: string\n body: string\n primaryCta: HeroBlockCta\n /** Shown only in \"split\" layout. */\n secondaryCta?: HeroBlockCta\n /** Image content for \"split\" layout. Defaults to a subtle placeholder square. */\n image?: React.ReactNode\n}\n\nexport function HeroBlock({\n layout = \"centered\",\n tagline,\n heading,\n body,\n primaryCta,\n secondaryCta,\n image,\n}: HeroBlockProps) {\n if (layout === \"centered\") {\n return (\n <div className=\"w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent\">\n <div className=\"flex flex-col items-center justify-center gap-8 px-layout-margin-inline py-24 max-w-2xl mx-auto text-center\">\n <div className=\"flex flex-col items-center gap-6 w-full\">\n {tagline && <TaglinePill {...tagline} />}\n <h1 className=\"text-5xl font-semibold font-display tracking-tight text-on-prominent text-center\">\n {heading}\n </h1>\n <p className=\"text-lg font-body text-on-subtle text-center\">{body}</p>\n </div>\n <Button size=\"sm\" onClick={primaryCta.onClick}>\n {primaryCta.label}\n {primaryCta.trailingArrow !== false && <ArrowRight className=\"size-4\" />}\n </Button>\n </div>\n </div>\n )\n }\n\n // split layout\n return (\n <div className=\"w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent\">\n <div className=\"flex flex-col min-[600px]:flex-row items-center gap-layout-gutter px-layout-margin-inline py-16 min-[600px]:py-24 max-w-5xl mx-auto\">\n <div className=\"flex flex-col gap-6 min-[600px]:gap-8 flex-1 min-w-0 items-center min-[600px]:items-start text-center min-[600px]:text-left w-full\">\n <div className=\"flex flex-col gap-5 min-[600px]:gap-6 items-center min-[600px]:items-start w-full\">\n {tagline && <TaglinePill {...tagline} responsive />}\n <h1 className=\"text-4xl min-[600px]:text-5xl font-semibold font-display tracking-tight text-on-prominent\">\n {heading}\n </h1>\n <p className=\"text-lg font-body text-on-subtle\">{body}</p>\n </div>\n <div className=\"flex items-center justify-center min-[600px]:justify-start gap-2\">\n <Button size=\"sm\" onClick={primaryCta.onClick}>{primaryCta.label}</Button>\n {secondaryCta && (\n <Button variant=\"secondary\" size=\"sm\" onClick={secondaryCta.onClick}>\n {secondaryCta.label}\n </Button>\n )}\n </div>\n </div>\n <div className=\"w-full min-[600px]:flex-1 min-[600px]:min-w-0 aspect-square rounded-xl bg-subtle shrink-0\" aria-hidden=\"true\">\n {image}\n </div>\n </div>\n </div>\n )\n}\n\nfunction TaglinePill({\n label,\n suffix,\n responsive,\n}: HeroBlockTagline & { responsive?: boolean }) {\n return (\n <div className=\"inline-flex items-center gap-1.5 h-7 px-3 rounded-full border border-border-subtle bg-prominent shadow-sm shrink-0\">\n <span className=\"size-1.5 rounded-full bg-semantic-win shrink-0\" aria-hidden=\"true\" />\n {responsive && suffix ? (\n <span className=\"text-sm font-body text-on-prominent whitespace-nowrap\">\n <span className=\"hidden min-[600px]:inline\">{label}<span className=\"text-on-subtle\">{\" · \"}</span></span>\n <span className=\"text-on-subtle min-[600px]:text-on-prominent\">{suffix}</span>\n </span>\n ) : (\n <span className=\"text-sm font-body text-on-prominent whitespace-nowrap\">\n {label}\n {suffix && <span className=\"text-on-subtle\">{` · ${suffix}`}</span>}\n </span>\n )}\n <ArrowUpRight className=\"size-4 text-on-subtle shrink-0\" aria-hidden=\"true\" />\n </div>\n )\n}\n","import * as React from \"react\"\nimport { Button } from \"../ui/button\"\nimport { Input } from \"../ui/input\"\nimport { Link } from \"../ui/link\"\n\nexport type AuthBlockMode = \"sign-in\" | \"sign-up\"\nexport type AuthBlockProvider = \"google\" | \"telegram\" | \"x\"\n\nexport type AuthBlockProps = {\n mode: AuthBlockMode\n /** Logo source URL (consumer-provided). Renders the small icon in the header lockup. */\n logoSrc: string\n /** Wordmark text in the header lockup. Defaults to \"trading.game\". */\n wordmark?: string\n /** OAuth providers to show as buttons. Default: all three. Order is preserved. */\n providers?: AuthBlockProvider[]\n /** Submit handler. Receives just the email field for v1 (form is single-field). */\n onSubmit?: (data: { email: string }) => void\n /** Footer link href (sign-in → sign-up, sign-up → sign-in). */\n crossLinkHref?: string\n /** Unique prefix for input IDs (allows multiple instances on the same page). */\n idPrefix?: string\n}\n\nexport function AuthBlock({\n mode,\n logoSrc,\n wordmark = \"trading.game\",\n providers = [\"google\", \"telegram\", \"x\"],\n onSubmit,\n crossLinkHref = \"#\",\n idPrefix = \"auth\",\n}: AuthBlockProps) {\n const headingText = mode === \"sign-in\" ? \"Sign in\" : \"Sign up\"\n const termsText = mode === \"sign-in\" ? \"By signing in\" : \"By signing up\"\n const ctaText = mode === \"sign-in\" ? \"Sign in\" : \"Sign up\"\n const footerPrompt =\n mode === \"sign-in\" ? \"Don't have an account?\" : \"Already have an account?\"\n const footerLinkLabel = mode === \"sign-in\" ? \"Sign up\" : \"Log in\"\n const [email, setEmail] = React.useState(\"\")\n\n return (\n <div className=\"flex flex-col items-center gap-6 w-full\">\n <div className=\"flex items-center gap-2\">\n <img src={logoSrc} alt={wordmark} className=\"size-8 object-contain\" />\n <span className=\"font-display font-semibold text-base text-on-prominent tracking-tight\">\n {wordmark}\n </span>\n </div>\n\n <h2 className=\"text-3xl font-semibold font-display text-on-prominent text-center\">\n {headingText}\n </h2>\n\n <div className=\"flex flex-col gap-3 w-full\">\n {providers.map((p) => (\n <ProviderButton key={p} provider={p} />\n ))}\n </div>\n\n <div className=\"flex items-center gap-3 w-full\">\n <div className=\"flex-1 h-px bg-border-subtle\" />\n <span className=\"text-sm text-on-subtle font-body\">or</span>\n <div className=\"flex-1 h-px bg-border-subtle\" />\n </div>\n\n <div className=\"flex items-center gap-2 w-full\">\n <Input\n id={`${idPrefix}-email`}\n type=\"text\"\n placeholder=\"Email or phone number\"\n className=\"flex-1\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n />\n </div>\n\n <p className=\"text-sm text-on-subtle font-body text-left w-full\">\n {termsText}, you agree to our{\" \"}\n <Link size=\"sm\" href=\"#\">Terms &amp; Conditions</Link>\n </p>\n\n <Button size=\"md\" className=\"w-full\" onClick={() => onSubmit?.({ email })}>\n {ctaText}\n </Button>\n\n <p className=\"text-sm text-on-subtle font-body text-center\">\n {footerPrompt}{\" \"}\n <Link size=\"sm\" href={crossLinkHref}>{footerLinkLabel}</Link>\n </p>\n </div>\n )\n}\n\nfunction ProviderButton({ provider }: { provider: AuthBlockProvider }) {\n switch (provider) {\n case \"google\":\n return (\n <Button variant=\"secondary\" size=\"lg\" className=\"w-full\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" aria-hidden=\"true\" fill=\"none\" className=\"shrink-0\">\n <path d=\"M17.64 9.205c0-.639-.057-1.252-.164-1.841H9v3.481h4.844a4.14 4.14 0 0 1-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615Z\" fill=\"#4285F4\" />\n <path d=\"M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18Z\" fill=\"#34A853\" />\n <path d=\"M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.996 8.996 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332Z\" fill=\"#FBBC05\" />\n <path d=\"M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 7.29C4.672 5.163 6.656 3.58 9 3.58Z\" fill=\"#EA4335\" />\n </svg>\n Continue with Google\n </Button>\n )\n case \"telegram\":\n return (\n <Button variant=\"secondary\" size=\"lg\" className=\"w-full\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" aria-hidden=\"true\" fill=\"none\" className=\"shrink-0\">\n <circle cx=\"9\" cy=\"9\" r=\"9\" fill=\"#29B6F6\" />\n <path d=\"M13.5 5.25 11.25 13.5l-2.25-3-3 1.5 1.5-5.25 6-1.5Z\" fill=\"white\" opacity=\"0.3\" />\n <path d=\"m4.5 8.625 7.5-3-1.125 7.125-2.625-2.25-1.5 1.5.375-3.375Z\" fill=\"white\" />\n </svg>\n Continue with Telegram\n </Button>\n )\n case \"x\":\n return (\n <Button variant=\"secondary\" size=\"lg\" className=\"w-full\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" aria-hidden=\"true\" fill=\"currentColor\" className=\"shrink-0\">\n <path d=\"M13.955 2.25h2.423L10.977 8.28 17.25 15.75h-4.812l-3.913-5.116-4.477 5.116H1.645l5.703-6.52L1.125 2.25h4.934l3.538 4.678 4.358-4.678Zm-.85 12.105h1.343L5.025 3.627H3.579l9.526 10.728Z\" />\n </svg>\n Continue with X (Twitter)\n </Button>\n )\n }\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Menu, X } from \"lucide-react\"\nimport { Button } from \"../ui/button\"\n\nexport type NavBarBlockLink = {\n label: string\n href?: string\n onClick?: () => void\n}\n\nexport type NavBarBlockProps = {\n /** Brand logo URLs and alt text. */\n brand: {\n fullLogoSrc: string\n iconLogoSrc: string\n alt: string\n }\n /** Primary nav links. */\n links: NavBarBlockLink[]\n /** Sign-in button. Hidden if omitted. Default label: \"Sign in\". */\n signIn?: { label?: string; onClick?: () => void }\n /** Sign-up button. Hidden if omitted. Default label: \"Sign up\". */\n signUp?: { label?: string; onClick?: () => void }\n}\n\nexport function NavBarBlock({ brand, links, signIn, signUp }: NavBarBlockProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = React.useState(false)\n\n return (\n <div className=\"w-full border border-border-subtle rounded-md overflow-hidden\">\n <nav className=\"bg-prominent\">\n <div className=\"flex items-center justify-between px-layout-margin-inline py-3\">\n <div className=\"flex items-center gap-6\">\n <img\n src={brand.fullLogoSrc}\n alt={brand.alt}\n className=\"hidden min-[600px]:block h-7 w-auto shrink-0 object-contain object-left\"\n />\n <img\n src={brand.iconLogoSrc}\n alt={brand.alt}\n className=\"min-[600px]:hidden size-7 shrink-0 object-contain\"\n />\n <div className=\"hidden min-[600px]:flex items-center gap-1\">\n {links.map((l) => (\n <Button key={l.label} variant=\"tertiary\" size=\"sm\" onClick={l.onClick}>\n {l.label}\n </Button>\n ))}\n </div>\n </div>\n\n <div className=\"hidden min-[600px]:flex items-center gap-2\">\n {signIn && (\n <Button variant=\"tertiary\" size=\"sm\" onClick={signIn.onClick}>\n {signIn.label ?? \"Sign in\"}\n </Button>\n )}\n {signUp && (\n <Button size=\"sm\" onClick={signUp.onClick}>\n {signUp.label ?? \"Sign up\"}\n </Button>\n )}\n </div>\n\n <Button\n variant=\"tertiary\"\n size=\"icon-sm\"\n aria-label={mobileMenuOpen ? \"Close navigation menu\" : \"Open navigation menu\"}\n aria-expanded={mobileMenuOpen}\n className=\"min-[600px]:hidden\"\n onClick={() => setMobileMenuOpen((prev) => !prev)}\n >\n {mobileMenuOpen ? <X className=\"size-4\" /> : <Menu className=\"size-4\" />}\n </Button>\n </div>\n\n {mobileMenuOpen && (\n <div className=\"min-[600px]:hidden flex flex-col border-t border-border-subtle px-layout-margin-inline py-3 gap-1\">\n {links.map((l) => (\n <Button\n key={l.label}\n variant=\"tertiary\"\n size=\"sm\"\n className=\"justify-start w-full\"\n onClick={l.onClick}\n >\n {l.label}\n </Button>\n ))}\n {(signIn || signUp) && (\n <div className=\"flex flex-col gap-2 pt-3 mt-2 border-t border-border-subtle\">\n {signIn && (\n <Button variant=\"secondary\" size=\"sm\" className=\"w-full\" onClick={signIn.onClick}>\n {signIn.label ?? \"Sign in\"}\n </Button>\n )}\n {signUp && (\n <Button size=\"sm\" className=\"w-full\" onClick={signUp.onClick}>\n {signUp.label ?? \"Sign up\"}\n </Button>\n )}\n </div>\n )}\n </div>\n )}\n </nav>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { History, X } from \"lucide-react\"\nimport { Button } from \"../ui/button\"\nimport { Drawer, DrawerClose, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger } from \"../ui/drawer\"\nimport { Empty, EmptyHeader, EmptyMedia, EmptyTitle } from \"../ui/empty\"\nimport { Item, ItemActions, ItemContent, ItemGroup, ItemTitle } from \"../ui/item\"\nimport { NavigationButton } from \"../ui/navigation-button\"\nimport { Separator } from \"../ui/separator\"\nimport { Sheet, SheetClose, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from \"../ui/sheet\"\nimport { useIsMobile } from \"../../hooks/use-mobile\"\n\n// ── Position discriminated union ─────────────────────────────────────────────\ntype PositionBase = {\n market: string\n duration: string\n stake: string\n pnl: string\n win: boolean\n}\nexport type RiseFallPosition = PositionBase & { kind: \"rise-fall\"; direction: \"Rise\" | \"Fall\" }\nexport type SwipePosition = PositionBase & { kind: \"swipe\"; direction: \"Up\" | \"Down\" }\nexport type BoxOPosition = PositionBase & { kind: \"box-o\"; multiplier: string }\nexport type DigitsPosition = PositionBase & {\n kind: \"digits\"\n type: \"matches\" | \"differs\" | \"odd\" | \"even\" | \"over\" | \"under\"\n digit?: string\n}\nexport type Position = RiseFallPosition | SwipePosition | BoxOPosition | DigitsPosition\n\n// ── Public component ─────────────────────────────────────────────────────────\nexport type OpenPositionsBlockProps = {\n /** Consumer-provided trigger element. Wrapped with a Sheet/Drawer trigger asChild. */\n trigger: React.ReactNode\n /** Sheet/drawer title. Default: \"Positions\". */\n sheetTitle?: string\n /** Position items to render in the list. Empty array → emptyState is shown. */\n positions: Position[]\n /** Footer link handler. The button label is fixed: \"View trade history\". */\n onViewHistory?: () => void\n /** Replaces the default empty state when positions.length === 0. */\n emptyState?: React.ReactNode\n}\n\nexport function OpenPositionsBlock({\n trigger,\n sheetTitle = \"Positions\",\n positions,\n onViewHistory,\n emptyState,\n}: OpenPositionsBlockProps) {\n const isMobile = useIsMobile()\n\n const body =\n positions.length === 0\n ? (emptyState ?? <DefaultEmptyState onViewHistory={onViewHistory} />)\n : <PositionsList positions={positions} onViewHistory={onViewHistory} />\n\n if (isMobile) {\n return (\n <Drawer>\n <DrawerTrigger asChild>{trigger}</DrawerTrigger>\n <DrawerContent className=\"p-0 flex flex-col\">\n <DrawerHeader className=\"flex-row items-center justify-between px-4 py-3 shrink-0 text-left\">\n <DrawerTitle className=\"text-base font-semibold font-display text-on-prominent\">\n {sheetTitle}\n </DrawerTitle>\n <DrawerClose asChild>\n <NavigationButton size=\"sm\" aria-label=\"Close\"><X /></NavigationButton>\n </DrawerClose>\n </DrawerHeader>\n <Separator />\n {body}\n </DrawerContent>\n </Drawer>\n )\n }\n\n return (\n <Sheet>\n <SheetTrigger asChild>{trigger}</SheetTrigger>\n <SheetContent side=\"right\" showCloseButton={false} className=\"p-0 flex flex-col w-80 sm:max-w-xs\">\n <SheetHeader className=\"flex-row items-center justify-between px-4 py-3 shrink-0\">\n <SheetTitle className=\"text-base font-semibold font-display text-on-prominent\">\n {sheetTitle}\n </SheetTitle>\n <SheetClose asChild>\n <NavigationButton size=\"sm\" aria-label=\"Close\"><X /></NavigationButton>\n </SheetClose>\n </SheetHeader>\n <Separator />\n {body}\n </SheetContent>\n </Sheet>\n )\n}\n\n// ── Internals ────────────────────────────────────────────────────────────────\nfunction PositionsList({\n positions,\n onViewHistory,\n}: {\n positions: Position[]\n onViewHistory?: () => void\n}) {\n return (\n <div className=\"flex flex-col flex-1 min-h-0\">\n <ItemGroup className=\"min-h-0 overflow-y-auto\">\n {positions.map((pos, i) => (\n <PositionRow key={i} position={pos} />\n ))}\n </ItemGroup>\n <Separator />\n <div className=\"shrink-0 flex justify-center py-4\">\n <Button variant=\"tertiary\" size=\"md\" onClick={onViewHistory}>\n View trade history\n </Button>\n </div>\n </div>\n )\n}\n\nfunction PositionRow({ position }: { position: Position }) {\n const { label, suffix } = positionTitleParts(position)\n return (\n <Item size=\"sm\">\n <ItemContent>\n <ItemTitle>\n <span className=\"text-on-prominent\">{label}</span>\n {suffix && <span className=\"text-on-subtle\">{` ${suffix}`}</span>}\n </ItemTitle>\n <MetaNote market={position.market} duration={position.duration} />\n </ItemContent>\n <ItemActions>\n <PnlMeta pnl={position.pnl} win={position.win} stake={position.stake} />\n </ItemActions>\n </Item>\n )\n}\n\nconst DIGITS_TYPE_LABEL: Record<DigitsPosition[\"type\"], string> = {\n matches: \"Matches\",\n differs: \"Differs\",\n odd: \"Odd\",\n even: \"Even\",\n over: \"Over\",\n under: \"Under\",\n}\n\n/**\n * Splits a position's row title into the prominent label and an optional\n * subtle suffix (rendered in `text-on-subtle` so the multiplier/digit doesn't\n * compete with the contract type for visual weight).\n */\nfunction positionTitleParts(p: Position): { label: string; suffix?: string } {\n switch (p.kind) {\n case \"rise-fall\": return { label: p.direction }\n case \"swipe\": return { label: `Swipe-${p.direction.toLowerCase()}` }\n case \"box-o\": return { label: \"Box-O\", suffix: p.multiplier }\n // Digits with a picked value (matches/differs/over/under) show it as a\n // subtle suffix; odd/even have no digit so just the label.\n case \"digits\": return { label: DIGITS_TYPE_LABEL[p.type], suffix: p.digit }\n }\n}\n\nfunction MetaNote({ market, duration }: { market: string; duration: string }) {\n return (\n <span className=\"text-xs text-on-subtle whitespace-nowrap\">\n {market} · {duration}\n </span>\n )\n}\n\nfunction PnlMeta({ pnl, win, stake }: { pnl: string; win: boolean; stake: string }) {\n return (\n <div className=\"flex flex-col items-end gap-0.5\">\n <span className={`font-display font-semibold tabular-nums text-base ${win ? \"text-semantic-win\" : \"text-semantic-loss\"}`}>\n {pnl}\n </span>\n <span className=\"tabular-nums text-xs text-on-subtle\">{stake}</span>\n </div>\n )\n}\n\nfunction DefaultEmptyState({ onViewHistory }: { onViewHistory?: () => void }) {\n return (\n <Empty className=\"flex min-h-0 flex-1 flex-col justify-center border-none rounded-none p-6 text-center\">\n <EmptyHeader className=\"gap-4\">\n <EmptyMedia>\n <History className=\"size-8 text-on-subtle\" />\n </EmptyMedia>\n {/* h6 (16px) intentionally overrides EmptyTitle's default\n h5 (18px) — this empty state sits inside a compact sheet.\n Role-on-role override works because the scale is ordered largest →\n smallest in the stylesheet. */}\n <EmptyTitle className=\"h6 text-on-subtle\">\n No trades yet.\n </EmptyTitle>\n <Button variant=\"tertiary\" size=\"md\" onClick={onViewHistory}>\n View trade history\n </Button>\n </EmptyHeader>\n </Empty>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Smoothing hook */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nexport type LoaderCheckpoint = {\n /** Percentage the bar may climb to once this stage is reached (0–100). */\n target: number\n /** Text shown while this stage is in flight. */\n label: string\n}\n\nexport interface SmoothProgressInput {\n /** Ordered stages the loader steps through. */\n checkpoints: LoaderCheckpoint[]\n /** Index of the highest checkpoint reached so far. */\n reached: number\n /** When true, the bar is released to 100%. */\n done: boolean\n /** Max climb speed in % per second. Caps sudden jumps. */\n maxVelocity?: number\n /** How long a stage may stall before `delayed` flips true. */\n delayMs?: number\n /** Label shown once complete. */\n readyLabel?: string\n}\n\nexport interface SmoothProgressState {\n progress: number\n label: string\n delayed: boolean\n complete: boolean\n}\n\n/**\n * Velocity-capped progress smoothing. The bar climbs continuously toward the\n * current checkpoint's ceiling rather than snapping to it, and reports\n * `delayed` when a stage genuinely stalls — so a held bar still reads as\n * working instead of broken.\n */\nexport function useSmoothProgress({\n checkpoints,\n reached,\n done,\n maxVelocity = 30,\n delayMs = 8000,\n readyLabel = \"Ready\",\n}: SmoothProgressInput): SmoothProgressState {\n const [progress, setProgress] = React.useState(0)\n const [delayed, setDelayed] = React.useState(false)\n\n // Latest-value refs so the rAF loop never needs to be torn down and rebuilt\n // when inputs change mid-load.\n const checkpointsRef = React.useRef(checkpoints)\n const reachedRef = React.useRef(reached)\n const doneRef = React.useRef(done)\n\n // Synced in an effect rather than assigned during render: mutating a ref\n // mid-render is not safe under concurrent rendering (and `react-hooks/refs`\n // rejects it). No dep array, so this runs after every commit — the rAF loop\n // reads these on the next frame, which is always after the effect flush.\n React.useEffect(() => {\n checkpointsRef.current = checkpoints\n reachedRef.current = reached\n doneRef.current = done\n })\n\n const progressRef = React.useRef(0)\n const lastAdvanceRef = React.useRef(0)\n\n React.useEffect(() => {\n let raf = 0\n let last = 0\n const tick = (ts: number) => {\n if (!last) last = ts\n const dt = Math.min((ts - last) / 1000, 0.05)\n last = ts\n\n const cps = checkpointsRef.current\n const isDone = doneRef.current\n const idx = Math.min(reachedRef.current, cps.length - 1)\n const ceiling = isDone ? 100 : cps[idx]?.target ?? 100\n const cur = progressRef.current\n const gap = ceiling - cur\n\n // A ceiling that has fallen below where the bar already sits means the\n // load restarted (a consumer retrying after a failure, or the demo's\n // Replay). The climb is otherwise monotonic, so without this reset the\n // bar would stay pinned at its old high and never move again.\n if (gap < -0.5) {\n progressRef.current = 0\n lastAdvanceRef.current = ts\n setProgress(0)\n setDelayed(false)\n raf = requestAnimationFrame(tick)\n return\n }\n\n if (gap > 0.05) {\n const rate = Math.min(maxVelocity, gap * 2.4)\n let next = cur + rate * dt\n if (next > ceiling) next = ceiling\n if (isDone && next > 99.7) next = 100\n progressRef.current = next\n lastAdvanceRef.current = ts\n setProgress(next)\n setDelayed(false)\n } else if (!isDone && lastAdvanceRef.current && ts - lastAdvanceRef.current > delayMs) {\n setDelayed(true)\n }\n\n raf = requestAnimationFrame(tick)\n }\n raf = requestAnimationFrame(tick)\n return () => cancelAnimationFrame(raf)\n }, [maxVelocity, delayMs])\n\n const idx = Math.min(reached, checkpoints.length - 1)\n const label = done && progress >= 99.5 ? readyLabel : checkpoints[idx]?.label ?? readyLabel\n return { progress, label, delayed, complete: done && progress >= 100 }\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Component */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\n/** Trading Game monogram path, drawn in `--on-primary` on the blue backdrop. */\nconst MONOGRAM_D =\n \"M513.51,265.27l12.26-58.98H183.8l-12.26,58.98h105.29l-46.92,225.76,29.68-.85c1.65-.05,40.84-1.34,87-18.36,64.47-23.76,111.8-66.23,136.88-122.83l15.77-35.6h-139.02l-12.26,58.98h58.44l-6.31,6.26c-3.16,3.14-6.56,6.2-10.11,9.12-14.15,11.63-31.27,21.29-50.86,28.7-10.01,3.79-20.64,6.97-31.57,9.45l-5.55,1.26,33.65-161.89h177.86Z\"\n\nexport interface GameLoadingBlockProps {\n /** Bar fill, 0–100. Pair with `useSmoothProgress` for capped climbing. */\n progress?: number\n /** Current stage label. */\n label?: string\n /** When true, swaps the label for a \"taking longer\" message. */\n delayed?: boolean\n /** Plays the zoom-out reveal and hides the bar. */\n exiting?: boolean\n /** Fires once the exit animation finishes. */\n onExitEnd?: () => void\n /**\n * Constrain to the nearest positioned ancestor instead of the viewport.\n * Use for embedding in a bounded area (docs previews, a game shell column).\n * `exiting` implies this, since the reveal needs the app behind it.\n */\n contained?: boolean\n /**\n * Optional backdrop image (e.g. the app's `dot-pattern.webp`) for a\n * pixel-perfect match with the game shell. Omit to use the token-derived\n * dotted backdrop.\n */\n backgroundImageUrl?: string\n className?: string\n}\n\n/**\n * Determinate loading splash for game entry: dotted brand backdrop, monogram,\n * and a progress bar with a shimmer that keeps signalling life while a stage\n * is held. Exits with a zoom-out reveal, or a plain fade under\n * `prefers-reduced-motion`.\n */\nexport function GameLoadingBlock({\n progress = 0,\n label = \"\",\n delayed = false,\n exiting = false,\n onExitEnd,\n contained = false,\n backgroundImageUrl,\n className,\n}: GameLoadingBlockProps) {\n const [go, setGo] = React.useState(false)\n const [reduced, setReduced] = React.useState(false)\n\n React.useEffect(() => {\n if (typeof window !== \"undefined\" && typeof window.matchMedia === \"function\") {\n setReduced(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)\n }\n }, [])\n\n React.useEffect(() => {\n if (!exiting) return\n const raf = requestAnimationFrame(() => setGo(true))\n const timer = setTimeout(() => onExitEnd?.(), reduced ? 240 : 520)\n return () => {\n cancelAnimationFrame(raf)\n clearTimeout(timer)\n }\n }, [exiting, reduced, onExitEnd])\n\n // `exiting` must be absolute so the app shows through behind the reveal.\n const isAbsolute = exiting || contained\n\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-label=\"Loading game\"\n data-slot=\"game-loading-block\"\n className={cn(\n \"z-50 inset-0 flex flex-col items-center justify-center gap-8 overflow-hidden\",\n isAbsolute ? \"absolute\" : \"fixed\",\n // Token-derived dotted brand backdrop; skipped when a real image is passed.\n !backgroundImageUrl && \"game-loader-backdrop\",\n backgroundImageUrl && \"bg-primary bg-cover bg-center bg-no-repeat\",\n exiting && (reduced ? \"transition-opacity duration-200\" : \"transition-opacity duration-[180ms] delay-[260ms]\"),\n exiting && go ? \"opacity-0\" : \"opacity-100\",\n className\n )}\n style={backgroundImageUrl ? { backgroundImage: `url(${backgroundImageUrl})` } : undefined}\n >\n <svg\n width=\"120\"\n height=\"120\"\n viewBox=\"0 0 697.31 697.31\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n className={cn(\"game-loader-mark fill-on-primary\", exiting && go && !reduced && \"game-loader-mark-exit\")}\n >\n <path d={MONOGRAM_D} />\n </svg>\n\n {!exiting && (\n <div className=\"flex w-[200px] flex-col items-start gap-3.5\">\n <div className=\"relative h-2 w-full overflow-hidden rounded-xs bg-on-primary/25\">\n <div\n className=\"absolute inset-y-0 left-0 overflow-hidden rounded-xs bg-on-primary\"\n style={{ width: `${progress}%` }}\n >\n <span aria-hidden=\"true\" className=\"game-loader-shimmer absolute inset-y-0 left-[-60%] w-[60%]\" />\n </div>\n </div>\n <span className=\"caption text-on-primary/90\">\n {delayed ? \"Taking longer than usual…\" : label}\n </span>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","names":["cva","jsx","jsx","jsxs","cva","Slot","jsx","cva","Slot","jsx","jsxs","cva","jsx","jsxs","jsx","jsx","cva","Slot","jsx","cva","Slot","React","X","jsx","jsxs","wrapAction","X","React","Slot","jsx","jsxs","_a","_b","Slot","Slot","jsx","jsxs","Slot","React","ChevronDownIcon","ChevronDownIcon","jsx","jsxs","_a","ChevronDownIcon","jsx","jsxs","_a","_b","className","props","ChevronDownIcon","jsx","React","jsx","jsxs","api","cva","jsx","cva","CheckIcon","jsx","CheckIcon","jsx","jsxs","jsx","jsxs","CheckIcon","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","CheckIcon","jsx","jsxs","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","cva","jsx","cva","React","cva","jsx","jsx","jsx","jsxs","cva","_a","jsx","cva","jsx","cva","React","cva","jsx","jsx","cva","_a","_b","React","jsx","jsxs","_a","cva","Slot","jsx","cva","Slot","cva","Slot","jsx","cva","Slot","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","cva","ChevronDownIcon","jsx","jsxs","cva","ChevronDownIcon","React","jsx","ChevronLeftIcon","ChevronRightIcon","jsx","jsxs","ChevronLeftIcon","ChevronRightIcon","jsx","jsx","jsx","jsxs","CircleIcon","jsx","CircleIcon","jsx","jsx","jsxs","XIcon","jsx","jsxs","XIcon","React","cva","Slot","React","jsx","React","jsx","jsxs","jsx","jsxs","open","Slot","cva","React","jsx","jsxs","jsx","React","jsx","jsxs","jsx","jsx","cva","jsx","cva","cva","jsx","cva","React","jsx","Fragment","jsx","jsxs","ArrowLeft","jsx","jsxs","ArrowLeft","Plus","AccordionPrimitive","jsx","jsxs","AccordionPrimitive","Plus","ArrowRight","jsx","jsxs","ArrowRight","React","jsx","jsxs","React","X","jsx","jsxs","X","History","X","jsx","jsxs","X","History","React","jsx","jsxs","_a","_b","idx"]}