@cntyclub/ui-react 0.10.7 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +40 -1
- package/dist/index.js +106 -11
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/components/ui/aurora-orb.tsx +163 -0
- package/src/components/ui/thinking-orb.tsx +6 -0
- package/src/index.ts +2 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/accordion.tsx","../src/components/ui/alert.tsx","../src/components/ui/alert-dialog.tsx","../src/components/theme-provider.tsx","../src/components/ui/animated-theme-toggler.tsx","../src/components/ui/app-store-buttons.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/aurora-text.tsx","../src/components/ui/smooth-scroll.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/autocomplete.tsx","../src/components/ui/avatar.tsx","../src/components/ui/avatar-group.tsx","../src/components/ui/animated-counter.tsx","../src/components/ui/badge.tsx","../src/components/ui/badge-group.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/card.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/chat.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/combobox.tsx","../src/components/ui/command.tsx","../src/components/ui/confetti.tsx","../src/components/ui/credit-card.tsx","../src/components/ui/pagination.tsx","../src/components/ui/pagination-controls.tsx","../src/components/ui/table.tsx","../src/components/ui/data-table-paged.tsx","../src/components/ui/drawer.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/dialog.tsx","../src/components/ui/empty.tsx","../src/components/ui/fab.tsx","../src/components/ui/featured-icon.tsx","../src/components/ui/fieldset.tsx","../src/components/ui/form.tsx","../src/components/ui/frame.tsx","../src/components/ui/generic-empty.tsx","../src/components/ui/separator.tsx","../src/components/ui/group.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/help-tip.tsx","../src/lib/hooks/use-callback-ref.ts","../src/lib/hooks/use-hover.ts","../src/components/ui/horizontal-scroll-fader.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/item.tsx","../src/components/ui/kbd.tsx","../src/components/ui/markdown.tsx","../src/components/ui/menu.tsx","../src/components/ui/menubar.tsx","../src/components/ui/meter.tsx","../src/components/ui/multi-select.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/preview-card.tsx","../src/components/ui/progress.tsx","../src/components/ui/qr-code.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/scroller.tsx","../src/components/ui/section-header.tsx","../src/components/ui/social-button.tsx","../src/components/ui/stepper.tsx","../src/components/ui/pipeline.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/segmented-control.tsx","../src/components/ui/sheet.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/slider.tsx","../src/components/ui/spinner.tsx","../src/components/ui/stat.tsx","../src/components/ui/switch.tsx","../src/components/ui/tabs.tsx","../src/components/ui/tag.tsx","../src/lib/hooks/use-first-render.ts","../src/lib/hooks/use-is-tab-active.ts","../src/components/ui/target-countdown.tsx","../src/components/ui/timeline.tsx","../src/components/ui/text-editor.tsx","../src/components/ui/toast.tsx","../src/components/ui/toolbar.tsx","../src/components/ui/vertical-scroll-fader.tsx","../src/components/ui/video-player.tsx","../src/components/layout/dashboard-header.tsx","../src/components/layout/dashboard-panel.tsx","../src/components/layout/dashboard-topbar.tsx","../src/components/upload/avatar-upload-base.tsx","../src/components/upload/image-upload-base.tsx","../src/lib/hooks/use-media-query.ts"],"names":["AccordionPrimitive","jsx","AlertDialogPrimitive","jsxs","theme","value","getSystemTheme","useState","useEffect","useCallback","cva","memo","AuroraText","React","React2","ScrollAreaPrimitive","AutocompletePrimitive","AvatarPrimitive","Fragment","useRef","useRender","mergeProps","XIcon","React3","api","ArrowRightIcon","React4","React5","CollapsiblePrimitive","React6","ComboboxPrimitive","ChevronsUpDownIcon","CommandDialogPrimitive","createContext","useMemo","useContext","React7","SearchIcon","DrawerPrimitive","ContextMenuPrimitive","ChevronRightIcon","CheckIcon","DialogPrimitive","FieldsetPrimitive","FormPrimitive","SeparatorPrimitive","TooltipPrimitive","Tooltip","iconSize","forwardRef","React9","MenuPrimitive","MenubarPrimitive","MeterPrimitive","React10","SelectPrimitive","NavigationMenuPrimitive","ChevronDownIcon","PreviewCardPrimitive","ProgressPrimitive","React11","RadioGroupPrimitive","RadioPrimitive","Slot","AppleLogoIcon","React12","ChevronRight","TogglePrimitive","React13","ToggleGroupPrimitive","Toggle","SheetPrimitive","React14","open","React15","SliderPrimitive","SwitchPrimitive","TabsPrimitive","TriangleAlertIcon","ToolbarPrimitive","useResizeObserver","Transition","isValidElement","clsx","useDropzone","CloudUploadIcon","TrashIcon","useLayoutEffect","subscribe","getSnapshot","getServerSnapshot","useSyncExternalStore"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\n\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Accordion(props: AccordionPrimitive.Root.Props) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n <AccordionPrimitive.Item\n className={cn(\"border-b last:border-b-0\", className)}\n data-slot=\"accordion-item\"\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n className={cn(\n \"flex flex-1 cursor-pointer items-start justify-between gap-4 rounded-md py-4 text-left font-medium text-sm outline-none transition-all focus-visible:ring-[3px] focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-64 data-panel-open:*:data-[slot=accordion-indicator]:rotate-180\",\n className,\n )}\n data-slot=\"accordion-trigger\"\n {...props}\n >\n {children}\n <ChevronDownIcon\n className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 opacity-80 transition-transform duration-200 ease-in-out\"\n data-slot=\"accordion-indicator\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionPanel({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n <AccordionPrimitive.Panel\n className=\"h-(--accordion-panel-height) overflow-hidden text-muted-foreground text-sm transition-[height] duration-200 ease-in-out data-ending-style:h-0 data-starting-style:h-0\"\n data-slot=\"accordion-panel\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Panel>\n );\n}\n\nexport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionPanel,\n AccordionPanel as AccordionContent,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst alertVariants = cva(\n \"relative grid w-full items-start gap-x-2 gap-y-0.5 rounded-xl border px-3.5 py-3 text-card-foreground text-sm has-[>svg]:has-data-[slot=alert-action]:grid-cols-[calc(var(--spacing)*4)_1fr_auto] has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-data-[slot=alert-action]:grid-cols-[1fr_auto] has-[>svg]:gap-x-2 [&>svg]:h-lh [&>svg]:w-4\",\n {\n defaultVariants: {\n variant: \"default\",\n },\n variants: {\n variant: {\n default:\n \"bg-transparent dark:bg-input/32 [&>svg]:text-muted-foreground\",\n error:\n \"border-destructive/32 bg-destructive/4 [&>svg]:text-destructive\",\n info: \"border-info/32 bg-info/4 [&>svg]:text-info\",\n success: \"border-success/32 bg-success/4 [&>svg]:text-success\",\n warning: \"border-warning/32 bg-warning/4 [&>svg]:text-warning\",\n },\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n className={cn(alertVariants({ variant }), className)}\n data-slot=\"alert\"\n role=\"alert\"\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"font-medium [svg~&]:col-start-2\", className)}\n data-slot=\"alert-title\"\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-2.5 text-muted-foreground [svg~&]:col-start-2\",\n className,\n )}\n data-slot=\"alert-description\"\n {...props}\n />\n );\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex gap-1 max-sm:col-start-2 max-sm:mt-2 sm:row-start-1 sm:row-end-3 sm:self-center sm:[[data-slot=alert-description]~&]:col-start-2 sm:[[data-slot=alert-title]~&]:col-start-2 sm:[svg~&]:col-start-2 sm:[svg~[data-slot=alert-description]~&]:col-start-3 sm:[svg~[data-slot=alert-title]~&]:col-start-3\",\n className,\n )}\n data-slot=\"alert-action\"\n {...props}\n />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction };\n","\"use client\";\n\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst AlertDialogCreateHandle = AlertDialogPrimitive.createHandle;\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nfunction AlertDialogTrigger(props: AlertDialogPrimitive.Trigger.Props) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogBackdrop({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 ease-out data-ending-style:opacity-0 data-starting-style:opacity-0\",\n className,\n )}\n data-slot=\"alert-dialog-backdrop\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogViewport({\n className,\n ...props\n}: AlertDialogPrimitive.Viewport.Props) {\n return (\n <AlertDialogPrimitive.Viewport\n className={cn(\n \"fixed inset-0 z-50 grid grid-rows-[1fr_auto_3fr] justify-items-center p-4\",\n className,\n )}\n data-slot=\"alert-dialog-viewport\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogPopup({\n className,\n bottomStickOnMobile = true,\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n bottomStickOnMobile?: boolean;\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogBackdrop />\n <AlertDialogViewport\n className={cn(\n bottomStickOnMobile &&\n \"max-sm:grid-rows-[1fr_auto] max-sm:p-0 max-sm:pt-12\",\n )}\n >\n <AlertDialogPrimitive.Popup\n className={cn(\n \"-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover not-dark:bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg/5 transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n bottomStickOnMobile &&\n \"max-sm:max-w-none max-sm:rounded-none max-sm:border-x-0 max-sm:border-t max-sm:border-b-0 max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden max-sm:before:rounded-none\",\n className,\n )}\n data-slot=\"alert-dialog-popup\"\n {...props}\n />\n </AlertDialogViewport>\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-2 p-6 text-center max-sm:pb-4 sm:text-left\",\n className,\n )}\n data-slot=\"alert-dialog-header\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: \"default\" | \"bare\";\n}) {\n return (\n <div\n className={cn(\n \"flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end sm:rounded-b-[calc(var(--radius-2xl)-1px)]\",\n variant === \"default\" && \"border-t bg-muted/72 py-4\",\n variant === \"bare\" && \"pb-6\",\n className,\n )}\n data-slot=\"alert-dialog-footer\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: AlertDialogPrimitive.Title.Props) {\n return (\n <AlertDialogPrimitive.Title\n className={cn(\n \"font-heading font-semibold text-xl leading-none\",\n className,\n )}\n data-slot=\"alert-dialog-title\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: AlertDialogPrimitive.Description.Props) {\n return (\n <AlertDialogPrimitive.Description\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"alert-dialog-description\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogClose(props: AlertDialogPrimitive.Close.Props) {\n return (\n <AlertDialogPrimitive.Close data-slot=\"alert-dialog-close\" {...props} />\n );\n}\n\nexport {\n AlertDialogCreateHandle,\n AlertDialog,\n AlertDialogPortal,\n AlertDialogBackdrop,\n AlertDialogBackdrop as AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogPopup,\n AlertDialogPopup as AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogClose,\n AlertDialogViewport,\n};\n","\"use client\";\n\n/*\n This file is adapted from next-themes to work with tanstack start.\n next-themes can be found at https://github.com/pacocoursey/next-themes under the MIT license.\n*/\n\nimport {\n createContext,\n memo,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\ninterface ValueObject {\n [themeName: string]: string;\n}\n\nexport interface UseThemeProps {\n /** List of all available theme names */\n themes: string[];\n /** Forced theme name for the current page */\n forcedTheme?: string | undefined;\n /** Update the theme */\n setTheme: React.Dispatch<React.SetStateAction<string>>;\n /** Active theme name */\n theme?: string | undefined;\n /** If `enableSystem` is true and the active theme is \"system\", this returns whether the system preference resolved to \"dark\" or \"light\". Otherwise, identical to `theme` */\n resolvedTheme?: string | undefined;\n /** If enableSystem is true, returns the System theme preference (\"dark\" or \"light\"), regardless what the active theme is */\n systemTheme?: \"dark\" | \"light\" | undefined;\n}\n\nexport type Attribute = `data-${string}` | \"class\";\n\nexport interface ThemeProviderProps extends React.PropsWithChildren {\n /** List of all available theme names */\n themes?: string[] | undefined;\n /** Forced theme name for the current page */\n forcedTheme?: string | undefined;\n /** Whether to switch between dark and light themes based on prefers-color-scheme */\n enableSystem?: boolean | undefined;\n /** Disable all CSS transitions when switching themes */\n disableTransitionOnChange?: boolean | undefined;\n /** Whether to indicate to browsers which color scheme is used (dark or light) for built-in UI like inputs and buttons */\n enableColorScheme?: boolean | undefined;\n /** Key used to store theme setting in localStorage */\n storageKey?: string | undefined;\n /** Default theme name (for v0.0.12 and lower the default was light). If `enableSystem` is false, the default theme is light */\n defaultTheme?: string | undefined;\n /** HTML attribute modified based on the active theme. Accepts `class`, `data-*` (meaning any data attribute, `data-mode`, `data-color`, etc.), or an array which could include both */\n attribute?: Attribute | Attribute[] | undefined;\n /** Mapping of theme name to HTML attribute value. Object where key is the theme name and value is the attribute value */\n value?: ValueObject | undefined;\n /** Nonce string to pass to the inline script for CSP headers */\n nonce?: string | undefined;\n}\n\nconst colorSchemes = [\"light\", \"dark\"];\nconst MEDIA = \"(prefers-color-scheme: dark)\";\nconst isServer = typeof window === \"undefined\";\nconst ThemeContext = createContext<UseThemeProps | undefined>(undefined);\nconst defaultContext: UseThemeProps = { setTheme: (_) => {}, themes: [] };\n\nexport const useTheme = () => useContext(ThemeContext) ?? defaultContext;\n\nexport const ThemeProvider = (props: ThemeProviderProps): React.ReactNode => {\n const context = useContext(ThemeContext);\n\n // Ignore nested context providers, just passthrough children\n if (context) return props.children;\n return <Theme {...props} />;\n};\n\nconst defaultThemes = [\"light\", \"dark\"];\n\nexport const ThemeContextOverride = ({\n children,\n value,\n}: {\n children: React.ReactNode;\n value: string;\n}) => {\n const context = useContext(ThemeContext);\n\n if (!context) return children;\n return (\n <ThemeContext.Provider\n value={{\n ...context,\n resolvedTheme: value,\n forcedTheme: value,\n theme: value,\n }}\n >\n {children}\n </ThemeContext.Provider>\n );\n};\n\nconst Theme = ({\n forcedTheme,\n disableTransitionOnChange = false,\n enableSystem = true,\n enableColorScheme = true,\n storageKey = \"theme\",\n themes = defaultThemes,\n defaultTheme = enableSystem ? \"system\" : \"light\",\n attribute = \"data-theme\",\n value,\n children,\n nonce,\n}: ThemeProviderProps) => {\n const [theme, setThemeState] = useState(() =>\n getTheme(storageKey, defaultTheme),\n );\n const [resolvedTheme, setResolvedTheme] = useState(() =>\n theme === \"system\" ? getSystemTheme() : theme,\n );\n const attrs = !value ? themes : Object.values(value);\n\n // apply selected theme function (light, dark, system)\n // biome-ignore lint/correctness/useExhaustiveDependencies: Code is copied from the library\n const applyTheme = useCallback((theme: string | undefined) => {\n let resolved = theme;\n if (!resolved) return;\n\n // If theme is system, resolve it before setting theme\n if (theme === \"system\" && enableSystem) {\n resolved = getSystemTheme();\n }\n\n const name = value ? value[resolved] : resolved;\n const enable = disableTransitionOnChange ? disableAnimation() : null;\n const d = document.documentElement;\n\n const handleAttribute = (attr: Attribute) => {\n if (attr === \"class\") {\n d.classList.remove(...attrs);\n if (name) d.classList.add(name);\n } else if (attr.startsWith(\"data-\")) {\n if (name) {\n d.setAttribute(attr, name);\n } else {\n d.removeAttribute(attr);\n }\n }\n };\n\n if (Array.isArray(attribute)) attribute.forEach(handleAttribute);\n else handleAttribute(attribute);\n\n if (enableColorScheme) {\n const fallback = colorSchemes.includes(defaultTheme)\n ? defaultTheme\n : null;\n const colorScheme = colorSchemes.includes(resolved) ? resolved : fallback;\n // @ts-expect-error\n d.style.colorScheme = colorScheme;\n }\n\n enable?.();\n }, []);\n\n // Set theme state and save to local storage\n // biome-ignore lint/correctness/useExhaustiveDependencies: Code is copied from the library\n const setTheme = useCallback(\n // biome-ignore lint/suspicious/noExplicitAny: Code is copied from the library\n (value: any) => {\n const newTheme = typeof value === \"function\" ? value(theme) : value;\n setThemeState(newTheme);\n\n // Save to storage\n try {\n localStorage.setItem(storageKey, newTheme);\n } catch {\n // Unsupported\n }\n },\n [theme],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: Code is copied from the library\n const handleMediaQuery = useCallback(\n (e: MediaQueryListEvent | MediaQueryList) => {\n const resolved = getSystemTheme(e);\n setResolvedTheme(resolved);\n\n if (theme === \"system\" && enableSystem && !forcedTheme) {\n applyTheme(\"system\");\n }\n },\n [theme, forcedTheme],\n );\n\n // Always listen to System preference\n useEffect(() => {\n const media = window.matchMedia(MEDIA);\n\n // Intentionally use deprecated listener methods to support iOS & old browsers\n media.addListener(handleMediaQuery);\n handleMediaQuery(media);\n\n return () => media.removeListener(handleMediaQuery);\n }, [handleMediaQuery]);\n\n // localStorage event handling, allow to sync theme changes between tabs\n // biome-ignore lint/correctness/useExhaustiveDependencies: The code is copied\n useEffect(() => {\n const handleStorage = (e: StorageEvent) => {\n if (e.key !== storageKey) {\n return;\n }\n\n // If default theme set, use it if localstorage === null (happens on local storage manual deletion)\n const theme = e.newValue || defaultTheme;\n setTheme(theme);\n };\n\n window.addEventListener(\"storage\", handleStorage);\n return () => window.removeEventListener(\"storage\", handleStorage);\n }, [setTheme]);\n\n // Whenever theme or forcedTheme changes, apply it\n // biome-ignore lint/correctness/useExhaustiveDependencies: The code is copied\n useEffect(() => {\n applyTheme(forcedTheme ?? theme);\n }, [forcedTheme, theme]);\n\n const providerValue = useMemo(\n () => ({\n theme,\n setTheme,\n forcedTheme,\n themes: enableSystem ? [...themes, \"system\"] : themes,\n resolvedTheme: theme === \"system\" ? resolvedTheme : theme,\n systemTheme: (enableSystem ? resolvedTheme : undefined) as\n | \"light\"\n | \"dark\"\n | undefined,\n }),\n [theme, setTheme, forcedTheme, enableSystem, themes, resolvedTheme],\n );\n\n return (\n <ThemeContext.Provider value={providerValue}>\n <ThemeScript\n {...{\n forcedTheme,\n storageKey,\n attribute,\n enableSystem,\n enableColorScheme,\n defaultTheme,\n value,\n themes,\n nonce,\n }}\n />\n {children}\n </ThemeContext.Provider>\n );\n};\n\nconst ThemeScript = memo(\n ({\n forcedTheme,\n storageKey,\n attribute,\n enableSystem,\n enableColorScheme,\n defaultTheme,\n value,\n themes,\n nonce,\n }: Omit<ThemeProviderProps, \"children\"> & { defaultTheme: string }) => {\n const scriptArgs = JSON.stringify([\n attribute,\n storageKey,\n defaultTheme,\n forcedTheme,\n themes,\n value,\n enableSystem,\n enableColorScheme,\n ]).slice(1, -1);\n\n return (\n <script\n suppressHydrationWarning\n nonce={typeof window === \"undefined\" ? nonce : \"\"}\n // biome-ignore lint/security/noDangerouslySetInnerHtml: Needed to inject script before hydration\n dangerouslySetInnerHTML={{\n __html: `(${script.toString()})(${scriptArgs})`,\n }}\n />\n // <></>\n );\n },\n);\n\n// Helpers\nconst getTheme = (key: string, fallback?: string) => {\n if (isServer) return undefined;\n let theme: string | undefined;\n try {\n theme = localStorage.getItem(key) || undefined;\n } catch {\n // Unsupported\n }\n return theme || fallback;\n};\n\nconst disableAnimation = () => {\n const css = document.createElement(\"style\");\n css.appendChild(\n document.createTextNode(\n \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\",\n ),\n );\n document.head.appendChild(css);\n\n return () => {\n // Force restyle\n (() => window.getComputedStyle(document.body))();\n\n // Wait for next tick before removing\n setTimeout(() => {\n document.head.removeChild(css);\n }, 1);\n };\n};\n\nconst getSystemTheme = (e?: MediaQueryList | MediaQueryListEvent) => {\n const event = e ?? window.matchMedia(MEDIA);\n const isDark = event.matches;\n const systemTheme = isDark ? \"dark\" : \"light\";\n return systemTheme;\n};\n\n/*\n This file is adapted from next-themes to work with tanstack start.\n next-themes can be found at https://github.com/pacocoursey/next-themes under the MIT license.\n*/\n\n// biome-ignore lint/suspicious/noExplicitAny: Code is copied from the library\nexport const script: (...args: any[]) => void = (\n attribute,\n storageKey,\n defaultTheme,\n forcedTheme,\n themes,\n value,\n enableSystem,\n enableColorScheme,\n) => {\n const el = document.documentElement;\n const systemThemes = [\"light\", \"dark\"];\n const isClass = attribute === \"class\";\n const classes =\n isClass && value\n ? themes.map((t: string | number) => value[t] || t)\n : themes;\n\n function updateDOM(theme: string) {\n if (isClass) {\n el.classList.remove(...classes);\n el.classList.add(theme);\n } else {\n el.setAttribute(attribute, theme);\n }\n\n setColorScheme(theme);\n }\n\n function setColorScheme(theme: string) {\n if (enableColorScheme && systemThemes.includes(theme)) {\n el.style.colorScheme = theme;\n }\n }\n\n function getSystemTheme() {\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n }\n\n if (forcedTheme) {\n updateDOM(forcedTheme);\n } else {\n try {\n const themeName = localStorage.getItem(storageKey) || defaultTheme;\n const isSystem = enableSystem && themeName === \"system\";\n const theme = isSystem ? getSystemTheme() : themeName;\n updateDOM(theme);\n } catch {\n //\n }\n }\n};\n","\"use client\";\n\nimport { MoonIcon, SunIcon } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { flushSync } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { useTheme } from \"../theme-provider\";\nimport { buttonVariants } from \"./button\";\n\nexport type ThemeTogglerVariant =\n | \"circle\"\n | \"square\"\n | \"triangle\"\n | \"diamond\"\n | \"hexagon\"\n | \"rectangle\"\n | \"star\";\n\ninterface AnimatedThemeTogglerProps\n extends React.ComponentPropsWithoutRef<\"button\"> {\n /** Duration of the reveal animation in milliseconds. */\n duration?: number;\n /** Clip-path shape used for the view-transition reveal. */\n variant?: ThemeTogglerVariant;\n /** Expand from the viewport center instead of the button center. */\n fromCenter?: boolean;\n}\n\nfunction polygonCollapsed(cx: number, cy: number, vertexCount: number): string {\n const pairs = Array.from(\n { length: vertexCount },\n () => `${cx}px ${cy}px`,\n ).join(\", \");\n return `polygon(${pairs})`;\n}\n\nfunction getThemeTransitionClipPaths(\n variant: ThemeTogglerVariant,\n cx: number,\n cy: number,\n maxRadius: number,\n viewportWidth: number,\n viewportHeight: number,\n): [string, string] {\n switch (variant) {\n case \"circle\":\n return [\n `circle(0px at ${cx}px ${cy}px)`,\n `circle(${maxRadius}px at ${cx}px ${cy}px)`,\n ];\n case \"square\": {\n const halfW = Math.max(cx, viewportWidth - cx);\n const halfH = Math.max(cy, viewportHeight - cy);\n const halfSide = Math.max(halfW, halfH) * 1.05;\n const end = [\n `${cx - halfSide}px ${cy - halfSide}px`,\n `${cx + halfSide}px ${cy - halfSide}px`,\n `${cx + halfSide}px ${cy + halfSide}px`,\n `${cx - halfSide}px ${cy + halfSide}px`,\n ].join(\", \");\n return [polygonCollapsed(cx, cy, 4), `polygon(${end})`];\n }\n case \"triangle\": {\n const scale = maxRadius * 2.2;\n const dx = (Math.sqrt(3) / 2) * scale;\n const verts = [\n `${cx}px ${cy - scale}px`,\n `${cx + dx}px ${cy + 0.5 * scale}px`,\n `${cx - dx}px ${cy + 0.5 * scale}px`,\n ].join(\", \");\n return [polygonCollapsed(cx, cy, 3), `polygon(${verts})`];\n }\n case \"diamond\": {\n // Slightly larger than the circle radius so axis-aligned coverage matches.\n const R = maxRadius * Math.SQRT2;\n const end = [\n `${cx}px ${cy - R}px`,\n `${cx + R}px ${cy}px`,\n `${cx}px ${cy + R}px`,\n `${cx - R}px ${cy}px`,\n ].join(\", \");\n return [polygonCollapsed(cx, cy, 4), `polygon(${end})`];\n }\n case \"hexagon\": {\n const R = maxRadius * Math.SQRT2;\n const verts: string[] = [];\n for (let i = 0; i < 6; i++) {\n const a = -Math.PI / 2 + (i * Math.PI) / 3;\n verts.push(`${cx + R * Math.cos(a)}px ${cy + R * Math.sin(a)}px`);\n }\n return [polygonCollapsed(cx, cy, 6), `polygon(${verts.join(\", \")})`];\n }\n case \"rectangle\": {\n const halfW = Math.max(cx, viewportWidth - cx);\n const halfH = Math.max(cy, viewportHeight - cy);\n const end = [\n `${cx - halfW}px ${cy - halfH}px`,\n `${cx + halfW}px ${cy - halfH}px`,\n `${cx + halfW}px ${cy + halfH}px`,\n `${cx - halfW}px ${cy + halfH}px`,\n ].join(\", \");\n return [polygonCollapsed(cx, cy, 4), `polygon(${end})`];\n }\n case \"star\": {\n // Small overscan so the last frames never leave a 1px seam.\n const R = maxRadius * Math.SQRT2 * 1.03;\n const innerRatio = 0.42;\n const starPolygon = (radius: number) => {\n const verts: string[] = [];\n for (let i = 0; i < 5; i++) {\n const outerA = -Math.PI / 2 + (i * 2 * Math.PI) / 5;\n verts.push(\n `${cx + radius * Math.cos(outerA)}px ${cy + radius * Math.sin(outerA)}px`,\n );\n const innerA = outerA + Math.PI / 5;\n verts.push(\n `${cx + radius * innerRatio * Math.cos(innerA)}px ${cy + radius * innerRatio * Math.sin(innerA)}px`,\n );\n }\n return `polygon(${verts.join(\", \")})`;\n };\n const startR = Math.max(2, R * 0.025);\n return [starPolygon(startR), starPolygon(R)];\n }\n default:\n return [\n `circle(0px at ${cx}px ${cy}px)`,\n `circle(${maxRadius}px at ${cx}px ${cy}px)`,\n ];\n }\n}\n\ntype DocumentWithViewTransition = Document & {\n startViewTransition?: (callback: () => void) => {\n finished: Promise<void>;\n ready: Promise<void>;\n };\n};\n\n/**\n * Animated light/dark toggle using the View Transitions API.\n *\n * Drives the kit's `ThemeProvider` (via `useTheme`), so persistence and the\n * `data-theme` attribute are handled for you. On browsers without the View\n * Transitions API it falls back to an instant toggle.\n *\n * Requires the kit stylesheet (`@countryclub/ui-react/styles.css`), which\n * defines the scoped `::view-transition` rules.\n */\nfunction AnimatedThemeToggler({\n className,\n duration = 400,\n variant,\n fromCenter = false,\n ...props\n}: AnimatedThemeTogglerProps) {\n const shape = variant ?? \"circle\";\n const { resolvedTheme, setTheme } = useTheme();\n const [mounted, setMounted] = useState(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n const isDark = resolvedTheme === \"dark\";\n\n const toggleTheme = useCallback(() => {\n const button = buttonRef.current;\n if (!button) return;\n\n const applyTheme = () => {\n setTheme(isDark ? \"light\" : \"dark\");\n };\n\n const doc = document as DocumentWithViewTransition;\n if (typeof doc.startViewTransition !== \"function\") {\n applyTheme();\n return;\n }\n\n const viewportWidth = window.visualViewport?.width ?? window.innerWidth;\n const viewportHeight = window.visualViewport?.height ?? window.innerHeight;\n\n let x: number;\n let y: number;\n if (fromCenter) {\n x = viewportWidth / 2;\n y = viewportHeight / 2;\n } else {\n const { top, left, width, height } = button.getBoundingClientRect();\n x = left + width / 2;\n y = top + height / 2;\n }\n\n const maxRadius = Math.hypot(\n Math.max(x, viewportWidth - x),\n Math.max(y, viewportHeight - y),\n );\n\n const clipPath = getThemeTransitionClipPaths(\n shape,\n x,\n y,\n maxRadius,\n viewportWidth,\n viewportHeight,\n );\n\n const root = document.documentElement;\n root.dataset.themeVt = \"active\";\n root.style.setProperty(\"--theme-toggle-vt-duration\", `${duration}ms`);\n // Origin for the CSS initial clip-path, so the new snapshot starts hidden\n // at the same point the JS animation expands from (prevents a pre-animation\n // flash of the new theme).\n root.style.setProperty(\"--theme-vt-x\", `${x}px`);\n root.style.setProperty(\"--theme-vt-y\", `${y}px`);\n const cleanup = () => {\n delete root.dataset.themeVt;\n root.style.removeProperty(\"--theme-toggle-vt-duration\");\n root.style.removeProperty(\"--theme-vt-x\");\n root.style.removeProperty(\"--theme-vt-y\");\n };\n\n const transition = doc.startViewTransition(() => {\n flushSync(applyTheme);\n });\n\n transition.finished.finally(cleanup);\n\n transition.ready.then(() => {\n document.documentElement.animate(\n { clipPath },\n {\n duration,\n // Star: linear avoids easing overshoot that fights polygon interpolation.\n easing: shape === \"star\" ? \"linear\" : \"ease-in-out\",\n fill: \"forwards\",\n pseudoElement: \"::view-transition-new(root)\",\n },\n );\n });\n }, [shape, fromCenter, duration, isDark, setTheme]);\n\n return (\n <button\n aria-label=\"Toggle theme\"\n className={cn(\n buttonVariants({ size: \"icon\", variant: \"ghost\" }),\n className,\n )}\n data-slot=\"animated-theme-toggler\"\n onClick={toggleTheme}\n ref={buttonRef}\n type=\"button\"\n {...props}\n >\n {mounted && isDark ? <SunIcon /> : <MoonIcon />}\n <span className=\"sr-only\">Toggle theme</span>\n </button>\n );\n}\n\nexport { AnimatedThemeToggler };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst appStoreButtonVariants = cva(\n \"relative inline-flex h-12 shrink-0 cursor-pointer items-center justify-center gap-2.5 whitespace-nowrap rounded-lg border px-[calc(--spacing(3.5)-1px)] text-start outline-none transition-[box-shadow,filter] duration-100 [:active:not(:disabled)]:brightness-95 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 [&_svg]:pointer-events-none [&_svg]:size-6 [&_svg]:shrink-0\",\n {\n defaultVariants: {\n variant: \"default\",\n },\n variants: {\n variant: {\n default:\n \"not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] border-primary bg-primary text-primary-foreground shadow-primary/24 shadow-xs [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-primary/90\",\n outline:\n \"border-input bg-popover not-dark:bg-clip-padding text-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-accent/50 dark:[:hover,[data-pressed]]:bg-input/64\",\n },\n },\n },\n);\n\nfunction GooglePlayLogoIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M1.337.924a1.486 1.486 0 0 0-.112.568v21.017c0 .217.045.419.124.6l11.155-11.087L1.337.924Z\"\n fill=\"#00AFFF\"\n />\n <path\n d=\"M13.544 10.989 16.802 7.75 3.45.195a1.466 1.466 0 0 0-.946-.179l11.04 10.973Z\"\n fill=\"#00DE76\"\n />\n <path\n d=\"m22.018 13.298-3.919 2.218-3.515-3.493 3.543-3.521 3.891 2.202a1.49 1.49 0 0 1 0 2.594Z\"\n fill=\"#FFBD00\"\n />\n <path\n d=\"m13.544 13.056-11 10.933c.298.036.612-.016.906-.183l13.324-7.54-3.23-3.21Z\"\n fill=\"#E12653\"\n />\n </svg>\n );\n}\n\nfunction AppleLogoIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\" />\n </svg>\n );\n}\n\nfunction GalaxyStoreLogoIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M16.5 7.2v-.55a4.5 4.5 0 1 0-9 0v.55H5.1c-1 0-1.85.74-1.98 1.74l-1.05 8A2.9 2.9 0 0 0 4.95 20.2h14.1a2.9 2.9 0 0 0 2.88-3.28l-1.05-8A2 2 0 0 0 18.9 7.2h-2.4Zm-7.2-.55a2.7 2.7 0 1 1 5.4 0v.55H9.3v-.55Z\"\n fill=\"#4D7CFE\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n <path\n d=\"M12.34 9.74c.48 2.43 1.16 3.1 3.59 3.59.35.07.35.57 0 .64-2.43.48-3.1 1.16-3.59 3.59-.07.35-.57.35-.64 0-.48-2.43-1.16-3.1-3.59-3.59-.35-.07-.35-.57 0-.64 2.43-.48 3.1-1.16 3.59-3.59.07-.35.57-.35.64 0Z\"\n fill=\"#fff\"\n />\n </svg>\n );\n}\n\nfunction AppGalleryLogoIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <rect x=\"2.4\" y=\"2.4\" width=\"19.2\" height=\"19.2\" rx=\"4.8\" fill=\"#E2334D\" />\n <path\n d=\"M8.9 9V7.7a3.1 3.1 0 0 1 6.2 0V9\"\n stroke=\"#fff\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M6.55 9h10.9c.58 0 1.05.47 1.05 1.05v6.1c0 .58-.47 1.05-1.05 1.05H6.55a1.05 1.05 0 0 1-1.05-1.05v-6.1C5.5 9.47 5.97 9 6.55 9Z\"\n stroke=\"#fff\"\n strokeWidth=\"1.5\"\n />\n </svg>\n );\n}\n\ntype AppStoreButtonStore =\n | \"google-play\"\n | \"app-store\"\n | \"galaxy-store\"\n | \"app-gallery\";\n\nconst stores: Record<\n AppStoreButtonStore,\n {\n eyebrow: string;\n name: string;\n Icon: (props: React.ComponentProps<\"svg\">) => React.ReactElement;\n }\n> = {\n \"app-gallery\": {\n eyebrow: \"EXPLORE IT ON\",\n name: \"AppGallery\",\n Icon: AppGalleryLogoIcon,\n },\n \"app-store\": {\n eyebrow: \"Download on the\",\n name: \"App Store\",\n Icon: AppleLogoIcon,\n },\n \"galaxy-store\": {\n eyebrow: \"Available on\",\n name: \"Galaxy Store\",\n Icon: GalaxyStoreLogoIcon,\n },\n \"google-play\": {\n eyebrow: \"GET IT ON\",\n name: \"Google Play\",\n Icon: GooglePlayLogoIcon,\n },\n};\n\ninterface AppStoreButtonProps extends useRender.ComponentProps<\"button\"> {\n /** Which store badge to render: google-play, app-store, galaxy-store or app-gallery. */\n store: AppStoreButtonStore;\n variant?: VariantProps<typeof appStoreButtonVariants>[\"variant\"];\n}\n\nfunction AppStoreButton({\n className,\n store,\n variant = \"default\",\n render,\n ...props\n}: AppStoreButtonProps) {\n const { eyebrow, name, Icon } = stores[store];\n const typeValue: React.ButtonHTMLAttributes<HTMLButtonElement>[\"type\"] =\n render ? undefined : \"button\";\n\n const defaultProps = {\n className: cn(appStoreButtonVariants({ className, variant })),\n \"data-slot\": \"app-store-button\",\n \"data-store\": store,\n type: typeValue,\n children: (\n <>\n <Icon aria-hidden=\"true\" />\n <span className=\"flex flex-col\" data-slot=\"app-store-button-label\">\n <span className=\"font-medium text-[10px] leading-3.5 opacity-72\">\n {eyebrow}\n </span>\n <span className=\"font-semibold text-base leading-5 tracking-[-0.01em]\">\n {name}\n </span>\n </span>\n </>\n ),\n };\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(defaultProps, props),\n render,\n });\n}\n\nexport {\n AppStoreButton,\n appStoreButtonVariants,\n GooglePlayLogoIcon,\n AppleLogoIcon,\n GalaxyStoreLogoIcon,\n AppGalleryLogoIcon,\n type AppStoreButtonStore,\n};\n","import type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction AspectRatio({\n ratio = 1,\n className,\n style,\n ...props\n}: React.ComponentProps<\"div\"> & {\n ratio?: number;\n}) {\n return (\n <div\n className={cn(\"relative w-full overflow-hidden\", className)}\n data-slot=\"aspect-ratio\"\n style={{ aspectRatio: ratio, ...style }}\n {...props}\n />\n );\n}\n\nexport { AspectRatio };\n","\"use client\";\n\nimport { memo, type CSSProperties, type ReactNode } from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nexport interface AuroraTextProps {\n children: ReactNode;\n className?: string;\n /**\n * Gradient stops, cycled left→right and looped back to the first. The default\n * is a vivid RGB set (pink → purple → blue → sky) chosen to stay legible on\n * BOTH light and dark backgrounds — the text is painted with these colors\n * (transparent fill + clipped gradient), so it never depends on the page bg.\n */\n colors?: string[];\n /** Animation speed multiplier. 1 ≈ a 10s loop; 2 is twice as fast. */\n speed?: number;\n /** Add a soft, blurred RGB halo behind the text (a subtle aura). */\n glow?: boolean;\n}\n\nconst DEFAULT_COLORS = [\"#FF0080\", \"#7928CA\", \"#0070F3\", \"#38bdf8\"];\n\n/**\n * Animated RGB gradient text: the gradient slowly sweeps across the glyphs on a\n * loop (via `background-position`, so it's GPU-composited and cheap — safe on\n * mobile). Purely CSS; no JS ticking. The real text is kept in an `sr-only`\n * span so it stays selectable/announced while the visible layer is decorative.\n *\n * @example\n * <AuroraText>Thinking</AuroraText>\n * <AuroraText glow speed={1.4} colors={[\"#22d3ee\", \"#a855f7\", \"#f43f5e\"]}>Live</AuroraText>\n */\nexport const AuroraText = memo(function AuroraText({\n children,\n className,\n colors = DEFAULT_COLORS,\n speed = 1,\n glow = false,\n}: AuroraTextProps) {\n const gradientStyle: CSSProperties = {\n backgroundImage: `linear-gradient(135deg, ${colors.join(\", \")}, ${colors[0]})`,\n // Oversized so the sweep has room to travel before repeating.\n backgroundSize: \"200% auto\",\n WebkitBackgroundClip: \"text\",\n backgroundClip: \"text\",\n WebkitTextFillColor: \"transparent\",\n color: \"transparent\",\n animationDuration: `${10 / speed}s`,\n };\n\n return (\n <span className={cn(\"relative inline-block\", className)}>\n {/* Accessible, copyable text; the colored layers below are decorative. */}\n <span className=\"sr-only\">{children}</span>\n {glow ? (\n <span\n aria-hidden=\"true\"\n className=\"animate-aurora pointer-events-none absolute inset-0 select-none blur-[6px] opacity-60\"\n style={gradientStyle}\n >\n {children}\n </span>\n ) : null}\n <span aria-hidden=\"true\" className=\"animate-aurora relative\" style={gradientStyle}>\n {children}\n </span>\n </span>\n );\n});\n\nAuroraText.displayName = \"AuroraText\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nexport interface SmoothWheelOptions {\n /** Turn the behaviour on/off (so it can be called unconditionally). */\n enabled?: boolean;\n /** Translate vertical wheel movement into horizontal scrolling. */\n horizontal?: boolean;\n /** Scales the wheel delta — lower feels slower/heavier. Default 0.8. */\n multiplier?: number;\n /** Lerp factor toward the target each frame (0–1). Lower = smoother. */\n ease?: number;\n}\n\n/**\n * Eased, momentum-style wheel scrolling for any scrollable element. Instead of\n * jumping `scrollTop`/`scrollLeft` by the raw wheel delta (which feels fast and\n * abrupt), it animates toward an accumulated target with `requestAnimationFrame`.\n *\n * It only smooths genuine mouse wheels. Trackpads already scroll smoothly with\n * OS-level inertia, so layering our own easing on top makes it fight the native\n * momentum — the container sticks, or snaps back to where the animation was\n * still heading. In the default vertical mode a trackpad therefore keeps native\n * behaviour; in horizontal mode we still translate a vertical mouse wheel into\n * horizontal scrolling (the whole point of the mode) but let a real horizontal\n * trackpad swipe scroll natively. Every time control returns to native\n * scrolling — trackpad, or an edge — the in-flight animation is cancelled and\n * the target resynced so it can never pull the position back.\n */\nexport function useSmoothWheel(\n ref: React.RefObject<HTMLElement | null>,\n {\n enabled = true,\n horizontal = false,\n multiplier = 0.8,\n ease = 0.12,\n }: SmoothWheelOptions = {},\n) {\n React.useEffect(() => {\n if (!enabled) return;\n const el = ref.current;\n if (!el) return;\n\n // Respect users who prefer no motion — fall back to native scrolling.\n if (window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches) {\n return;\n }\n\n const axisProp = horizontal ? \"scrollLeft\" : \"scrollTop\";\n const sizeProp = horizontal ? \"scrollWidth\" : \"scrollHeight\";\n const clientProp = horizontal ? \"clientWidth\" : \"clientHeight\";\n\n let target = el[axisProp];\n let raf = 0;\n let animating = false;\n let kind: \"mouse\" | \"trackpad\" | null = null;\n let lastTs = 0;\n\n // Cancel the animation and resync the target to the real position, so any\n // native scrolling that follows is never yanked back to a stale target.\n const releaseToNative = () => {\n if (raf) cancelAnimationFrame(raf);\n raf = 0;\n animating = false;\n target = el[axisProp];\n };\n\n const tick = () => {\n const max = el[sizeProp] - el[clientProp];\n target = Math.max(0, Math.min(target, max));\n const current = el[axisProp];\n const diff = target - current;\n if (Math.abs(diff) < 0.5) {\n el[axisProp] = target;\n raf = 0;\n animating = false;\n return;\n }\n el[axisProp] = current + diff * ease;\n raf = requestAnimationFrame(tick);\n };\n\n // Strong per-event trackpad signals: fractional deltas, a horizontal\n // component (mice almost never emit deltaX), or small pixel steps.\n const looksLikeTrackpad = (e: WheelEvent) =>\n e.deltaMode === 0 &&\n (!Number.isInteger(e.deltaY) ||\n e.deltaX !== 0 ||\n Math.abs(e.deltaY) < 50);\n\n // Sticky, gesture-scoped classification: decide once per burst of events\n // (< 200ms apart) so a hard trackpad flick whose mid-gesture deltas look\n // mouse-like stays classified as a trackpad the whole way through.\n const classify = (e: WheelEvent, now: number): \"mouse\" | \"trackpad\" => {\n if (kind === null || now - lastTs > 200) {\n kind = looksLikeTrackpad(e) ? \"trackpad\" : \"mouse\";\n } else if (\n kind === \"mouse\" &&\n (e.deltaX !== 0 || !Number.isInteger(e.deltaY))\n ) {\n kind = \"trackpad\";\n }\n return kind;\n };\n\n const onWheel = (event: WheelEvent) => {\n if (event.ctrlKey) return; // pinch-zoom\n const max = el[sizeProp] - el[clientProp];\n if (max <= 0) return;\n\n const now = performance.now();\n const source = classify(event, now);\n lastTs = now;\n\n if (horizontal) {\n // Native handles a real horizontal swipe; we only translate the\n // vertical wheel (mouse, or a trackpad's vertical swipe) into\n // horizontal motion — that translation is the reason the mode exists.\n if (event.deltaX !== 0 && Math.abs(event.deltaX) >= Math.abs(event.deltaY)) {\n releaseToNative();\n return;\n }\n } else if (source === \"trackpad\") {\n // Vertical mode: let the OS scroll the trackpad natively.\n releaseToNative();\n return;\n }\n\n let delta =\n horizontal && event.deltaX !== 0 ? event.deltaX : event.deltaY;\n // deltaMode: 0 = pixel, 1 = line, 2 = page.\n if (event.deltaMode === 1) delta *= 16;\n else if (event.deltaMode === 2) delta *= el[clientProp];\n delta *= multiplier;\n if (delta === 0) return;\n\n if (!animating) target = el[axisProp];\n\n const atStart = target <= 0;\n const atEnd = target >= max;\n // Let the wheel bubble at the edges so the page keeps scrolling.\n if ((delta < 0 && atStart) || (delta > 0 && atEnd)) {\n releaseToNative();\n return;\n }\n\n event.preventDefault();\n target = Math.max(0, Math.min(target + delta, max));\n if (!animating) {\n animating = true;\n raf = requestAnimationFrame(tick);\n }\n };\n\n el.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => {\n el.removeEventListener(\"wheel\", onWheel);\n cancelAnimationFrame(raf);\n };\n }, [ref, enabled, horizontal, multiplier, ease]);\n}\n\nexport interface SmoothScrollProps extends React.ComponentProps<\"div\"> {\n /** Scroll horizontally (vertical wheel is translated to horizontal). */\n horizontal?: boolean;\n /** Scales the wheel delta — lower feels slower/heavier. Default 0.8. */\n multiplier?: number;\n /** Lerp factor toward the target each frame (0–1). Lower = smoother. */\n ease?: number;\n}\n\n/**\n * A scroll container with eased, momentum-style wheel scrolling. Drop any\n * overflowing content inside; pass `horizontal` for a row that scrolls\n * smoothly with a normal mouse wheel.\n */\nfunction SmoothScroll({\n className,\n children,\n horizontal = false,\n multiplier,\n ease,\n ...props\n}: SmoothScrollProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n useSmoothWheel(ref, { ease, horizontal, multiplier });\n\n return (\n <div\n className={cn(\n horizontal ? \"overflow-x-auto overflow-y-hidden\" : \"overflow-y-auto\",\n className,\n )}\n data-slot=\"smooth-scroll\"\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport { SmoothScroll };\n","\"use client\";\n\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { useSmoothWheel } from \"./smooth-scroll\";\n\nfunction ScrollArea({\n className,\n children,\n scrollFade = false,\n scrollbarGutter = false,\n wheelToHorizontal = false,\n smooth = false,\n viewportClassName,\n ...props\n}: ScrollAreaPrimitive.Root.Props & {\n scrollFade?: boolean;\n scrollbarGutter?: boolean;\n /**\n * Translate vertical mouse-wheel scrolling into (eased) horizontal scrolling\n * while the pointer is over the viewport. The page only scrolls once this\n * element reaches its horizontal start/end.\n */\n wheelToHorizontal?: boolean;\n /** Eased, momentum-style vertical wheel scrolling. */\n smooth?: boolean;\n viewportClassName?: string;\n}) {\n const viewportRef = React.useRef<HTMLDivElement>(null);\n\n // Eased horizontal scrolling (smooth + slower than a raw scrollLeft jump).\n useSmoothWheel(viewportRef, { enabled: wheelToHorizontal, horizontal: true });\n // Optional eased vertical scrolling.\n useSmoothWheel(viewportRef, {\n enabled: smooth && !wheelToHorizontal,\n horizontal: false,\n });\n\n return (\n <ScrollAreaPrimitive.Root\n className={cn(\"flex flex-col min-h-0\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n ref={viewportRef}\n className={cn(\n \"flex grow flex-col min-h-0 rounded-[inherit] outline-none transition-shadows focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-has-overflow-x:overscroll-x-contain data-has-overflow-y:overscroll-y-contain\",\n scrollFade &&\n \"mask-t-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-start)))] mask-b-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-end)))] mask-l-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-start)))] mask-r-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-end)))] [--fade-size:1.5rem]\",\n scrollbarGutter &&\n \"data-has-overflow-y:pe-2.5 data-has-overflow-x:pb-2.5\",\n viewportClassName,\n )}\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar orientation=\"vertical\" />\n <ScrollBar orientation=\"horizontal\" />\n <ScrollAreaPrimitive.Corner data-slot=\"scroll-area-corner\" />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n className={cn(\n \"m-1 flex opacity-0 transition-opacity delay-300 data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 data-[orientation=horizontal]:flex-col data-hovering:opacity-100 data-scrolling:opacity-100 data-hovering:delay-0 data-scrolling:delay-0 data-hovering:duration-100 data-scrolling:duration-100\",\n className,\n )}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n className=\"relative flex-1 rounded-full bg-foreground/20\"\n data-slot=\"scroll-area-thumb\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport { Autocomplete as AutocompletePrimitive } from \"@base-ui/react/autocomplete\";\nimport { ChevronsUpDownIcon, XIcon } from \"lucide-react\";\nimport { Input } from \"./input\";\nimport { ScrollArea } from \"./scroll-area\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst Autocomplete = AutocompletePrimitive.Root;\n\nfunction AutocompleteInput({\n className,\n showTrigger = false,\n showClear = false,\n startAddon,\n size,\n ...props\n}: Omit<AutocompletePrimitive.Input.Props, \"size\"> & {\n showTrigger?: boolean;\n showClear?: boolean;\n startAddon?: React.ReactNode;\n size?: \"sm\" | \"default\" | \"lg\" | number;\n ref?: React.Ref<HTMLInputElement>;\n}) {\n const sizeValue = (size ?? \"default\") as \"sm\" | \"default\" | \"lg\" | number;\n\n return (\n <div className=\"relative not-has-[>*.w-full]:w-fit w-full text-foreground has-disabled:opacity-64\">\n {startAddon && (\n <div\n aria-hidden=\"true\"\n className=\"[&_svg]:-mx-0.5 pointer-events-none absolute inset-y-0 start-px z-10 flex items-center ps-[calc(--spacing(3)-1px)] opacity-80 has-[+[data-size=sm]]:ps-[calc(--spacing(2.5)-1px)] [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\"\n data-slot=\"autocomplete-start-addon\"\n >\n {startAddon}\n </div>\n )}\n <AutocompletePrimitive.Input\n className={cn(\n startAddon &&\n \"data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7.5)-1px)] *:data-[slot=autocomplete-input]:ps-[calc(--spacing(8.5)-1px)] sm:data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7)-1px)] sm:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8)-1px)]\",\n sizeValue === \"sm\"\n ? \"has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-6.5\"\n : \"has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-7\",\n className,\n )}\n data-slot=\"autocomplete-input\"\n render={<Input nativeInput size={sizeValue} />}\n {...props}\n />\n {showTrigger && (\n <AutocompleteTrigger\n className={cn(\n \"-translate-y-1/2 absolute top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-colors pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n sizeValue === \"sm\" ? \"end-0\" : \"end-0.5\",\n )}\n >\n <ChevronsUpDownIcon />\n </AutocompleteTrigger>\n )}\n {showClear && (\n <AutocompleteClear\n className={cn(\n \"-translate-y-1/2 absolute top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-colors pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n sizeValue === \"sm\" ? \"end-0\" : \"end-0.5\",\n )}\n >\n <XIcon />\n </AutocompleteClear>\n )}\n </div>\n );\n}\n\nfunction AutocompletePopup({\n className,\n children,\n sideOffset = 4,\n ...props\n}: AutocompletePrimitive.Popup.Props & {\n sideOffset?: number;\n}) {\n return (\n <AutocompletePrimitive.Portal>\n <AutocompletePrimitive.Positioner\n className=\"z-50 select-none\"\n data-slot=\"autocomplete-positioner\"\n sideOffset={sideOffset}\n >\n <AutocompletePrimitive.Popup\n className={cn(\n \"relative flex max-h-[min(var(--available-height),23rem)] w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) flex-col rounded-lg border bg-popover not-dark:bg-clip-padding text-foreground shadow-lg/5 transition-opacity duration-150 ease-out before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"autocomplete-popup\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Popup>\n </AutocompletePrimitive.Positioner>\n </AutocompletePrimitive.Portal>\n );\n}\n\nfunction AutocompleteItem({\n className,\n children,\n ...props\n}: AutocompletePrimitive.Item.Props) {\n return (\n <AutocompletePrimitive.Item\n className={cn(\n \"flex min-h-8 cursor-default select-none items-center rounded-sm px-2 py-1 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm\",\n className,\n )}\n data-slot=\"autocomplete-item\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Item>\n );\n}\n\nfunction AutocompleteSeparator({\n className,\n ...props\n}: AutocompletePrimitive.Separator.Props) {\n return (\n <AutocompletePrimitive.Separator\n className={cn(\"mx-2 my-1 h-px bg-border last:hidden\", className)}\n data-slot=\"autocomplete-separator\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteGroup({\n className,\n ...props\n}: AutocompletePrimitive.Group.Props) {\n return (\n <AutocompletePrimitive.Group\n className={cn(\"[[role=group]+&]:mt-1.5\", className)}\n data-slot=\"autocomplete-group\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteGroupLabel({\n className,\n ...props\n}: AutocompletePrimitive.GroupLabel.Props) {\n return (\n <AutocompletePrimitive.GroupLabel\n className={cn(\n \"px-2 py-1.5 font-medium text-muted-foreground text-xs\",\n className,\n )}\n data-slot=\"autocomplete-group-label\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteEmpty({\n className,\n ...props\n}: AutocompletePrimitive.Empty.Props) {\n return (\n <AutocompletePrimitive.Empty\n className={cn(\n \"not-empty:p-2 text-center text-base text-muted-foreground sm:text-sm\",\n className,\n )}\n data-slot=\"autocomplete-empty\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteRow({\n className,\n ...props\n}: AutocompletePrimitive.Row.Props) {\n return (\n <AutocompletePrimitive.Row\n className={className}\n data-slot=\"autocomplete-row\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteValue({ ...props }: AutocompletePrimitive.Value.Props) {\n return (\n <AutocompletePrimitive.Value data-slot=\"autocomplete-value\" {...props} />\n );\n}\n\nfunction AutocompleteList({\n className,\n ...props\n}: AutocompletePrimitive.List.Props) {\n return (\n <ScrollArea scrollbarGutter scrollFade className=\"grow\">\n <AutocompletePrimitive.List\n className={cn(\n \"not-empty:scroll-py-1 not-empty:p-1 in-data-has-overflow-y:pe-3\",\n className,\n )}\n data-slot=\"autocomplete-list\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nfunction AutocompleteClear({\n className,\n ...props\n}: AutocompletePrimitive.Clear.Props) {\n return (\n <AutocompletePrimitive.Clear\n className={cn(\n \"-translate-y-1/2 absolute end-0.5 top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-[color,background-color,box-shadow,opacity] pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"autocomplete-clear\"\n {...props}\n >\n <XIcon />\n </AutocompletePrimitive.Clear>\n );\n}\n\nfunction AutocompleteStatus({\n className,\n ...props\n}: AutocompletePrimitive.Status.Props) {\n return (\n <AutocompletePrimitive.Status\n className={cn(\n \"px-3 py-2 font-medium text-muted-foreground text-xs empty:m-0 empty:p-0\",\n className,\n )}\n data-slot=\"autocomplete-status\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteCollection({\n ...props\n}: AutocompletePrimitive.Collection.Props) {\n return (\n <AutocompletePrimitive.Collection\n data-slot=\"autocomplete-collection\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteTrigger({\n className,\n ...props\n}: AutocompletePrimitive.Trigger.Props) {\n return (\n <AutocompletePrimitive.Trigger\n className={className}\n data-slot=\"autocomplete-trigger\"\n {...props}\n />\n );\n}\n\nconst useAutocompleteFilter = AutocompletePrimitive.useFilter;\n\nexport {\n Autocomplete,\n AutocompleteInput,\n AutocompleteTrigger,\n AutocompletePopup,\n AutocompleteItem,\n AutocompleteSeparator,\n AutocompleteGroup,\n AutocompleteGroupLabel,\n AutocompleteEmpty,\n AutocompleteValue,\n AutocompleteList,\n AutocompleteClear,\n AutocompleteStatus,\n AutocompleteRow,\n AutocompleteCollection,\n useAutocompleteFilter,\n};\n","\"use client\";\n\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { CheckIcon, PlusIcon, UserRoundIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst avatarVariants = cva(\n \"relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-muted align-middle font-medium\",\n {\n defaultVariants: { size: \"sm\" },\n variants: {\n size: {\n xs: \"size-6 text-[0.625rem]\",\n sm: \"size-8 text-xs\",\n md: \"size-10 text-sm\",\n lg: \"size-12 text-base\",\n xl: \"size-14 text-lg\",\n \"2xl\": \"size-16 text-xl\",\n },\n },\n },\n);\n\ntype AvatarSize = NonNullable<VariantProps<typeof avatarVariants>[\"size\"]>;\n\ninterface AvatarProps\n extends AvatarPrimitive.Root.Props,\n VariantProps<typeof avatarVariants> {\n /** Image URL. When omitted or it fails to load, the fallback is shown. */\n src?: string;\n alt?: string;\n /** Initials shown when there is no image. */\n initials?: React.ReactNode;\n /** Custom fallback node (overrides initials and the placeholder icon). */\n placeholder?: React.ReactNode;\n /** Icon component used as the fallback when nothing else is provided. */\n placeholderIcon?: React.ElementType;\n /** A presence dot in the bottom-right corner. */\n status?: \"online\" | \"offline\";\n /** Shows a verified tick in the bottom-right corner. */\n verified?: boolean;\n /** A node (e.g. <AvatarCompanyIcon />) shown in the top-right corner. */\n badge?: React.ReactNode;\n}\n\nfunction Avatar({\n className,\n size,\n src,\n alt,\n initials,\n placeholder,\n placeholderIcon: PlaceholderIcon = UserRoundIcon,\n status,\n verified,\n badge,\n children,\n ...props\n}: AvatarProps) {\n const fallback = initials ? (\n initials\n ) : (\n (placeholder ?? <PlaceholderIcon className=\"size-[55%] text-muted-foreground\" />)\n );\n\n const root = (\n <AvatarPrimitive.Root\n className={cn(avatarVariants({ size }), className)}\n data-slot=\"avatar\"\n {...props}\n >\n {children ?? (\n <>\n {src ? <AvatarImage alt={alt} src={src} /> : null}\n <AvatarFallback>{fallback}</AvatarFallback>\n </>\n )}\n </AvatarPrimitive.Root>\n );\n\n if (!(status || verified || badge)) return root;\n\n // Overlays live in a non-clipping wrapper so the rounded avatar's\n // overflow-hidden doesn't cut them off at the corners.\n return (\n <span\n className=\"relative inline-flex shrink-0 align-middle\"\n data-slot=\"avatar-root\"\n >\n {root}\n {badge ? (\n <span className=\"absolute end-0 top-0 flex\" data-slot=\"avatar-badge\">\n {badge}\n </span>\n ) : null}\n {status ? (\n <span\n className=\"absolute end-[6%] bottom-[6%] h-1/4 w-1/4 rounded-full ring-2 ring-background data-[status=offline]:bg-muted-foreground/40 data-[status=online]:bg-success\"\n data-slot=\"avatar-status\"\n data-status={status}\n />\n ) : null}\n {verified ? (\n <span\n className=\"absolute end-0 bottom-0 flex h-1/3 w-1/3 items-center justify-center rounded-full bg-brand text-background ring-2 ring-background\"\n data-slot=\"avatar-verified\"\n >\n <CheckIcon className=\"size-2/3\" strokeWidth={3} />\n </span>\n ) : null}\n </span>\n );\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n <AvatarPrimitive.Image\n className={cn(\"size-full object-cover\", className)}\n data-slot=\"avatar-image\"\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n <AvatarPrimitive.Fallback\n className={cn(\n \"flex size-full items-center justify-center rounded-[inherit] bg-muted text-muted-foreground\",\n className,\n )}\n data-slot=\"avatar-fallback\"\n {...props}\n />\n );\n}\n\n/** A small company/brand logo badge, meant for the Avatar `badge` prop. */\nfunction AvatarCompanyIcon({\n className,\n size = \"md\",\n alt,\n ...props\n}: React.ComponentProps<\"img\"> & { size?: \"sm\" | \"md\" | \"lg\" }) {\n const sizes = { lg: \"size-5\", md: \"size-4\", sm: \"size-3.5\" } as const;\n return (\n // biome-ignore lint/a11y/useAltText: alt forwarded via props\n <img\n alt={alt}\n className={cn(\n \"rounded-[4px] object-cover ring-2 ring-background\",\n sizes[size],\n className,\n )}\n data-slot=\"avatar-company-icon\"\n {...props}\n />\n );\n}\n\n/** A dashed \"add\" button sized to match avatars — for avatar groups. */\nfunction AvatarAddButton({\n className,\n size = \"sm\",\n ...props\n}: React.ComponentProps<\"button\"> & { size?: AvatarSize }) {\n return (\n <button\n className={cn(\n avatarVariants({ size }),\n \"border border-input border-dashed bg-transparent text-muted-foreground outline-none transition-colors hover:border-transparent hover:bg-accent hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n className,\n )}\n data-slot=\"avatar-add-button\"\n type=\"button\"\n {...props}\n >\n <PlusIcon className=\"size-1/2\" />\n </button>\n );\n}\n\nconst labelGroupText = {\n lg: { subtitle: \"text-sm\", title: \"text-base\" },\n md: { subtitle: \"text-sm\", title: \"text-sm\" },\n sm: { subtitle: \"text-xs\", title: \"text-sm\" },\n} as const;\n\n/** An avatar paired with a title and subtitle. */\nfunction AvatarLabelGroup({\n className,\n size = \"md\",\n src,\n alt,\n initials,\n status,\n verified,\n title,\n subtitle,\n ...props\n}: React.ComponentProps<\"div\"> & {\n size?: \"sm\" | \"md\" | \"lg\";\n src?: string;\n alt?: string;\n initials?: string;\n status?: \"online\" | \"offline\";\n verified?: boolean;\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n}) {\n return (\n <div\n className={cn(\"flex items-center gap-3\", className)}\n data-slot=\"avatar-label-group\"\n {...props}\n >\n <Avatar\n alt={alt}\n initials={initials}\n size={size}\n src={src}\n status={status}\n verified={verified}\n />\n <div className=\"flex min-w-0 flex-col\">\n <span\n className={cn(\n \"truncate font-medium text-foreground leading-tight\",\n labelGroupText[size].title,\n )}\n >\n {title}\n </span>\n {subtitle ? (\n <span\n className={cn(\n \"truncate text-muted-foreground leading-tight\",\n labelGroupText[size].subtitle,\n )}\n >\n {subtitle}\n </span>\n ) : null}\n </div>\n </div>\n );\n}\n\nconst profilePhotoSizes = { lg: \"size-20\", md: \"size-16\", sm: \"size-14\" } as const;\n\n/** A larger, framed profile photo with optional verified tick. */\nfunction AvatarProfilePhoto({\n className,\n size = \"md\",\n ...props\n}: Omit<AvatarProps, \"size\"> & { size?: \"sm\" | \"md\" | \"lg\" }) {\n return (\n <Avatar\n className={cn(\n \"ring-1 ring-black/8 ring-inset dark:ring-white/12\",\n profilePhotoSizes[size],\n className,\n )}\n data-slot=\"avatar-profile-photo\"\n {...props}\n />\n );\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarCompanyIcon,\n AvatarAddButton,\n AvatarLabelGroup,\n AvatarProfilePhoto,\n avatarVariants,\n};\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Avatar, avatarVariants } from \"./avatar\";\n\ntype AvatarSize = NonNullable<VariantProps<typeof avatarVariants>[\"size\"]>;\n\nconst avatarGroupVariants = cva(\n // Each child gets a ring in the page color so overlapping avatars stay\n // visually separated; hover lifts one to the front.\n \"isolate flex items-center *:relative *:rounded-full *:ring-2 *:ring-background *:transition-transform hover:*:z-10\",\n {\n defaultVariants: { overlap: \"md\" },\n variants: {\n overlap: {\n sm: \"*:not-first:-ml-1.5\",\n md: \"*:not-first:-ml-2.5\",\n lg: \"*:not-first:-ml-3.5\",\n },\n },\n },\n);\n\ninterface AvatarGroupItem {\n src?: string;\n /** Initials shown when there is no image. */\n initials?: React.ReactNode;\n alt?: string;\n}\n\ninterface AvatarGroupProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof avatarGroupVariants> {\n /** Data-driven avatars. Omit to compose `<Avatar>` children yourself. */\n items?: AvatarGroupItem[];\n /** Cap the visible avatars; the rest collapse into a \"+N\" chip. */\n max?: number;\n size?: AvatarSize;\n}\n\n/**\n * A row of overlapping avatars with an overflow \"+N\" chip. Pass `items` for the\n * data-driven path, or compose `<Avatar>` children directly for full control.\n */\nfunction AvatarGroup({\n className,\n items,\n max,\n size = \"sm\",\n overlap,\n children,\n ...props\n}: AvatarGroupProps) {\n const shown = items && max ? items.slice(0, max) : items;\n const overflow = items && max ? items.length - max : 0;\n\n return (\n <div\n className={cn(avatarGroupVariants({ overlap }), className)}\n data-slot=\"avatar-group\"\n role=\"group\"\n {...props}\n >\n {items\n ? shown?.map((item, i) => (\n <Avatar\n alt={item.alt}\n // biome-ignore lint/suspicious/noArrayIndexKey: order is stable\n key={i}\n initials={item.initials}\n size={size}\n src={item.src}\n />\n ))\n : children}\n {overflow > 0 ? (\n <span\n aria-label={`${overflow} more`}\n className={cn(\n avatarVariants({ size }),\n // Solid neutral fill so the chip reads as a distinct surface in both\n // themes — the `bg-muted` token is only 4% opacity (near-transparent).\n \"bg-stone-200 font-medium text-stone-600 dark:bg-stone-700 dark:text-stone-200\",\n )}\n data-slot=\"avatar-group-overflow\"\n >\n +{overflow}\n </span>\n ) : null}\n </div>\n );\n}\n\nexport { AvatarGroup, avatarGroupVariants };\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ninterface AnimatedCounterProps extends Omit<React.ComponentProps<\"span\">, \"children\"> {\n /** The target value to animate to. */\n value: number;\n /** Tween duration in ms (default 650). */\n duration?: number;\n /** Decimal places to render (default 0). */\n decimals?: number;\n /** Prefix rendered before the number, e.g. \"$\". */\n prefix?: string;\n /** Suffix rendered after the number, e.g. \"%\". */\n suffix?: string;\n /** Group digits with thousands separators (default true). */\n separator?: boolean;\n}\n\n/**\n * A number that tweens smoothly from its previous value to the next whenever\n * `value` changes — e.g. dashboard stats re-counting when the time range\n * switches. Dependency-free (requestAnimationFrame), so it stays tiny and works\n * anywhere. Respects `prefers-reduced-motion` by snapping to the final value.\n *\n * The animation is purely visual; the accessible text is always the final\n * value (via `aria-label`) so screen readers never read the intermediate tween.\n */\nfunction AnimatedCounter({\n value,\n duration = 650,\n decimals = 0,\n prefix = \"\",\n suffix = \"\",\n separator = true,\n className,\n ...props\n}: AnimatedCounterProps) {\n const [display, setDisplay] = useState(value);\n const fromRef = useRef(value);\n const rafRef = useRef<number | null>(null);\n\n useEffect(() => {\n const from = fromRef.current;\n const to = value;\n if (from === to) return;\n\n const reduce =\n typeof window !== \"undefined\" &&\n window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n if (reduce || duration <= 0) {\n fromRef.current = to;\n setDisplay(to);\n return;\n }\n\n let start: number | null = null;\n const step = (ts: number) => {\n if (start === null) start = ts;\n const t = Math.min(1, (ts - start) / duration);\n // easeOutCubic — quick then settles, matching a \"count up\" feel.\n const eased = 1 - Math.pow(1 - t, 3);\n const current = from + (to - from) * eased;\n setDisplay(current);\n if (t < 1) {\n rafRef.current = requestAnimationFrame(step);\n } else {\n fromRef.current = to;\n }\n };\n rafRef.current = requestAnimationFrame(step);\n return () => {\n if (rafRef.current !== null) cancelAnimationFrame(rafRef.current);\n };\n }, [value, duration]);\n\n const rounded = Number(display.toFixed(decimals));\n const formatted = separator\n ? rounded.toLocaleString(undefined, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n : rounded.toFixed(decimals);\n\n const finalLabel = `${prefix}${value.toLocaleString(undefined, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })}${suffix}`;\n\n return (\n <span\n className={cn(\"tabular-nums\", className)}\n data-slot=\"animated-counter\"\n aria-label={finalLabel}\n {...props}\n >\n <span aria-hidden>\n {prefix}\n {formatted}\n {suffix}\n </span>\n </span>\n );\n}\n\nexport { AnimatedCounter, type AnimatedCounterProps };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { XIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst badgeVariants = cva(\n \"relative inline-flex shrink-0 items-center justify-center gap-1 whitespace-nowrap border border-transparent font-medium outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-3.5 sm:[&_svg:not([class*='size-'])]:size-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [button,a&]:cursor-pointer [button,a&]:pointer-coarse:after:absolute [button,a&]:pointer-coarse:after:size-full [button,a&]:pointer-coarse:after:min-h-11 [button,a&]:pointer-coarse:after:min-w-11\",\n {\n compoundVariants: [\n { className: \"rounded-sm\", shape: \"default\", size: [\"default\", \"lg\"] },\n {\n className: \"rounded-[calc(var(--radius-sm)-2px)]\",\n shape: \"default\",\n size: \"sm\",\n },\n ],\n defaultVariants: {\n shape: \"default\",\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n shape: {\n default: \"\",\n pill: \"rounded-full\",\n },\n size: {\n default:\n \"h-5.5 min-w-5.5 px-[calc(--spacing(2)-1px)] text-sm sm:h-4.5 sm:min-w-4.5 sm:text-xs\",\n lg: \"h-6.5 min-w-6.5 px-[calc(--spacing(2.5)-1px)] text-base sm:h-5.5 sm:min-w-5.5 sm:text-sm\",\n sm: \"h-5 min-w-5 px-[calc(--spacing(1.5)-1px)] text-xs sm:h-4 sm:min-w-4 sm:text-[.625rem]\",\n },\n variant: {\n default:\n \"bg-primary text-primary-foreground [button,a&]:hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white [button,a&]:hover:bg-destructive/90\",\n error:\n \"bg-destructive/8 text-destructive-foreground dark:bg-destructive/16\",\n info: \"bg-info/8 text-info-foreground dark:bg-info/16\",\n modern:\n \"border-input bg-background text-foreground shadow-xs dark:bg-input/32 [button,a&]:hover:bg-accent/50 dark:[button,a&]:hover:bg-input/48\",\n outline:\n \"border-input bg-background text-foreground dark:bg-input/32 [button,a&]:hover:bg-accent/50 dark:[button,a&]:hover:bg-input/48\",\n secondary:\n \"bg-secondary text-secondary-foreground [button,a&]:hover:bg-secondary/90\",\n success: \"bg-success/8 text-success-foreground dark:bg-success/16\",\n warning: \"bg-warning/8 text-warning-foreground dark:bg-warning/16\",\n },\n },\n },\n);\n\ninterface BadgeProps extends useRender.ComponentProps<\"span\"> {\n variant?: VariantProps<typeof badgeVariants>[\"variant\"];\n size?: VariantProps<typeof badgeVariants>[\"size\"];\n shape?: VariantProps<typeof badgeVariants>[\"shape\"];\n}\n\nfunction Badge({\n className,\n variant,\n size,\n shape,\n render,\n ...props\n}: BadgeProps) {\n const defaultProps = {\n className: cn(badgeVariants({ className, shape, size, variant })),\n \"data-slot\": \"badge\",\n };\n\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(defaultProps, props),\n render,\n });\n}\n\n/** A small status dot. Inherits the badge's text color; recolor via className. */\nfunction BadgeDot({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"size-1.5 shrink-0 rounded-full bg-current sm:size-[5px]\",\n className,\n )}\n data-slot=\"badge-dot\"\n {...props}\n />\n );\n}\n\n/** A tiny round avatar image sized to sit inside a badge. */\nfunction BadgeAvatar({ alt, className, ...props }: React.ComponentProps<\"img\">) {\n return (\n // biome-ignore lint/a11y/useAltText: alt forwarded via props\n <img\n alt={alt}\n className={cn(\n \"size-4 shrink-0 rounded-full object-cover sm:size-3.5\",\n className,\n )}\n data-slot=\"badge-avatar\"\n {...props}\n />\n );\n}\n\n/** A round country flag. `country` is an ISO 3166-1 alpha-2 code (e.g. \"AU\"). */\nfunction BadgeFlag({\n alt,\n className,\n country,\n src,\n ...props\n}: React.ComponentProps<\"img\"> & { country?: string }) {\n return (\n // biome-ignore lint/a11y/useAltText: alt forwarded via props\n <img\n alt={alt ?? country}\n className={cn(\n \"size-4 shrink-0 rounded-full object-cover sm:size-3.5\",\n className,\n )}\n data-slot=\"badge-flag\"\n src={\n src ??\n (country\n ? `https://hatscripts.github.io/circle-flags/flags/${country.toLowerCase()}.svg`\n : undefined)\n }\n {...props}\n />\n );\n}\n\n/** A small remove button for dismissible badges. Renders an X by default. */\nfunction BadgeCloseButton({\n children,\n className,\n ...props\n}: React.ComponentProps<\"button\">) {\n return (\n <button\n className={cn(\n \"-me-px inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full text-current opacity-64 outline-none transition-opacity hover:opacity-100 focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-ring\",\n className,\n )}\n data-slot=\"badge-close-button\"\n type=\"button\"\n {...props}\n >\n {children ?? <XIcon className=\"pointer-events-none\" />}\n </button>\n );\n}\n\nexport {\n Badge,\n BadgeDot,\n BadgeAvatar,\n BadgeFlag,\n BadgeCloseButton,\n badgeVariants,\n};\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ArrowRightIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst badgeGroupVariants = cva(\n \"relative inline-flex max-w-full shrink-0 items-center gap-2 whitespace-nowrap border border-transparent font-medium text-sm outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background sm:text-xs [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-3.5 sm:[&_svg:not([class*='size-'])]:size-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [button,a&]:cursor-pointer [button,a&]:pointer-coarse:after:absolute [button,a&]:pointer-coarse:after:size-full [button,a&]:pointer-coarse:after:min-h-11 [button,a&]:pointer-coarse:after:min-w-11\",\n {\n compoundVariants: [\n {\n className: \"bg-secondary text-secondary-foreground\",\n color: \"gray\",\n variant: \"pill\",\n },\n {\n className: \"bg-brand/12 text-sidebar-primary dark:bg-brand/20\",\n color: \"brand\",\n variant: \"pill\",\n },\n {\n className:\n \"bg-destructive/8 text-destructive-foreground dark:bg-destructive/16\",\n color: \"error\",\n variant: \"pill\",\n },\n {\n className: \"bg-warning/8 text-warning-foreground dark:bg-warning/16\",\n color: \"warning\",\n variant: \"pill\",\n },\n {\n className: \"bg-success/8 text-success-foreground dark:bg-success/16\",\n color: \"success\",\n variant: \"pill\",\n },\n ],\n defaultVariants: {\n align: \"leading\",\n color: \"gray\",\n variant: \"pill\",\n },\n variants: {\n align: {\n leading: \"p-1 pe-2.5\",\n trailing: \"p-1 ps-3\",\n },\n color: {\n brand: \"\",\n error: \"\",\n gray: \"\",\n success: \"\",\n warning: \"\",\n },\n variant: {\n modern:\n \"rounded-[10px] border-input bg-background text-foreground shadow-xs dark:bg-input/32\",\n pill: \"rounded-full\",\n },\n },\n },\n);\n\ntype BadgeGroupColor = NonNullable<\n VariantProps<typeof badgeGroupVariants>[\"color\"]\n>;\n\n/** Ring tint of the inner pill badge, per color. */\nconst pillBadgeRing: Record<BadgeGroupColor, string> = {\n brand: \"ring-brand/48\",\n error: \"ring-destructive/32\",\n gray: \"ring-border\",\n success: \"ring-success/32\",\n warning: \"ring-warning/40\",\n};\n\n/** Status dot of the inner modern badge, per color. */\nconst modernBadgeDot: Record<BadgeGroupColor, string> = {\n brand: \"bg-brand\",\n error: \"bg-destructive\",\n gray: \"bg-muted-foreground\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n};\n\ninterface BadgeGroupProps\n extends Omit<useRender.ComponentProps<\"span\">, \"color\"> {\n /** `pill` is a tonal, fully-rounded chip; `modern` is a bordered card-style chip with a status dot. */\n variant?: VariantProps<typeof badgeGroupVariants>[\"variant\"];\n color?: BadgeGroupColor;\n /** Which side of the message the inner badge sits on. */\n align?: VariantProps<typeof badgeGroupVariants>[\"align\"];\n /** Short label rendered inside the inner badge. */\n badge: React.ReactNode;\n /** Arrow shown after the message (leading) or inside the badge (trailing). Pass `null` to hide. */\n icon?: React.ReactNode;\n}\n\nfunction BadgeGroup({\n className,\n variant = \"pill\",\n color = \"gray\",\n align = \"leading\",\n badge,\n icon,\n children,\n render,\n ...props\n}: BadgeGroupProps) {\n const arrow =\n icon === null ? null : (icon ?? <ArrowRightIcon className=\"rtl:-scale-x-100\" />);\n\n const innerBadge = (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center gap-1.5 bg-background px-2.5 py-0.5\",\n variant === \"modern\"\n ? \"rounded-md border border-input shadow-xs dark:bg-input/32\"\n : cn(\"rounded-full ring-1 ring-inset\", pillBadgeRing[color]),\n align === \"trailing\" && \"pe-2\",\n )}\n data-slot=\"badge-group-badge\"\n >\n {variant === \"modern\" ? (\n <span\n className={cn(\"size-1.5 rounded-full\", modernBadgeDot[color])}\n data-slot=\"badge-group-dot\"\n />\n ) : null}\n {badge}\n {align === \"trailing\" ? arrow : null}\n </span>\n );\n\n const defaultProps = {\n className: cn(badgeGroupVariants({ align, className, color, variant })),\n \"data-slot\": \"badge-group\",\n children: (\n <>\n {align === \"leading\" ? innerBadge : null}\n <span className=\"truncate\" data-slot=\"badge-group-text\">\n {children}\n </span>\n {align === \"leading\" ? arrow : innerBadge}\n </>\n ),\n };\n\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(defaultProps, props),\n render,\n });\n}\n\nexport { BadgeGroup, badgeGroupVariants };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\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 className={cn(\n \"wrap-break-word flex flex-wrap items-center gap-1.5 text-muted-foreground text-sm sm:gap-2.5\",\n className,\n )}\n data-slot=\"breadcrumb-list\"\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n data-slot=\"breadcrumb-item\"\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n const defaultProps = {\n className: cn(\"transition-colors hover:text-foreground\", className),\n \"data-slot\": \"breadcrumb-link\",\n };\n\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(defaultProps, props),\n render,\n });\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n // biome-ignore lint(a11y/useFocusableInteractive): known\n <span\n aria-current=\"page\"\n aria-disabled=\"true\"\n className={cn(\"font-normal text-foreground\", className)}\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n aria-hidden=\"true\"\n className={cn(\"opacity-80 [&>svg]:size-4\", className)}\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\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 aria-hidden=\"true\"\n className={className}\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\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 { format } from \"date-fns\";\nimport { CalendarIcon } from \"lucide-react\";\nimport type { DateRange, Matcher } from \"react-day-picker\";\n\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { cn } from \"../../lib/utils/css\";\n\n/** Build react-day-picker `disabled` matchers from optional min/max bounds. */\nfunction boundsMatcher(fromDate?: Date, toDate?: Date): Matcher[] | undefined {\n const out: Matcher[] = [];\n if (fromDate) out.push({ before: fromDate });\n if (toDate) out.push({ after: toDate });\n return out.length ? out : undefined;\n}\n\ninterface DatePickerProps {\n /** The selected date (controlled). */\n value?: Date;\n onValueChange?: (date: Date | undefined) => void;\n placeholder?: string;\n /** Trigger button `disabled`. */\n disabled?: boolean;\n /** Restrict selectable days (passed straight to react-day-picker). */\n fromDate?: Date;\n toDate?: Date;\n /** date-fns format for the trigger label (default \"LLL dd, y\"). */\n displayFormat?: string;\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n id?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * A single-date picker: a button that opens a calendar in a popover. The\n * canonical way to take a date in this system — never a native `<input\n * type=\"date\">`. Controlled via `value` / `onValueChange`.\n */\nfunction DatePicker({\n value,\n onValueChange,\n placeholder = \"Pick a date\",\n disabled,\n fromDate,\n toDate,\n displayFormat = \"LLL dd, y\",\n align = \"start\",\n className,\n id,\n ...props\n}: DatePickerProps) {\n return (\n <Popover>\n <PopoverTrigger\n render={\n <Button\n className={cn(\"w-full justify-start font-normal\", !value && \"text-muted-foreground\", className)}\n disabled={disabled}\n id={id}\n variant=\"outline\"\n aria-label={props[\"aria-label\"]}\n />\n }\n >\n <CalendarIcon aria-hidden />\n {value ? format(value, displayFormat) : <span>{placeholder}</span>}\n </PopoverTrigger>\n <PopoverContent align={align} className=\"w-auto p-0\">\n <Calendar\n autoFocus\n disabled={boundsMatcher(fromDate, toDate)}\n mode=\"single\"\n onSelect={(d) => onValueChange?.(d)}\n selected={value}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\ninterface DateRangePickerProps {\n value?: DateRange;\n onValueChange?: (range: DateRange | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n fromDate?: Date;\n toDate?: Date;\n numberOfMonths?: number;\n displayFormat?: string;\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n id?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * A date-range picker: pick a start and (optionally) end date. Controlled via\n * `value` / `onValueChange` with react-day-picker's `{from, to}` shape.\n */\nfunction DateRangePicker({\n value,\n onValueChange,\n placeholder = \"Pick a date range\",\n disabled,\n fromDate,\n toDate,\n numberOfMonths = 2,\n displayFormat = \"LLL dd, y\",\n align = \"start\",\n className,\n id,\n ...props\n}: DateRangePickerProps) {\n const label = value?.from\n ? value.to\n ? `${format(value.from, displayFormat)} – ${format(value.to, displayFormat)}`\n : format(value.from, displayFormat)\n : null;\n\n return (\n <Popover>\n <PopoverTrigger\n render={\n <Button\n className={cn(\"w-full justify-start font-normal\", !label && \"text-muted-foreground\", className)}\n disabled={disabled}\n id={id}\n variant=\"outline\"\n aria-label={props[\"aria-label\"]}\n />\n }\n >\n <CalendarIcon aria-hidden />\n {label ?? <span>{placeholder}</span>}\n </PopoverTrigger>\n <PopoverContent align={align} className=\"w-auto p-0\">\n <Calendar\n autoFocus\n disabled={boundsMatcher(fromDate, toDate)}\n mode=\"range\"\n numberOfMonths={numberOfMonths}\n onSelect={(r) => onValueChange?.(r)}\n selected={value}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { DatePicker, DateRangePicker, type DatePickerProps, type DateRangePickerProps };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Card({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"relative flex flex-col gap-4 rounded-2xl border bg-card not-dark:bg-clip-padding text-card-foreground shadow-xs/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n ),\n \"data-slot\": \"card\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFrame({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"flex flex-col relative rounded-2xl border bg-background before:absolute before:inset-0 before:rounded-[inherit] before:bg-muted/72 before:pointer-events-none not-dark:bg-clip-padding text-card-foreground shadow-xs/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)] *:data-[slot=card]:-m-px *:not-last:data-[slot=card]:rounded-b-lg *:not-last:data-[slot=card]:before:rounded-b-[calc(var(--radius-lg)-1px)] *:not-first:data-[slot=card]:rounded-t-lg *:not-first:data-[slot=card]:before:rounded-t-[calc(var(--radius-lg)-1px)] *:data-[slot=card]:[clip-path:inset(-1rem_1px)] *:data-[slot=card]:first:[clip-path:inset(1px_1px_-1rem_1px_round_calc(var(--radius-2xl)-1px))] *:data-[slot=card]:last:[clip-path:inset(-1rem_1px_1px_1px_round_calc(var(--radius-2xl)-1px))] *:data-[slot=card]:shadow-none *:data-[slot=card]:before:hidden *:data-[slot=card]:bg-clip-padding\",\n className,\n ),\n \"data-slot\": \"card-frame\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFrameHeader({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"flex flex-col px-6 py-4\", className),\n \"data-slot\": \"card-frame-header\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFrameTitle({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"font-semibold text-sm\", className),\n \"data-slot\": \"card-frame-title\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFrameDescription({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"text-muted-foreground text-sm\", className),\n \"data-slot\": \"card-frame-description\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFrameFooter({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"px-6 py-4\", className),\n \"data-slot\": \"card-frame-footer\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardHeader({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 p-6 in-[[data-slot=card]:has(>[data-slot=card-panel])]:pb-4 has-data-[slot=card-action]:grid-cols-[1fr_auto]\",\n className,\n ),\n \"data-slot\": \"card-header\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardTitle({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"font-semibold text-lg leading-none\", className),\n \"data-slot\": \"card-title\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardDescription({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"text-muted-foreground text-sm\", className),\n \"data-slot\": \"card-description\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardAction({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end inline-flex\",\n className,\n ),\n \"data-slot\": \"card-action\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardPanel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"flex-1 p-6 in-[[data-slot=card]:has(>[data-slot=card-header]:not(.border-b))]:pt-0 in-[[data-slot=card]:has(>[data-slot=card-footer]:not(.border-t))]:pb-0\",\n className,\n ),\n \"data-slot\": \"card-panel\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFooter({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"flex items-center p-6 in-[[data-slot=card]:has(>[data-slot=card-panel])]:pt-4\",\n className,\n ),\n \"data-slot\": \"card-footer\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nexport {\n Card,\n CardFrame,\n CardFrameHeader,\n CardFrameTitle,\n CardFrameDescription,\n CardFrameFooter,\n CardAction,\n CardDescription,\n CardFooter,\n CardHeader,\n CardPanel,\n CardPanel as CardContent,\n CardTitle,\n};\n","\"use client\";\n\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\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 /** Fades the leading/trailing edges of the viewport for a soft overflow. */\n fade?: boolean;\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 fade = false,\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 fade,\n }}\n >\n {/* biome-ignore lint/a11y/useSemanticElements: carousel region with keyboard support */}\n <div\n aria-roledescription=\"carousel\"\n className={cn(\"relative\", className)}\n data-slot=\"carousel\"\n onKeyDownCapture={handleKeyDown}\n role=\"region\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation, fade } = useCarousel();\n\n const maskImage = fade\n ? orientation === \"horizontal\"\n ? \"linear-gradient(to right, transparent 0, #000 var(--carousel-fade), #000 calc(100% - var(--carousel-fade)), transparent 100%)\"\n : \"linear-gradient(to bottom, transparent 0, #000 var(--carousel-fade), #000 calc(100% - var(--carousel-fade)), transparent 100%)\"\n : undefined;\n\n return (\n <div\n className=\"overflow-hidden [--carousel-fade:--spacing(8)]\"\n data-slot=\"carousel-content\"\n ref={carouselRef}\n style={maskImage ? { maskImage, WebkitMaskImage: maskImage } : undefined}\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 // biome-ignore lint/a11y/useSemanticElements: embla slide\n <div\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n data-slot=\"carousel-item\"\n role=\"group\"\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n className={cn(\n \"absolute size-8 rounded-full before:rounded-full\",\n orientation === \"horizontal\"\n ? \"-left-12 -translate-y-1/2 top-1/2\"\n : \"-top-12 -translate-x-1/2 left-1/2 rotate-90\",\n className,\n )}\n data-slot=\"carousel-previous\"\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n size={size}\n variant={variant}\n {...props}\n >\n <ArrowLeftIcon />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n className={cn(\n \"absolute size-8 rounded-full before:rounded-full\",\n orientation === \"horizontal\"\n ? \"-right-12 -translate-y-1/2 top-1/2\"\n : \"-bottom-12 -translate-x-1/2 left-1/2 rotate-90\",\n className,\n )}\n data-slot=\"carousel-next\"\n disabled={!canScrollNext}\n onClick={scrollNext}\n size={size}\n variant={variant}\n {...props}\n >\n <ArrowRightIcon />\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 useCarousel,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"../../lib/utils/css\";\n\n// Theme selectors follow the design system's `data-theme` attribute.\nconst THEMES = { light: \"\", dark: '[data-theme=\"dark\"]' } 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 className={cn(\n \"flex aspect-video justify-center overflow-hidden 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-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-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n data-chart={chartId}\n data-slot=\"chart\"\n {...props}\n >\n <ChartStyle config={config} id={chartId} />\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 ([, itemConfig]) => itemConfig.theme || itemConfig.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n // biome-ignore lint/security/noDangerouslySetInnerHtml: CSS variables for chart series colors\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 .filter(Boolean)\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\ntype TooltipPayloadItem = {\n dataKey?: string | number;\n name?: string | number;\n value?: number | string;\n color?: string;\n fill?: string;\n payload?: Record<string, unknown> & { fill?: string };\n};\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<\"div\"> & {\n active?: boolean;\n payload?: TooltipPayloadItem[];\n indicator?: \"line\" | \"dot\" | \"dashed\";\n hideLabel?: boolean;\n hideIndicator?: boolean;\n label?: unknown;\n labelFormatter?: (\n value: React.ReactNode,\n payload: TooltipPayloadItem[],\n ) => React.ReactNode;\n labelClassName?: string;\n formatter?: (\n value: number | string,\n name: string | number,\n item: TooltipPayloadItem,\n index: number,\n payload: TooltipPayloadItem[\"payload\"],\n ) => React.ReactNode;\n color?: string;\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 if (!item) {\n return null;\n }\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n className={cn(\n \"grid min-w-32 items-start gap-1.5 rounded-lg border bg-popover px-2.5 py-1.5 text-popover-foreground text-xs shadow-lg/5\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.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 className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\",\n )}\n key={item.dataKey ?? index}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value !== undefined && (\n <span className=\"font-medium font-mono text-foreground tabular-nums\">\n {typeof item.value === \"number\"\n ? item.value.toLocaleString()\n : item.value}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\ntype LegendPayloadItem = {\n value?: string | number;\n dataKey?: string | number;\n color?: string;\n};\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n hideIcon?: boolean;\n payload?: LegendPayloadItem[];\n verticalAlign?: \"top\" | \"bottom\" | \"middle\";\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.map((item, index) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n className=\"flex items-center gap-1.5 [&>svg]:size-3 [&>svg]:text-muted-foreground\"\n key={item.value ?? index}\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 as Record<string, unknown>)[key] === \"string\"\n ) {\n configLabelKey = (payload as Record<string, unknown>)[key] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof (payloadPayload as Record<string, unknown>)[key] === \"string\"\n ) {\n configLabelKey = (payloadPayload as Record<string, unknown>)[key] 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 { cva, type VariantProps } from \"class-variance-authority\";\nimport { ArrowRightIcon, ArrowUpIcon, SparklesIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Button } from \"./button\";\n\n/**\n * Chat primitives for AI-assistant experiences: a column layout, an\n * auto-scrolling message viewport, role-styled message bubbles, header chrome,\n * an empty-state hero with suggestion prompts, tool activity chips/cards,\n * a typing indicator, and a submit-on-Enter composer. Purely presentational —\n * bring your own state.\n */\n\nfunction Chat({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex min-h-0 flex-1 flex-col\", className)}\n data-slot=\"chat\"\n {...props}\n />\n );\n}\n\n/**\n * Header chrome for a chat panel: avatar + title on the left, icon actions on\n * the right. Compose `ChatHeaderAvatar`, `ChatHeaderTitle` and\n * `ChatHeaderActions` inside.\n */\nfunction ChatHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex shrink-0 items-center gap-1 border-border/72 border-b bg-background/95 px-3 py-2.5 backdrop-blur supports-backdrop-filter:bg-background/80\",\n className,\n )}\n data-slot=\"chat-header\"\n {...props}\n />\n );\n}\n\nfunction ChatHeaderAvatar({\n className,\n children,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-linear-to-br from-primary to-primary/78 text-primary-foreground shadow-primary/24 shadow-xs after:absolute after:right-0 after:bottom-0 after:size-2 after:rounded-full after:bg-success after:ring-2 after:ring-background [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n data-slot=\"chat-header-avatar\"\n {...props}\n >\n {children ?? <SparklesIcon />}\n </span>\n );\n}\n\nfunction ChatHeaderTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"min-w-0 flex-1 leading-tight\", className)}\n data-slot=\"chat-header-title\"\n {...props}\n />\n );\n}\n\nfunction ChatHeaderActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex shrink-0 items-center gap-0.5\", className)}\n data-slot=\"chat-header-actions\"\n {...props}\n />\n );\n}\n\nfunction ChatMessages({\n autoScroll = true,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Keep the viewport pinned to the bottom while new messages stream in. */\n autoScroll?: boolean;\n}) {\n const viewportRef = React.useRef<HTMLDivElement>(null);\n const pinnedRef = React.useRef(true);\n\n const handleScroll = React.useCallback(() => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n const distanceFromBottom =\n viewport.scrollHeight - viewport.scrollTop - viewport.clientHeight;\n pinnedRef.current = distanceFromBottom < 48;\n }, []);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: children is the scroll trigger\n React.useEffect(() => {\n const viewport = viewportRef.current;\n if (!viewport || !autoScroll || !pinnedRef.current) return;\n viewport.scrollTop = viewport.scrollHeight;\n }, [children, autoScroll]);\n\n return (\n <div\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto scroll-smooth p-4\",\n className,\n )}\n data-slot=\"chat-messages\"\n onScroll={handleScroll}\n ref={viewportRef}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n/**\n * Centered hero shown when the conversation is empty. Compose\n * `ChatEmptyStateIcon`, `ChatEmptyStateTitle`, `ChatEmptyStateDescription`\n * and `ChatSuggestions` inside.\n */\nfunction ChatEmptyState({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-1 flex-col items-center justify-center gap-3 p-6 text-center\",\n className,\n )}\n data-slot=\"chat-empty-state\"\n {...props}\n />\n );\n}\n\nfunction ChatEmptyStateIcon({\n className,\n children,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"fade-in-0 zoom-in-90 relative flex size-13 shrink-0 animate-in items-center justify-center rounded-2xl bg-linear-to-br from-primary to-primary/78 text-primary-foreground shadow-lg shadow-primary/24 duration-500 before:absolute before:-inset-2.5 before:-z-10 before:rounded-3xl before:bg-primary/8 before:blur-lg [&_svg:not([class*='size-'])]:size-6\",\n className,\n )}\n data-slot=\"chat-empty-state-icon\"\n {...props}\n >\n {children ?? <SparklesIcon />}\n </span>\n );\n}\n\nfunction ChatEmptyStateTitle({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n className={cn(\"mt-1 font-semibold text-base text-foreground\", className)}\n data-slot=\"chat-empty-state-title\"\n {...props}\n />\n );\n}\n\nfunction ChatEmptyStateDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n className={cn(\n \"max-w-72 text-muted-foreground text-sm leading-relaxed\",\n className,\n )}\n data-slot=\"chat-empty-state-description\"\n {...props}\n />\n );\n}\n\n/** Vertical stack of `ChatSuggestion` prompts. */\nfunction ChatSuggestions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"mt-2 flex w-full max-w-sm flex-col gap-2\", className)}\n data-slot=\"chat-suggestions\"\n {...props}\n />\n );\n}\n\nexport interface ChatSuggestionProps extends React.ComponentProps<\"button\"> {\n /** Leading icon; defaults to a sparkle. */\n icon?: React.ReactNode;\n /** Position in the list — staggers the entrance animation. */\n index?: number;\n}\n\n/**\n * One tappable suggested prompt: icon chip + label, with an arrow that slides\n * in on hover and a staggered fade-in entrance (via `index`).\n */\nfunction ChatSuggestion({\n className,\n children,\n icon,\n index = 0,\n style,\n ...props\n}: ChatSuggestionProps) {\n return (\n <button\n className={cn(\n \"group fade-in-0 slide-in-from-bottom-2 flex w-full animate-in cursor-pointer items-center gap-2.5 fill-mode-both rounded-xl border border-border/72 bg-card px-3 py-2.5 text-left font-medium text-card-foreground text-sm shadow-xs outline-none transition-[border-color,background-color,box-shadow,transform] duration-200 hover:border-primary/24 hover:bg-accent/56 hover:shadow-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background active:scale-[0.985] disabled:pointer-events-none disabled:opacity-64\",\n className,\n )}\n data-slot=\"chat-suggestion\"\n style={{ animationDelay: `${index * 80}ms`, ...style }}\n type=\"button\"\n {...props}\n >\n <span className=\"flex size-6.5 shrink-0 items-center justify-center rounded-lg bg-primary/8 text-primary transition-colors duration-200 group-hover:bg-primary group-hover:text-primary-foreground [&_svg:not([class*='size-'])]:size-3.5\">\n {icon ?? <SparklesIcon />}\n </span>\n <span className=\"min-w-0 flex-1\">{children}</span>\n <ArrowRightIcon className=\"-translate-x-1 size-3.5 shrink-0 text-muted-foreground opacity-0 transition-[opacity,translate] duration-200 group-hover:translate-x-0 group-hover:opacity-100\" />\n </button>\n );\n}\n\nconst chatMessageVariants = cva(\n \"fade-in-0 slide-in-from-bottom-1 flex w-full animate-in flex-col gap-1 duration-200\",\n {\n defaultVariants: {\n from: \"assistant\",\n },\n variants: {\n from: {\n assistant: \"items-start\",\n user: \"items-end\",\n },\n },\n },\n);\n\nexport interface ChatMessageProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof chatMessageVariants> {}\n\nfunction ChatMessage({ className, from, ...props }: ChatMessageProps) {\n return (\n <div\n className={cn(chatMessageVariants({ className, from }))}\n data-from={from ?? \"assistant\"}\n data-slot=\"chat-message\"\n {...props}\n />\n );\n}\n\nconst chatMessageBubbleVariants = cva(\n \"max-w-[85%] rounded-2xl px-3.5 py-2 text-sm leading-relaxed break-words\",\n {\n defaultVariants: {\n from: \"assistant\",\n },\n variants: {\n from: {\n assistant: \"rounded-bl-md bg-muted text-foreground\",\n user: \"rounded-br-md bg-primary text-primary-foreground shadow-primary/16 shadow-xs\",\n },\n },\n },\n);\n\nexport interface ChatMessageBubbleProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof chatMessageBubbleVariants> {}\n\nfunction ChatMessageBubble({ className, from, ...props }: ChatMessageBubbleProps) {\n return (\n <div\n className={cn(chatMessageBubbleVariants({ className, from }))}\n data-from={from ?? \"assistant\"}\n data-slot=\"chat-message-bubble\"\n {...props}\n />\n );\n}\n\n/**\n * Small inline pill for tool activity (\"Using X…\", \"X finished\"). Pass the\n * status icon (wrench, spinner, check) as `icon`.\n */\nfunction ChatToolChip({\n className,\n children,\n icon,\n ...props\n}: React.ComponentProps<\"div\"> & { icon?: React.ReactNode }) {\n return (\n <div\n className={cn(\n \"fade-in-0 flex w-fit max-w-full animate-in items-center gap-1.5 rounded-full border border-border/72 bg-muted/48 py-1 pr-3 pl-1.5 text-muted-foreground text-xs duration-200\",\n className,\n )}\n data-slot=\"chat-tool-chip\"\n {...props}\n >\n {icon ? (\n <span className=\"flex size-4.5 shrink-0 items-center justify-center rounded-full bg-background text-foreground/72 shadow-xs [&_svg:not([class*='size-'])]:size-2.5\">\n {icon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">{children}</span>\n </div>\n );\n}\n\n/**\n * Framed card for tool activity inside a conversation: running/finished tool\n * calls, results, and write-action approval prompts. Compose with `Button`s\n * in the `actions` area for approve/decline flows.\n */\nfunction ChatToolCard({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"fade-in-0 slide-in-from-bottom-1 w-full max-w-[95%] animate-in rounded-xl border border-border bg-card p-3 text-card-foreground text-sm shadow-xs duration-200\",\n className,\n )}\n data-slot=\"chat-tool-card\"\n {...props}\n />\n );\n}\n\nfunction ChatToolCardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex items-center gap-2 font-medium\", className)}\n data-slot=\"chat-tool-card-header\"\n {...props}\n />\n );\n}\n\nfunction ChatToolCardActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"mt-3 flex items-center justify-end gap-2\", className)}\n data-slot=\"chat-tool-card-actions\"\n {...props}\n />\n );\n}\n\nfunction ChatTypingIndicator({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n aria-label=\"Assistant is typing\"\n className={cn(\n \"fade-in-0 flex w-fit animate-in items-center gap-1 rounded-2xl rounded-bl-md bg-muted px-3.5 py-2.5 duration-200\",\n className,\n )}\n data-slot=\"chat-typing-indicator\"\n role=\"status\"\n {...props}\n >\n <span className=\"size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:0ms]\" />\n <span className=\"size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:150ms]\" />\n <span className=\"size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:300ms]\" />\n </div>\n );\n}\n\nexport interface ChatInputProps\n extends Omit<React.ComponentProps<\"textarea\">, \"onSubmit\" | \"value\" | \"onChange\"> {\n value: string;\n onValueChange: (value: string) => void;\n /** Called with the trimmed message when the user submits (Enter or button). */\n onSubmit: (value: string) => void;\n /** Disables both the textarea and the send button (e.g. while sending). */\n disabled?: boolean;\n}\n\n/**\n * Composer: a rounded card wrapping an auto-growing textarea and a round send\n * button. Enter submits, Shift+Enter inserts a newline.\n */\nfunction ChatInput({\n className,\n disabled,\n onSubmit,\n onValueChange,\n placeholder = \"Ask anything…\",\n value,\n ...props\n}: ChatInputProps) {\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n\n const submit = React.useCallback(() => {\n const trimmed = value.trim();\n if (!trimmed || disabled) return;\n onSubmit(trimmed);\n }, [disabled, onSubmit, value]);\n\n // Auto-grow up to ~6 lines.\n React.useEffect(() => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n textarea.style.height = \"auto\";\n textarea.style.height = `${Math.min(textarea.scrollHeight, 144)}px`;\n }, [value]);\n\n return (\n <form\n className={cn(\"shrink-0 bg-background p-3 pt-1.5\", className)}\n data-slot=\"chat-input\"\n onSubmit={(event) => {\n event.preventDefault();\n submit();\n }}\n >\n <div\n className={cn(\n \"flex items-end gap-1.5 rounded-2xl border border-input bg-popover p-1.5 pl-3.5 shadow-xs transition-[border-color,box-shadow] duration-150 focus-within:border-ring/64 focus-within:ring-2 focus-within:ring-ring/24 dark:bg-input/32\",\n disabled && \"opacity-64\",\n )}\n >\n <textarea\n className=\"max-h-36 min-h-8 flex-1 resize-none self-center bg-transparent py-1.5 text-sm outline-none placeholder:text-muted-foreground\"\n disabled={disabled}\n onChange={(event) => onValueChange(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault();\n submit();\n }\n }}\n placeholder={placeholder}\n ref={textareaRef}\n rows={1}\n value={value}\n {...props}\n />\n <Button\n aria-label=\"Send message\"\n className=\"rounded-full before:rounded-full\"\n disabled={disabled || !value.trim()}\n size=\"icon-sm\"\n type=\"submit\"\n >\n <ArrowUpIcon />\n </Button>\n </div>\n </form>\n );\n}\n\nexport {\n Chat,\n ChatEmptyState,\n ChatEmptyStateDescription,\n ChatEmptyStateIcon,\n ChatEmptyStateTitle,\n ChatHeader,\n ChatHeaderActions,\n ChatHeaderAvatar,\n ChatHeaderTitle,\n ChatInput,\n ChatMessage,\n ChatMessageBubble,\n chatMessageBubbleVariants,\n chatMessageVariants,\n ChatMessages,\n ChatSuggestion,\n ChatSuggestions,\n ChatToolCard,\n ChatToolCardActions,\n ChatToolCardHeader,\n ChatToolChip,\n ChatTypingIndicator,\n};\n","\"use client\";\n\nimport { Collapsible as CollapsiblePrimitive } from \"@base-ui/react/collapsible\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n className,\n ...props\n}: CollapsiblePrimitive.Trigger.Props) {\n return (\n <CollapsiblePrimitive.Trigger\n className={cn(\"cursor-pointer\", className)}\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n );\n}\n\nfunction CollapsiblePanel({\n className,\n ...props\n}: CollapsiblePrimitive.Panel.Props) {\n return (\n <CollapsiblePrimitive.Panel\n className={cn(\n \"h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-200 data-ending-style:h-0 data-starting-style:h-0\",\n className,\n )}\n data-slot=\"collapsible-panel\"\n {...props}\n />\n );\n}\n\nexport {\n Collapsible,\n CollapsibleTrigger,\n CollapsiblePanel,\n CollapsiblePanel as CollapsibleContent,\n};\n","\"use client\";\n\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react/combobox\";\nimport { ChevronsUpDownIcon, XIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Input } from \"./input\";\nimport { ScrollArea } from \"./scroll-area\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst ComboboxContext = React.createContext<{\n chipsRef: React.RefObject<Element | null> | null;\n multiple: boolean;\n}>({\n chipsRef: null,\n multiple: false,\n});\n\ntype ComboboxRootProps<\n ItemValue,\n Multiple extends boolean | undefined,\n> = Parameters<typeof ComboboxPrimitive.Root<ItemValue, Multiple>>[0];\n\nfunction Combobox<ItemValue, Multiple extends boolean | undefined = false>(\n props: ComboboxPrimitive.Root.Props<ItemValue, Multiple>,\n) {\n const chipsRef = React.useRef<Element | null>(null);\n return (\n <ComboboxContext.Provider value={{ chipsRef, multiple: !!props.multiple }}>\n <ComboboxPrimitive.Root\n {...(props as ComboboxRootProps<ItemValue, Multiple>)}\n />\n </ComboboxContext.Provider>\n );\n}\n\nfunction ComboboxInput({\n className,\n showTrigger = true,\n showClear = false,\n startAddon,\n size,\n ...props\n}: Omit<ComboboxPrimitive.Input.Props, \"size\"> & {\n showTrigger?: boolean;\n showClear?: boolean;\n startAddon?: React.ReactNode;\n size?: \"sm\" | \"default\" | \"lg\" | number;\n ref?: React.Ref<HTMLInputElement>;\n}) {\n const { multiple } = React.useContext(ComboboxContext);\n const sizeValue = (size ?? \"default\") as \"sm\" | \"default\" | \"lg\" | number;\n\n // multiple mode\n if (multiple) {\n return (\n <ComboboxPrimitive.Input\n className={cn(\n \"min-w-12 flex-1 text-base outline-none sm:text-sm [[data-slot=combobox-chip]+&]:ps-0.5\",\n sizeValue === \"sm\" ? \"ps-1.5\" : \"ps-2\",\n className,\n )}\n data-size={typeof sizeValue === \"string\" ? sizeValue : undefined}\n data-slot=\"combobox-input\"\n size={typeof sizeValue === \"number\" ? sizeValue : undefined}\n {...props}\n />\n );\n }\n\n // single mode\n return (\n <div className=\"relative not-has-[>*.w-full]:w-fit w-full text-foreground has-disabled:opacity-64\">\n {startAddon && (\n <div\n aria-hidden=\"true\"\n className=\"[&_svg]:-mx-0.5 pointer-events-none absolute inset-y-0 start-px z-10 flex items-center ps-[calc(--spacing(3)-1px)] opacity-80 has-[+[data-size=sm]]:ps-[calc(--spacing(2.5)-1px)] [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\"\n data-slot=\"combobox-start-addon\"\n >\n {startAddon}\n </div>\n )}\n <ComboboxPrimitive.Input\n className={cn(\n startAddon &&\n \"data-[size=sm]:*:data-[slot=combobox-input]:ps-[calc(--spacing(7.5)-1px)] *:data-[slot=combobox-input]:ps-[calc(--spacing(8.5)-1px)] sm:data-[size=sm]:*:data-[slot=combobox-input]:ps-[calc(--spacing(7)-1px)] sm:*:data-[slot=combobox-input]:ps-[calc(--spacing(8)-1px)]\",\n sizeValue === \"sm\"\n ? \"has-[+[data-slot=combobox-trigger],+[data-slot=combobox-clear]]:*:data-[slot=combobox-input]:pe-6.5\"\n : \"has-[+[data-slot=combobox-trigger],+[data-slot=combobox-clear]]:*:data-[slot=combobox-input]:pe-7\",\n className,\n )}\n data-slot=\"combobox-input\"\n render={\n <Input\n className=\"has-disabled:opacity-100\"\n nativeInput\n size={sizeValue}\n />\n }\n {...props}\n />\n {showTrigger && (\n <ComboboxTrigger\n className={cn(\n \"-translate-y-1/2 absolute top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-opacity pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=combobox-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n sizeValue === \"sm\" ? \"end-0\" : \"end-0.5\",\n )}\n >\n <ChevronsUpDownIcon />\n </ComboboxTrigger>\n )}\n {showClear && (\n <ComboboxClear\n className={cn(\n \"-translate-y-1/2 absolute top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-opacity pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=combobox-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n sizeValue === \"sm\" ? \"end-0\" : \"end-0.5\",\n )}\n >\n <XIcon />\n </ComboboxClear>\n )}\n </div>\n );\n}\n\nfunction ComboboxTrigger({\n className,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n <ComboboxPrimitive.Trigger\n className={className}\n data-slot=\"combobox-trigger\"\n {...props}\n />\n );\n}\n\nfunction ComboboxPopup({\n className,\n children,\n sideOffset = 4,\n ...props\n}: ComboboxPrimitive.Popup.Props & {\n sideOffset?: number;\n}) {\n const { chipsRef } = React.useContext(ComboboxContext);\n\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n anchor={chipsRef}\n className=\"z-50 select-none\"\n data-slot=\"combobox-positioner\"\n sideOffset={sideOffset}\n >\n <ComboboxPrimitive.Popup\n className={cn(\n \"relative flex max-h-[min(var(--available-height),23rem)] w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) flex-col rounded-lg border bg-popover not-dark:bg-clip-padding text-foreground shadow-lg/5 transition-opacity duration-150 ease-out before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"combobox-popup\"\n {...props}\n >\n {children}\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n );\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n className={cn(\n \"grid min-h-8 in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] cursor-default grid-cols-[1rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"combobox-item\"\n {...props}\n >\n <ComboboxPrimitive.ItemIndicator className=\"col-start-1\">\n {/** biome-ignore lint/a11y/noSvgWithoutTitle: Imported from library */}\n <svg\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/1500/svg\"\n >\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n </ComboboxPrimitive.ItemIndicator>\n <div className=\"col-start-2\">{children}</div>\n </ComboboxPrimitive.Item>\n );\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n className={cn(\"mx-2 my-1 h-px bg-border last:hidden\", className)}\n data-slot=\"combobox-separator\"\n {...props}\n />\n );\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n className={cn(\"[[role=group]+&]:mt-1.5\", className)}\n data-slot=\"combobox-group\"\n {...props}\n />\n );\n}\n\nfunction ComboboxGroupLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n className={cn(\n \"px-2 py-1.5 font-medium text-muted-foreground text-xs\",\n className,\n )}\n data-slot=\"combobox-group-label\"\n {...props}\n />\n );\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n <ComboboxPrimitive.Empty\n className={cn(\n \"not-empty:p-2 text-center text-base text-muted-foreground sm:text-sm\",\n className,\n )}\n data-slot=\"combobox-empty\"\n {...props}\n />\n );\n}\n\nfunction ComboboxRow({ className, ...props }: ComboboxPrimitive.Row.Props) {\n return (\n <ComboboxPrimitive.Row\n className={className}\n data-slot=\"combobox-row\"\n {...props}\n />\n );\n}\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />;\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n <ScrollArea scrollbarGutter scrollFade>\n <ComboboxPrimitive.List\n className={cn(\n \"not-empty:scroll-py-1 not-empty:px-1 not-empty:py-1 in-data-has-overflow-y:pe-3\",\n className,\n )}\n data-slot=\"combobox-list\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n className={className}\n data-slot=\"combobox-clear\"\n {...props}\n />\n );\n}\n\nfunction ComboboxStatus({\n className,\n ...props\n}: ComboboxPrimitive.Status.Props) {\n return (\n <ComboboxPrimitive.Status\n className={cn(\n \"px-3 py-2 font-medium text-muted-foreground text-xs empty:m-0 empty:p-0\",\n className,\n )}\n data-slot=\"combobox-status\"\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 ComboboxChips({\n className,\n children,\n startAddon,\n ...props\n}: ComboboxPrimitive.Chips.Props & {\n startAddon?: React.ReactNode;\n}) {\n const { chipsRef } = React.useContext(ComboboxContext);\n\n return (\n <ComboboxPrimitive.Chips\n className={cn(\n \"relative inline-flex min-h-9 w-full flex-wrap gap-1 rounded-lg border border-input bg-background not-dark:bg-clip-padding p-[calc(--spacing(1)-1px)] text-base shadow-xs/5 outline-none ring-ring/24 transition-shadow *:min-h-7 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-has-disabled:not-focus-within:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/6%)] focus-within:border-ring focus-within:ring-[3px] has-disabled:pointer-events-none has-data-[size=lg]:min-h-10 has-data-[size=sm]:min-h-8 has-aria-invalid:border-destructive/36 has-disabled:opacity-64 has-[:disabled,:focus-within,[aria-invalid]]:shadow-none focus-within:has-aria-invalid:border-destructive/64 focus-within:has-aria-invalid:ring-destructive/16 has-data-[size=lg]:*:min-h-8 has-data-[size=sm]:*:min-h-6 sm:min-h-8 sm:text-sm sm:has-data-[size=lg]:min-h-9 sm:has-data-[size=sm]:min-h-7 sm:*:min-h-6 sm:has-data-[size=lg]:*:min-h-7 sm:has-data-[size=sm]:*:min-h-5 dark:not-has-disabled:bg-input/32 dark:has-aria-invalid:ring-destructive/24 dark:not-has-disabled:not-focus-within:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"combobox-chips\"\n onMouseDown={(e) => {\n const target = e.target as HTMLElement;\n const isChip = target.closest('[data-slot=\"combobox-chip\"]');\n if (isChip || !chipsRef?.current) return;\n e.preventDefault();\n const input: HTMLInputElement | null =\n chipsRef.current.querySelector(\"input\");\n if (input && !chipsRef.current.querySelector(\"input:focus\")) {\n input.focus();\n }\n }}\n ref={chipsRef as React.Ref<HTMLDivElement> | null}\n {...props}\n >\n {startAddon && (\n <div\n aria-hidden=\"true\"\n className=\"[&_svg]:-ms-0.5 [&_svg]:-me-1.5 flex shrink-0 items-center ps-2 opacity-80 has-[~[data-size=sm]]:has-[+[data-slot=combobox-chip]]:pe-1.5 has-[~[data-size=sm]]:ps-1.5 has-[+[data-slot=combobox-chip]]:pe-2 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\"\n data-slot=\"combobox-start-addon\"\n >\n {startAddon}\n </div>\n )}\n {children}\n </ComboboxPrimitive.Chips>\n );\n}\n\nfunction ComboboxChip({ children, ...props }: ComboboxPrimitive.Chip.Props) {\n return (\n <ComboboxPrimitive.Chip\n className=\"flex items-center rounded-[calc(var(--radius-md)-1px)] bg-accent ps-2 font-medium text-accent-foreground text-sm outline-none sm:text-xs/(--text-xs--line-height) [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5\"\n data-slot=\"combobox-chip\"\n {...props}\n >\n {children}\n <ComboboxChipRemove />\n </ComboboxPrimitive.Chip>\n );\n}\n\nfunction ComboboxChipRemove(props: ComboboxPrimitive.ChipRemove.Props) {\n return (\n <ComboboxPrimitive.ChipRemove\n aria-label=\"Remove\"\n className=\"h-full shrink-0 cursor-pointer px-1.5 opacity-80 hover:opacity-100 [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5\"\n data-slot=\"combobox-chip-remove\"\n {...props}\n >\n <XIcon />\n </ComboboxPrimitive.ChipRemove>\n );\n}\n\nconst useComboboxFilter = ComboboxPrimitive.useFilter;\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxTrigger,\n ComboboxPopup,\n ComboboxItem,\n ComboboxSeparator,\n ComboboxGroup,\n ComboboxGroupLabel,\n ComboboxEmpty,\n ComboboxValue,\n ComboboxList,\n ComboboxClear,\n ComboboxStatus,\n ComboboxRow,\n ComboboxCollection,\n ComboboxChips,\n ComboboxChip,\n useComboboxFilter,\n};\n","\"use client\";\n\nimport { Dialog as CommandDialogPrimitive } from \"@base-ui/react/dialog\";\nimport { SearchIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport {\n Autocomplete,\n AutocompleteCollection,\n AutocompleteEmpty,\n AutocompleteGroup,\n AutocompleteGroupLabel,\n AutocompleteInput,\n AutocompleteItem,\n AutocompleteList,\n AutocompleteSeparator,\n} from \"./autocomplete\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst CommandDialog = CommandDialogPrimitive.Root;\n\nconst CommandDialogPortal = CommandDialogPrimitive.Portal;\n\nconst CommandCreateHandle = CommandDialogPrimitive.createHandle;\n\nfunction CommandDialogTrigger(props: CommandDialogPrimitive.Trigger.Props) {\n return (\n <CommandDialogPrimitive.Trigger\n data-slot=\"command-dialog-trigger\"\n {...props}\n />\n );\n}\n\nfunction CommandDialogBackdrop({\n className,\n ...props\n}: CommandDialogPrimitive.Backdrop.Props) {\n return (\n <CommandDialogPrimitive.Backdrop\n className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n className,\n )}\n data-slot=\"command-dialog-backdrop\"\n {...props}\n />\n );\n}\n\nfunction CommandDialogViewport({\n className,\n ...props\n}: CommandDialogPrimitive.Viewport.Props) {\n return (\n <CommandDialogPrimitive.Viewport\n className={cn(\n \"fixed inset-0 z-50 flex flex-col items-center px-4 py-[max(--spacing(4),4vh)] sm:py-[10vh]\",\n className,\n )}\n data-slot=\"command-dialog-viewport\"\n {...props}\n />\n );\n}\n\nfunction CommandDialogPopup({\n className,\n children,\n ...props\n}: CommandDialogPrimitive.Popup.Props) {\n return (\n <CommandDialogPortal>\n <CommandDialogBackdrop />\n <CommandDialogViewport>\n <CommandDialogPrimitive.Popup\n className={cn(\n \"-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 flex max-h-105 min-h-0 w-full min-w-0 max-w-xl scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover not-dark:bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg/5 outline-none transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:bg-muted/72 before:shadow-[0_1px_--theme(--color-black/6%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 **:data-[slot=scroll-area-viewport]:data-has-overflow-y:pe-1 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"command-dialog-popup\"\n {...props}\n >\n {children}\n </CommandDialogPrimitive.Popup>\n </CommandDialogViewport>\n </CommandDialogPortal>\n );\n}\n\nfunction Command({\n autoHighlight = \"always\",\n keepHighlight = true,\n ...props\n}: React.ComponentProps<typeof Autocomplete>) {\n return (\n <Autocomplete\n autoHighlight={autoHighlight}\n inline\n keepHighlight={keepHighlight}\n open\n {...props}\n />\n );\n}\n\nfunction CommandInput({\n className,\n placeholder = undefined,\n ...props\n}: React.ComponentProps<typeof AutocompleteInput>) {\n return (\n <div className=\"px-2.5 py-1.5\">\n <AutocompleteInput\n autoFocus\n className={cn(\n \"border-transparent! bg-transparent! shadow-none before:hidden has-focus-visible:ring-0\",\n className,\n )}\n placeholder={placeholder}\n size=\"default\"\n startAddon={<SearchIcon />}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteList>) {\n return (\n <AutocompleteList\n className={cn(\"not-empty:scroll-py-2 not-empty:p-2\", className)}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteEmpty>) {\n return (\n <AutocompleteEmpty\n className={cn(\"not-empty:py-6\", className)}\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\nfunction CommandPanel({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className=\"-mx-px not-has-[+[data-slot=command-footer]]:-mb-px relative flex flex-col grow min-h-0 rounded-t-xl not-has-[+[data-slot=command-footer]]:rounded-b-2xl border border-b-0 bg-popover bg-clip-padding shadow-xs/5 [clip-path:inset(0_1px)] not-has-[+[data-slot=command-footer]]:[clip-path:inset(0_1px_1px_1px_round_0_0_calc(var(--radius-2xl)-1px)_calc(var(--radius-2xl)-1px))] before:pointer-events-none before:absolute before:inset-0 before:rounded-t-[calc(var(--radius-xl)-1px)] **:data-[slot=scroll-area-scrollbar]:mt-2\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteGroup>) {\n return (\n <AutocompleteGroup\n className={className}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\nfunction CommandGroupLabel({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteGroupLabel>) {\n return (\n <AutocompleteGroupLabel\n className={className}\n data-slot=\"command-group-label\"\n {...props}\n />\n );\n}\n\nfunction CommandCollection({\n ...props\n}: React.ComponentProps<typeof AutocompleteCollection>) {\n return <AutocompleteCollection data-slot=\"command-collection\" {...props} />;\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteItem>) {\n return (\n <AutocompleteItem\n className={cn(\"py-1.5\", className)}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteSeparator>) {\n return (\n <AutocompleteSeparator\n className={cn(\"my-2\", className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n className={cn(\n \"ms-auto font-medium font-sans text-muted-foreground/72 text-xs tracking-widest\",\n className,\n )}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\nfunction CommandFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex items-center justify-between gap-2 rounded-b-[calc(var(--radius-2xl)-1px)] border-t px-5 py-3 text-muted-foreground text-xs\",\n className,\n )}\n data-slot=\"command-footer\"\n {...props}\n />\n );\n}\n\nexport {\n CommandCreateHandle,\n Command,\n CommandCollection,\n CommandDialog,\n CommandDialogPopup,\n CommandDialogTrigger,\n CommandEmpty,\n CommandFooter,\n CommandGroup,\n CommandGroupLabel,\n CommandInput,\n CommandItem,\n CommandList,\n CommandPanel,\n CommandSeparator,\n CommandShortcut,\n};\n","\"use client\";\n\nimport confetti from \"canvas-confetti\";\nimport type {\n GlobalOptions as ConfettiGlobalOptions,\n CreateTypes as ConfettiInstance,\n Options as ConfettiOptions,\n} from \"canvas-confetti\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n type ReactNode,\n} from \"react\";\nimport type * as React from \"react\";\n\nimport { Button, type ButtonProps } from \"./button\";\n\n/** The brand celebration palette — soft violet / pink / peach / cream. */\nexport const CONFETTI_COLORS = [\"#a786ff\", \"#fd8bbc\", \"#eca184\", \"#f8deb1\"] as const;\n\nfunction prefersReducedMotion(): boolean {\n return (\n typeof window !== \"undefined\" &&\n !!window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches\n );\n}\n\nexport interface SideCannonsOptions {\n /** How long the cannons keep firing, in ms (default 3000). */\n durationMs?: number;\n /** Confetti colors (default {@link CONFETTI_COLORS}). */\n colors?: readonly string[];\n /** Particles emitted per side per frame (default 2). */\n particleCount?: number;\n /** z-index of the confetti canvas (default 100). */\n zIndex?: number;\n}\n\n/**\n * Fires confetti from the left and right edges of the viewport for a few\n * seconds — the \"side cannons\" celebration. Purely imperative, so it can be\n * triggered from an effect (e.g. the first time a page loads) without rendering\n * anything. No-ops on the server and when the user prefers reduced motion.\n *\n * @example\n * useEffect(() => { sideCannons(); }, []);\n */\nexport function sideCannons(options: SideCannonsOptions = {}): void {\n if (typeof window === \"undefined\" || prefersReducedMotion()) return;\n\n const {\n durationMs = 3000,\n colors = CONFETTI_COLORS,\n particleCount = 2,\n zIndex = 100,\n } = options;\n\n const end = performance.now() + durationMs;\n const shared = { particleCount, spread: 55, startVelocity: 60, colors: [...colors], zIndex };\n\n const frame = () => {\n if (performance.now() > end) return;\n void confetti({ ...shared, angle: 60, origin: { x: 0, y: 0.5 } });\n void confetti({ ...shared, angle: 120, origin: { x: 1, y: 0.5 } });\n requestAnimationFrame(frame);\n };\n\n frame();\n}\n\ntype ConfettiApi = {\n /** Fire the confetti instance, merging `options` over the component's. */\n fire: (options?: ConfettiOptions) => void;\n};\n\nexport type ConfettiRef = ConfettiApi | null;\n\nexport type ConfettiProps = React.ComponentPropsWithRef<\"canvas\"> & {\n /** Per-shot options merged into every `fire()` call. */\n options?: ConfettiOptions;\n /** Global options passed to `confetti.create` (resize / worker). */\n globalOptions?: ConfettiGlobalOptions;\n /** Skip the automatic fire on mount — drive it via the ref instead. */\n manualstart?: boolean;\n children?: ReactNode;\n};\n\nconst ConfettiContext = createContext<ConfettiApi>({} as ConfettiApi);\n\n/**\n * A canvas-bound confetti emitter. Renders its own `<canvas>` and exposes an\n * imperative `fire()` via ref (and to descendants through context). By default\n * it fires once on mount; pass `manualstart` to control it yourself.\n *\n * For a full-screen, no-render celebration prefer {@link sideCannons}.\n */\nconst ConfettiComponent = forwardRef<ConfettiRef, ConfettiProps>((props, ref) => {\n const {\n options,\n globalOptions = { resize: true, useWorker: true },\n manualstart = false,\n children,\n ...rest\n } = props;\n const instanceRef = useRef<ConfettiInstance | null>(null);\n\n const canvasRef = useCallback(\n (node: HTMLCanvasElement | null) => {\n if (node !== null) {\n if (instanceRef.current) return;\n instanceRef.current = confetti.create(node, { ...globalOptions, resize: true });\n } else if (instanceRef.current) {\n instanceRef.current.reset();\n instanceRef.current = null;\n }\n },\n [globalOptions],\n );\n\n const fire = useCallback(\n async (opts: ConfettiOptions = {}) => {\n if (prefersReducedMotion()) return;\n try {\n await instanceRef.current?.({ ...options, ...opts });\n } catch (error) {\n console.error(\"Confetti error:\", error);\n }\n },\n [options],\n );\n\n const api = useMemo<ConfettiApi>(() => ({ fire }), [fire]);\n\n useImperativeHandle(ref, () => api, [api]);\n\n useEffect(() => {\n if (!manualstart) void fire();\n }, [manualstart, fire]);\n\n return (\n <ConfettiContext.Provider value={api}>\n <canvas data-slot=\"confetti\" ref={canvasRef} {...rest} />\n {children}\n </ConfettiContext.Provider>\n );\n});\nConfettiComponent.displayName = \"Confetti\";\n\nexport const Confetti = ConfettiComponent;\n\n/** Access the nearest {@link Confetti}'s imperative `fire()` from a child. */\nexport function useConfetti(): ConfettiApi {\n return useContext(ConfettiContext);\n}\n\nexport interface ConfettiButtonProps extends ButtonProps {\n /** Confetti options; origin defaults to the button's center. */\n options?: ConfettiOptions & ConfettiGlobalOptions & { canvas?: HTMLCanvasElement };\n}\n\n/**\n * A {@link Button} that bursts confetti from its own center on click. Handy for\n * \"Claim\", \"Done\", or other one-off celebratory actions.\n */\nfunction ConfettiButtonComponent({ options, children, onClick, ...props }: ConfettiButtonProps) {\n const handleClick = async (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (prefersReducedMotion()) return;\n try {\n const rect = event.currentTarget.getBoundingClientRect();\n const x = rect.left + rect.width / 2;\n const y = rect.top + rect.height / 2;\n await confetti({\n ...options,\n origin: { x: x / window.innerWidth, y: y / window.innerHeight },\n });\n } catch (error) {\n console.error(\"Confetti button error:\", error);\n }\n };\n\n return (\n <Button data-slot=\"confetti-button\" onClick={handleClick} {...props}>\n {children}\n </Button>\n );\n}\nConfettiButtonComponent.displayName = \"ConfettiButton\";\n\nexport const ConfettiButton = ConfettiButtonComponent;\n","import { NfcIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\n// The card is laid out once at this design size, then transform-scaled to the\n// requested width — so every variant stays pixel-identical at any size.\nconst BASE_WIDTH = 316;\nconst BASE_HEIGHT = 190;\n\ntype CreditCardType =\n | \"transparent\"\n | \"transparent-gradient\"\n | \"brand-dark\"\n | \"brand-light\"\n | \"gray-dark\"\n | \"gray-light\"\n | \"transparent-strip\"\n | \"gray-strip\"\n | \"gradient-strip\"\n | \"salmon-strip\"\n | \"gray-strip-vertical\"\n | \"gradient-strip-vertical\"\n | \"salmon-strip-vertical\";\n\ninterface CreditCardVariantStyle {\n card: string;\n /** Decorative band rendered behind the content. */\n strip?: string;\n /** Light content on a dark or colorful face — switches the network logo. */\n onDark: boolean;\n}\n\nconst GLASS_FACE =\n \"border border-white/30 bg-white/10 text-white backdrop-blur-md\";\nconst LIGHT_FACE =\n \"bg-[#fffefc] text-[#1c1917] ring-1 ring-[#0c0a09]/10 ring-inset\";\nconst HORIZONTAL_STRIP = \"inset-x-0 top-16 h-9\";\nconst VERTICAL_STRIP = \"inset-y-0 right-12 w-9\";\n\nconst creditCardVariants: Record<CreditCardType, CreditCardVariantStyle> = {\n \"brand-dark\": {\n card: \"bg-gradient-to-br from-[#a8761c] via-[#92600a] to-[#5e3f08] text-[#faf3df]\",\n onDark: true,\n },\n \"brand-light\": {\n card: \"bg-gradient-to-br from-[#ecd9a8] via-[#dcb35e] to-[#c0922e] text-[#41290a]\",\n onDark: false,\n },\n \"gradient-strip\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(\n HORIZONTAL_STRIP,\n \"bg-gradient-to-r from-[#d4a84b] via-[#c48a1a] to-[#92600a]\",\n ),\n },\n \"gradient-strip-vertical\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(\n VERTICAL_STRIP,\n \"bg-gradient-to-b from-[#d4a84b] via-[#c48a1a] to-[#92600a]\",\n ),\n },\n \"gray-dark\": {\n card: \"bg-gradient-to-br from-[#3b3633] via-[#1c1917] to-[#0c0a09] text-[#faf9f6]\",\n onDark: true,\n },\n \"gray-light\": {\n card: \"bg-gradient-to-br from-[#faf9f6] to-[#e7e5e4] text-[#1c1917] ring-1 ring-[#0c0a09]/10 ring-inset\",\n onDark: false,\n },\n \"gray-strip\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(HORIZONTAL_STRIP, \"bg-[#292524]\"),\n },\n \"gray-strip-vertical\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(VERTICAL_STRIP, \"bg-[#292524]\"),\n },\n \"salmon-strip\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(HORIZONTAL_STRIP, \"bg-gradient-to-r from-[#e8a18f] to-[#d4644f]\"),\n },\n \"salmon-strip-vertical\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(VERTICAL_STRIP, \"bg-gradient-to-b from-[#e8a18f] to-[#d4644f]\"),\n },\n transparent: {\n card: GLASS_FACE,\n onDark: true,\n },\n \"transparent-gradient\": {\n card: \"border border-white/25 bg-gradient-to-br from-[#d4a84b]/60 via-white/10 to-white/5 text-white backdrop-blur-md\",\n onDark: true,\n },\n \"transparent-strip\": {\n card: GLASS_FACE,\n onDark: true,\n strip: cn(HORIZONTAL_STRIP, \"bg-white/25\"),\n },\n};\n\n/** The card-network mark — two overlapping circles in the kit's palette. */\nfunction CreditCardLogo({ onDark }: { onDark: boolean }) {\n return (\n <span aria-hidden className=\"flex items-center\" data-slot=\"credit-card-logo\">\n <span\n className={cn(\n \"size-6 rounded-full\",\n onDark ? \"bg-white/60\" : \"bg-[#d4a84b]\",\n )}\n />\n <span\n className={cn(\n \"-ml-2.5 size-6 rounded-full\",\n onDark ? \"bg-white/30\" : \"bg-[#92600a]/85\",\n )}\n />\n </span>\n );\n}\n\ninterface CreditCardProps extends React.ComponentProps<\"div\"> {\n type?: CreditCardType;\n company?: React.ReactNode;\n cardNumber?: string;\n cardHolder?: string;\n cardExpiration?: string;\n /** Rendered width in px — the height follows the 316 × 190 aspect ratio. */\n width?: number;\n}\n\nfunction CreditCard({\n className,\n style,\n type = \"brand-dark\",\n company = \"Country Club\",\n cardNumber = \"1234 5678 9012 3456\",\n cardHolder = \"OLIVIA RHYE\",\n cardExpiration = \"06/28\",\n width = BASE_WIDTH,\n ...props\n}: CreditCardProps) {\n const scale = width / BASE_WIDTH;\n const variant = creditCardVariants[type];\n\n return (\n <div\n className={cn(\"relative shrink-0 select-none font-sans\", className)}\n data-slot=\"credit-card\"\n data-type={type}\n style={{ height: Math.round(BASE_HEIGHT * scale), width, ...style }}\n {...props}\n >\n <div\n className={cn(\n \"absolute top-0 left-0 flex origin-top-left flex-col justify-between overflow-hidden rounded-[20px] p-5\",\n variant.card,\n )}\n style={{\n height: BASE_HEIGHT,\n transform: `scale(${scale})`,\n width: BASE_WIDTH,\n }}\n >\n {variant.strip ? (\n <span aria-hidden className={cn(\"absolute\", variant.strip)} />\n ) : null}\n <div className=\"relative flex items-start justify-between\">\n <span\n className=\"font-semibold text-base tracking-tight\"\n data-slot=\"credit-card-company\"\n >\n {company}\n </span>\n <NfcIcon aria-hidden className=\"size-5 opacity-70\" />\n </div>\n <div className=\"relative flex flex-col gap-2.5\">\n <span\n className=\"font-medium text-[0.9375rem] tabular-nums tracking-[0.12em]\"\n data-slot=\"credit-card-number\"\n >\n {cardNumber}\n </span>\n <div className=\"flex items-end justify-between\">\n <div className=\"flex items-baseline gap-4\">\n <span\n className=\"font-medium text-[0.6875rem] uppercase tracking-[0.14em]\"\n data-slot=\"credit-card-holder\"\n >\n {cardHolder}\n </span>\n <span\n className=\"font-medium text-[0.6875rem] tabular-nums tracking-[0.14em] opacity-80\"\n data-slot=\"credit-card-expiration\"\n >\n {cardExpiration}\n </span>\n </div>\n <CreditCardLogo onDark={variant.onDark} />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport { CreditCard, type CreditCardProps, type CreditCardType };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from \"lucide-react\";\nimport type * as React from \"react\";\nimport { type Button, buttonVariants } from \"./button\";\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n data-slot=\"pagination\"\n {...props}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n className={cn(\"flex flex-row items-center gap-1\", className)}\n data-slot=\"pagination-content\"\n {...props}\n />\n );\n}\n\nfunction PaginationItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n className={cn(\n \"animate-in fade-in-0 zoom-in-95 duration-200 ease-out\",\n className,\n )}\n data-slot=\"pagination-item\"\n {...props}\n />\n );\n}\n\nexport type PaginationLinkProps = {\n isActive?: boolean;\n disabled?: boolean;\n size?: React.ComponentProps<typeof Button>[\"size\"];\n} & useRender.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n disabled,\n size = \"icon\",\n render,\n ...props\n}: PaginationLinkProps) {\n const defaultProps = {\n \"aria-current\": isActive ? (\"page\" as const) : undefined,\n \"aria-disabled\": disabled || undefined,\n className: cn(\n buttonVariants({\n size,\n variant: isActive ? \"outline\" : \"ghost\",\n }),\n \"transition-[opacity,box-shadow,filter] duration-200 ease-out\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n ),\n \"data-active\": isActive,\n \"data-disabled\": disabled || undefined,\n \"data-slot\": \"pagination-link\",\n tabIndex: disabled ? -1 : undefined,\n };\n\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(defaultProps, props),\n render,\n });\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n className={cn(\"max-sm:aspect-square max-sm:p-0\", className)}\n size=\"default\"\n {...props}\n >\n <ChevronLeftIcon className=\"sm:-ms-1\" />\n <span className=\"max-sm:hidden\">Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n className={cn(\"max-sm:aspect-square max-sm:p-0\", className)}\n size=\"default\"\n {...props}\n >\n <span className=\"max-sm:hidden\">Next</span>\n <ChevronRightIcon className=\"sm:-me-1\" />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n className={cn(\"flex min-w-7 justify-center\", className)}\n data-slot=\"pagination-ellipsis\"\n {...props}\n >\n <MoreHorizontalIcon className=\"size-5 sm: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","import {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n type PaginationLinkProps,\n PaginationNext,\n PaginationPrevious,\n} from \"./pagination\";\n\nexport function PaginationControls(props: {\n page: number;\n pageCount: number;\n renderPageLink: (page: number) => PaginationLinkProps[\"render\"];\n}) {\n const { page, pageCount, renderPageLink } = props;\n\n if (pageCount <= 1) return null;\n\n return (\n <Pagination>\n <PaginationContent>\n {/* Prev/Next are always rendered (disabled at the bounds) so they fade\n between states instead of popping in and out. */}\n <PaginationItem>\n <PaginationPrevious\n disabled={page <= 1}\n render={page > 1 ? renderPageLink(page - 1) : <span />}\n />\n </PaginationItem>\n\n {page > 1 && (\n <PaginationItem>\n <PaginationLink render={renderPageLink(1)}>1</PaginationLink>\n </PaginationItem>\n )}\n\n {page > 2 && (\n <PaginationItem>\n <PaginationEllipsis />\n </PaginationItem>\n )}\n\n <PaginationItem>\n <PaginationLink render={renderPageLink(page)} isActive>\n {page}\n </PaginationLink>\n </PaginationItem>\n\n {pageCount > page + 1 && (\n <PaginationItem>\n <PaginationEllipsis />\n </PaginationItem>\n )}\n\n {pageCount > page && (\n <PaginationItem>\n <PaginationLink render={renderPageLink(pageCount)}>\n {pageCount}\n </PaginationLink>\n </PaginationItem>\n )}\n\n <PaginationItem>\n <PaginationNext\n disabled={page >= pageCount}\n render={page < pageCount ? renderPageLink(page + 1) : <span />}\n />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n );\n}\n","import type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n className=\"relative w-full overflow-x-auto\"\n data-slot=\"table-container\"\n >\n <table\n className={cn(\n \"w-full caption-bottom in-data-[slot=frame]:border-separate in-data-[slot=frame]:border-spacing-0 text-sm\",\n className,\n )}\n data-slot=\"table\"\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n className={cn(\n \"[&_tr]:border-b in-data-[slot=frame]:**:[th]:h-9 in-data-[slot=frame]:*:[tr]:border-none in-data-[slot=frame]:*:[tr]:hover:bg-transparent\",\n className,\n )}\n data-slot=\"table-header\"\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n className={cn(\n \"relative in-data-[slot=frame]:rounded-xl in-data-[slot=frame]:shadow-xs/5 before:pointer-events-none before:absolute before:inset-px not-in-data-[slot=frame]:before:hidden before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/8%)] [&_tr:last-child]:border-0 in-data-[slot=frame]:*:[tr]:border-0 in-data-[slot=frame]:*:[tr]:*:[td]:border-b in-data-[slot=frame]:*:[tr]:*:[td]:bg-background in-data-[slot=frame]:*:[tr]:*:[td]:bg-clip-padding in-data-[slot=frame]:*:[tr]:first:*:[td]:first:rounded-ss-xl in-data-[slot=frame]:*:[tr]:*:[td]:first:border-s in-data-[slot=frame]:*:[tr]:first:*:[td]:border-t in-data-[slot=frame]:*:[tr]:last:*:[td]:last:rounded-ee-xl in-data-[slot=frame]:*:[tr]:*:[td]:last:border-e in-data-[slot=frame]:*:[tr]:first:*:[td]:last:rounded-se-xl in-data-[slot=frame]:*:[tr]:last:*:[td]:first:rounded-es-xl in-data-[slot=frame]:*:[tr]:hover:*:[td]:bg-transparent in-data-[slot=frame]:*:[tr]:data-[state=selected]:*:[td]:bg-muted/72\",\n className,\n )}\n data-slot=\"table-body\"\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n className={cn(\n \"border-t in-data-[slot=frame]:border-none bg-muted/72 in-data-[slot=frame]:bg-transparent font-medium [&>tr]:last:border-b-0 in-data-[slot=frame]:*:[tr]:hover:bg-transparent\",\n className,\n )}\n data-slot=\"table-footer\"\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n className={cn(\n \"border-b transition-colors hover:bg-muted/72 in-data-[slot=frame]:hover:bg-transparent data-[state=selected]:bg-muted/72 in-data-[slot=frame]:data-[state=selected]:bg-transparent\",\n className,\n )}\n data-slot=\"table-row\"\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n className={cn(\n \"h-10 whitespace-nowrap px-2.5 text-left align-middle font-medium text-muted-foreground leading-none has-[[role=checkbox]]:w-px has-[[role=checkbox]]:pe-0\",\n className,\n )}\n data-slot=\"table-head\"\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n className={cn(\n \"whitespace-nowrap p-2.5 align-middle leading-none in-data-[slot=frame]:first:p-[calc(--spacing(2.5)-1px)] in-data-[slot=frame]:last:p-[calc(--spacing(2.5)-1px)] has-[[role=checkbox]]:pe-0\",\n className,\n )}\n data-slot=\"table-cell\"\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n className={cn(\n \"in-data-[slot=frame]:my-4 mt-4 text-muted-foreground text-sm\",\n className,\n )}\n data-slot=\"table-caption\"\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 { SearchIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Input } from \"./input\";\nimport { PaginationControls } from \"./pagination-controls\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./table\";\n\nexport interface DataTablePagedColumn {\n key: string;\n label?: string;\n}\n\nexport interface DataTablePagedProps {\n /** Columns to render. Pass `label` to override the header text. */\n columns: DataTablePagedColumn[];\n /** Row objects; values are rendered with `String(...)` unless a ReactNode. */\n rows: Record<string, unknown>[];\n pageSize?: number;\n /** Show the client-side search box (filters across all columns). */\n searchable?: boolean;\n searchPlaceholder?: string;\n emptyLabel?: string;\n /**\n * Total row count when `rows` is only one page of a larger server-side set —\n * shown as \"n of total\" in the footer.\n */\n totalCount?: number;\n className?: string;\n}\n\nfunction formatCell(value: unknown): React.ReactNode {\n if (value === null || value === undefined || value === \"\") return \"—\";\n if (typeof value === \"boolean\") return value ? \"Yes\" : \"No\";\n if (React.isValidElement(value)) return value;\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\n/**\n * Client-side paginated (and optionally searchable) data table. Designed for\n * result sets a chat agent or API returns: pass plain row objects and column\n * keys, get a themed table with pagination that never renders huge lists.\n */\nfunction DataTablePaged({\n className,\n columns,\n emptyLabel = \"No results\",\n pageSize = 10,\n rows,\n searchable = true,\n searchPlaceholder = \"Filter results…\",\n totalCount,\n}: DataTablePagedProps) {\n const [page, setPage] = React.useState(1);\n const [query, setQuery] = React.useState(\"\");\n\n const filteredRows = React.useMemo(() => {\n const trimmed = query.trim().toLowerCase();\n if (!trimmed) return rows;\n return rows.filter((row) =>\n columns.some((column) =>\n String(row[column.key] ?? \"\")\n .toLowerCase()\n .includes(trimmed),\n ),\n );\n }, [columns, query, rows]);\n\n const pageCount = Math.max(1, Math.ceil(filteredRows.length / pageSize));\n const safePage = Math.min(page, pageCount);\n const pageRows = filteredRows.slice((safePage - 1) * pageSize, safePage * pageSize);\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)} data-slot=\"data-table-paged\">\n {searchable && rows.length > pageSize && (\n <div className=\"relative\">\n <SearchIcon className=\"-translate-y-1/2 absolute top-1/2 left-2.5 size-4 text-muted-foreground\" />\n <Input\n className=\"h-8 pl-8 text-sm\"\n onChange={(event) => {\n setQuery(event.target.value);\n setPage(1);\n }}\n placeholder={searchPlaceholder}\n value={query}\n />\n </div>\n )}\n\n <div className=\"overflow-x-auto rounded-lg border border-border\">\n <Table>\n <TableHeader>\n <TableRow>\n {columns.map((column) => (\n <TableHead className=\"whitespace-nowrap\" key={column.key}>\n {column.label ?? column.key.replaceAll(\"_\", \" \")}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {pageRows.length === 0 ? (\n <TableRow>\n <TableCell\n className=\"py-6 text-center text-muted-foreground\"\n colSpan={columns.length}\n >\n {emptyLabel}\n </TableCell>\n </TableRow>\n ) : (\n pageRows.map((row, rowIndex) => (\n <TableRow key={`${safePage}-${rowIndex}`}>\n {columns.map((column) => (\n <TableCell className=\"max-w-56 truncate\" key={column.key}>\n {formatCell(row[column.key])}\n </TableCell>\n ))}\n </TableRow>\n ))\n )}\n </TableBody>\n </Table>\n </div>\n\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <span className=\"text-muted-foreground text-xs\">\n {filteredRows.length}\n {typeof totalCount === \"number\" && totalCount > rows.length\n ? ` of ${totalCount}`\n : \"\"}{\" \"}\n rows\n </span>\n <PaginationControls\n page={safePage}\n pageCount={pageCount}\n renderPageLink={(nextPage) => (\n // biome-ignore lint/a11y/useValidAnchor: client-side pagination\n <a\n href=\"#\"\n onClick={(event) => {\n event.preventDefault();\n setPage(nextPage);\n }}\n />\n )}\n />\n </div>\n </div>\n );\n}\n\nexport { DataTablePaged };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Drawer(props: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger(\n props: React.ComponentProps<typeof DrawerPrimitive.Trigger>,\n) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal(\n props: React.ComponentProps<typeof DrawerPrimitive.Portal>,\n) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose(props: 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 className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm data-[state=closed]:animate-out data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n data-slot=\"drawer-overlay\"\n {...props}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n return (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n className={cn(\n \"group/drawer-content fixed z-50 flex h-auto flex-col bg-popover not-dark:bg-clip-padding text-popover-foreground shadow-lg/5 outline-none\",\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-[82vh] data-[vaul-drawer-direction=bottom]:rounded-t-2xl data-[vaul-drawer-direction=bottom]:border-t\",\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-[82vh] data-[vaul-drawer-direction=top]:rounded-b-2xl data-[vaul-drawer-direction=top]:border-b\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-[calc(100%-(--spacing(12)))] data-[vaul-drawer-direction=right]:max-w-md data-[vaul-drawer-direction=right]:border-s\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-[calc(100%-(--spacing(12)))] data-[vaul-drawer-direction=left]:max-w-md data-[vaul-drawer-direction=left]:border-e\",\n className,\n )}\n data-slot=\"drawer-content\"\n {...props}\n >\n {/* Grab handle — shown for bottom/top drawers. */}\n <div className=\"mx-auto mt-3 hidden h-1.5 w-12 shrink-0 rounded-full bg-border group-data-[vaul-drawer-direction=bottom]/drawer-content:block group-data-[vaul-drawer-direction=top]/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 className={cn(\n \"flex flex-col gap-1.5 p-6 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center md:group-data-[vaul-drawer-direction=bottom]/drawer-content:text-left\",\n className,\n )}\n data-slot=\"drawer-header\"\n {...props}\n />\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"mt-auto flex flex-col gap-2 border-t bg-muted/72 px-6 py-4\",\n className,\n )}\n data-slot=\"drawer-footer\"\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n className={cn(\"font-semibold text-xl leading-none\", className)}\n data-slot=\"drawer-title\"\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"drawer-description\"\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 { ContextMenu as ContextMenuPrimitive } from \"@base-ui/react/context-menu\";\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"../../lib/utils/css\";\n\nfunction ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuTrigger({\n className,\n ...props\n}: ContextMenuPrimitive.Trigger.Props) {\n return (\n <ContextMenuPrimitive.Trigger\n data-slot=\"context-menu-trigger\"\n className={cn(\"select-none\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n align = \"start\",\n alignOffset = 4,\n side = \"right\",\n sideOffset = 0,\n ...props\n}: ContextMenuPrimitive.Popup.Props &\n Pick<\n ContextMenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <ContextMenuPrimitive.Popup\n data-slot=\"context-menu-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-lg p-1 shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 z-50 max-h-(--available-height) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Positioner>\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: ContextMenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.GroupLabel\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: ContextMenuPrimitive.Item.Props & {\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 \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 group/context-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\n return (\n <ContextMenuPrimitive.SubmenuRoot data-slot=\"context-menu-sub\" {...props} />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: ContextMenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubmenuTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n </ContextMenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n ...props\n}: React.ComponentProps<typeof ContextMenuContent>) {\n return (\n <ContextMenuContent\n data-slot=\"context-menu-sub-content\"\n className=\"shadow-lg\"\n side=\"right\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: ContextMenuPrimitive.CheckboxItem.Props & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute right-2 pointer-events-none\">\n <ContextMenuPrimitive.CheckboxItemIndicator>\n <CheckIcon />\n </ContextMenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: ContextMenuPrimitive.RadioGroup.Props) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: ContextMenuPrimitive.RadioItem.Props & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 pointer-events-none\">\n <ContextMenuPrimitive.RadioItemIndicator>\n <CheckIcon />\n </ContextMenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: ContextMenuPrimitive.Separator.Props) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", 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 \"text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\",\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 { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\";\nimport { XIcon } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport { ScrollArea } from \"./scroll-area\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst DialogCreateHandle = DialogPrimitive.createHandle;\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nfunction DialogTrigger(props: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogClose(props: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogBackdrop({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n className,\n )}\n data-slot=\"dialog-backdrop\"\n {...props}\n />\n );\n}\n\nfunction DialogViewport({\n className,\n ...props\n}: DialogPrimitive.Viewport.Props) {\n return (\n <DialogPrimitive.Viewport\n className={cn(\n \"fixed inset-0 z-50 grid grid-rows-[1fr_auto_3fr] justify-items-center p-4\",\n className,\n )}\n data-slot=\"dialog-viewport\"\n {...props}\n />\n );\n}\n\nfunction DialogPopup({\n className,\n children,\n showCloseButton = true,\n bottomStickOnMobile = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean;\n bottomStickOnMobile?: boolean;\n}) {\n return (\n <DialogPortal>\n <DialogBackdrop />\n <DialogViewport\n className={cn(\n bottomStickOnMobile &&\n \"max-sm:grid-rows-[1fr_auto] max-sm:p-0 max-sm:pt-12\",\n )}\n >\n <DialogPrimitive.Popup\n className={cn(\n \"-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover not-dark:bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg/5 transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n bottomStickOnMobile &&\n \"max-sm:max-w-none max-sm:rounded-none max-sm:border-x-0 max-sm:border-t max-sm:border-b-0 max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden max-sm:before:rounded-none\",\n className,\n )}\n data-slot=\"dialog-popup\"\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n aria-label=\"Close\"\n className=\"absolute end-2 top-2\"\n render={<Button size=\"icon\" variant=\"ghost\" />}\n >\n <XIcon />\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogViewport>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-2 p-6 in-[[data-slot=dialog-popup]:has([data-slot=dialog-panel])]:pb-3 max-sm:pb-4\",\n className,\n )}\n data-slot=\"dialog-header\"\n {...props}\n />\n );\n}\n\nfunction DialogFooter({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: \"default\" | \"bare\";\n}) {\n return (\n <div\n className={cn(\n \"flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end sm:rounded-b-[calc(var(--radius-2xl)-1px)]\",\n variant === \"default\" && \"border-t bg-muted/72 py-4\",\n variant === \"bare\" &&\n \"in-[[data-slot=dialog-popup]:has([data-slot=dialog-panel])]:pt-3 pt-4 pb-6\",\n className,\n )}\n data-slot=\"dialog-footer\"\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n className={cn(\n \"font-heading font-semibold text-xl leading-none\",\n className,\n )}\n data-slot=\"dialog-title\"\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"dialog-description\"\n {...props}\n />\n );\n}\n\nfunction DialogPanel({\n className,\n scrollFade = true,\n ...props\n}: React.ComponentProps<\"div\"> & { scrollFade?: boolean }) {\n return (\n <ScrollArea scrollFade={scrollFade}>\n <div\n className={cn(\n \"p-6 in-[[data-slot=dialog-popup]:has([data-slot=dialog-header])]:pt-1 in-[[data-slot=dialog-popup]:has([data-slot=dialog-footer]:not(.border-t))]:pb-1\",\n className,\n )}\n data-slot=\"dialog-panel\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nexport {\n DialogCreateHandle,\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogClose,\n DialogBackdrop,\n DialogBackdrop as DialogOverlay,\n DialogPopup,\n DialogPopup as DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogPanel,\n DialogViewport,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance p-6 text-center md:p-12\",\n className,\n )}\n data-slot=\"empty\"\n {...props}\n />\n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex max-w-sm flex-col items-center text-center\",\n className,\n )}\n data-slot=\"empty-header\"\n {...props}\n />\n );\n}\n\nconst emptyMediaVariants = cva(\n \"flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n defaultVariants: {\n variant: \"default\",\n },\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"relative flex size-9 shrink-0 items-center justify-center rounded-md border bg-card text-foreground shadow-sm/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-md)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)] [&_svg:not([class*='size-'])]:size-4.5\",\n },\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 className={cn(\"relative mb-6\", className)}\n data-slot=\"empty-media\"\n data-variant={variant}\n {...props}\n >\n {variant === \"icon\" && (\n <>\n <div\n aria-hidden=\"true\"\n className={cn(\n emptyMediaVariants({ className, variant }),\n \"-translate-x-0.5 -rotate-10 pointer-events-none absolute bottom-px origin-bottom-left scale-84 shadow-none\",\n )}\n />\n <div\n aria-hidden=\"true\"\n className={cn(\n emptyMediaVariants({ className, variant }),\n \"pointer-events-none absolute bottom-px origin-bottom-right translate-x-0.5 rotate-10 scale-84 shadow-none\",\n )}\n />\n </>\n )}\n <div\n className={cn(emptyMediaVariants({ className, variant }))}\n {...props}\n />\n </div>\n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"font-heading font-semibold text-xl\", className)}\n data-slot=\"empty-title\"\n {...props}\n />\n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n className={cn(\n \"text-muted-foreground text-sm [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4 [[data-slot=empty-title]+&]:mt-1\",\n className,\n )}\n data-slot=\"empty-description\"\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm\",\n className,\n )}\n data-slot=\"empty-content\"\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 { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Button, type ButtonProps } from \"./button\";\n\nconst fabVariants = cva(\n \"fixed z-50 rounded-full shadow-lg transition-transform duration-150 hover:scale-105 active:scale-95 before:rounded-full\",\n {\n defaultVariants: {\n position: \"bottom-right\",\n },\n variants: {\n position: {\n \"bottom-right\": \"right-4 bottom-4 sm:right-6 sm:bottom-6\",\n \"bottom-left\": \"bottom-4 left-4 sm:bottom-6 sm:left-6\",\n \"top-right\": \"top-4 right-4 sm:top-6 sm:right-6\",\n \"top-left\": \"top-4 left-4 sm:top-6 sm:left-6\",\n },\n },\n },\n);\n\nexport interface FabProps extends ButtonProps {\n position?: VariantProps<typeof fabVariants>[\"position\"];\n}\n\n/**\n * Floating action button — a fixed, round icon button used to summon overlays\n * such as chat widgets. Composes `Button`, so all button variants/sizes apply.\n */\nfunction Fab({ className, position, size = \"icon-xl\", ...props }: FabProps) {\n return (\n <Button\n className={cn(fabVariants({ className, position }))}\n data-slot=\"fab\"\n size={size}\n {...props}\n />\n );\n}\n\nexport { Fab, fabVariants };\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst featuredIconVariants = cva(\n \"relative inline-flex shrink-0 select-none items-center justify-center align-middle [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n compoundVariants: [\n // The bordered themes are squared, with corners that scale with the size.\n {\n className: \"rounded-md before:rounded-[calc(var(--radius-md)-3px)]\",\n size: \"sm\",\n theme: [\"modern\", \"modern-neue\"],\n },\n {\n className: \"rounded-lg before:rounded-[calc(var(--radius-lg)-3px)]\",\n size: \"md\",\n theme: [\"modern\", \"modern-neue\"],\n },\n {\n className: \"rounded-[10px] before:rounded-[7px]\",\n size: \"lg\",\n theme: [\"modern\", \"modern-neue\"],\n },\n {\n className: \"rounded-xl before:rounded-[calc(var(--radius-xl)-3px)]\",\n size: \"xl\",\n theme: [\"modern\", \"modern-neue\"],\n },\n ],\n defaultVariants: { color: \"brand\", size: \"md\", theme: \"light\" },\n variants: {\n // Colors are applied through the theme/color maps below — the variant\n // exists so cva carries the prop type.\n color: { brand: \"\", error: \"\", gray: \"\", success: \"\", warning: \"\" },\n size: {\n sm: \"size-8 [&_svg:not([class*='size-'])]:size-4\",\n md: \"size-10 [&_svg:not([class*='size-'])]:size-5\",\n lg: \"size-12 [&_svg:not([class*='size-'])]:size-6\",\n xl: \"size-14 [&_svg:not([class*='size-'])]:size-7\",\n },\n theme: {\n dark: \"rounded-full text-white shadow-xs not-dark:inset-shadow-[0_1px_--theme(--color-white/16%)]\",\n gradient:\n \"rounded-full bg-linear-to-b from-white/24 to-white/0 text-white shadow-xs inset-shadow-[0_1px_--theme(--color-white/24%)]\",\n light: \"rounded-full\",\n modern:\n \"border border-input bg-background shadow-xs not-dark:bg-clip-padding dark:bg-input/32\",\n \"modern-neue\":\n \"border border-input bg-background shadow-xs not-dark:bg-clip-padding dark:bg-input/32 before:pointer-events-none before:absolute before:inset-[3px] before:border before:border-border/72 before:shadow-xs\",\n outline:\n \"rounded-full before:pointer-events-none before:absolute before:inset-0 before:rounded-full before:border-2 before:border-current before:opacity-12 after:pointer-events-none after:absolute after:inset-[15%] after:rounded-full after:border-2 after:border-current after:opacity-32\",\n },\n },\n },\n);\n\ntype FeaturedIconTheme = NonNullable<\n VariantProps<typeof featuredIconVariants>[\"theme\"]\n>;\ntype FeaturedIconColor = NonNullable<\n VariantProps<typeof featuredIconVariants>[\"color\"]\n>;\n\n/** Per-theme color treatments, using the design-system tonal/solid tokens. */\nconst featuredIconColors: Record<\n FeaturedIconTheme,\n Record<FeaturedIconColor, string>\n> = {\n dark: {\n brand: \"bg-brand\",\n error: \"bg-destructive\",\n gray: \"bg-secondary-foreground text-background\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n },\n gradient: {\n brand: \"bg-brand\",\n error: \"bg-destructive\",\n gray: \"bg-secondary-foreground text-background\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n },\n light: {\n brand: \"bg-brand/12 text-sidebar-primary dark:bg-brand/20\",\n error: \"bg-destructive/8 text-destructive-foreground dark:bg-destructive/16\",\n gray: \"bg-secondary text-secondary-foreground\",\n success: \"bg-success/8 text-success-foreground dark:bg-success/16\",\n warning: \"bg-warning/8 text-warning-foreground dark:bg-warning/16\",\n },\n modern: {\n brand: \"text-sidebar-primary\",\n error: \"text-destructive-foreground\",\n gray: \"text-foreground\",\n success: \"text-success-foreground\",\n warning: \"text-warning-foreground\",\n },\n \"modern-neue\": {\n brand: \"text-sidebar-primary\",\n error: \"text-destructive-foreground\",\n gray: \"text-foreground\",\n success: \"text-success-foreground\",\n warning: \"text-warning-foreground\",\n },\n outline: {\n brand: \"text-sidebar-primary\",\n error: \"text-destructive-foreground\",\n gray: \"text-muted-foreground\",\n success: \"text-success-foreground\",\n warning: \"text-warning-foreground\",\n },\n};\n\ninterface FeaturedIconProps extends Omit<React.ComponentProps<\"span\">, \"color\"> {\n theme?: FeaturedIconTheme;\n color?: FeaturedIconColor;\n size?: VariantProps<typeof featuredIconVariants>[\"size\"];\n /** Icon component rendered inside (e.g. a lucide icon). Or pass children. */\n icon?: React.ElementType;\n}\n\nfunction FeaturedIcon({\n className,\n theme = \"light\",\n color = \"brand\",\n size,\n icon: Icon,\n children,\n ...props\n}: FeaturedIconProps) {\n return (\n <span\n className={cn(\n featuredIconVariants({ color, size, theme }),\n featuredIconColors[theme][color],\n className,\n )}\n data-slot=\"featured-icon\"\n {...props}\n >\n {children ?? (Icon ? <Icon /> : null)}\n </span>\n );\n}\n\nexport { FeaturedIcon, featuredIconVariants };\n","\"use client\";\n\nimport { Fieldset as FieldsetPrimitive } from \"@base-ui/react/fieldset\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Fieldset({ className, ...props }: FieldsetPrimitive.Root.Props) {\n return (\n <FieldsetPrimitive.Root\n className={cn(\"flex w-full max-w-64 flex-col gap-6\", className)}\n data-slot=\"fieldset\"\n {...props}\n />\n );\n}\nfunction FieldsetLegend({\n className,\n ...props\n}: FieldsetPrimitive.Legend.Props) {\n return (\n <FieldsetPrimitive.Legend\n className={cn(\"font-semibold text-foreground\", className)}\n data-slot=\"fieldset-legend\"\n {...props}\n />\n );\n}\n\nexport { Fieldset, FieldsetLegend };\n","\"use client\";\n\nimport { Form as FormPrimitive } from \"@base-ui/react/form\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Form({ className, ...props }: FormPrimitive.Props) {\n return (\n <FormPrimitive\n className={cn(\"flex w-full flex-col gap-4\", className)}\n data-slot=\"form\"\n {...props}\n />\n );\n}\n\nexport { Form };\n","import type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Frame({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"relative flex flex-col rounded-2xl bg-muted/72 p-1\",\n \"*:[[data-slot=frame-panel]+[data-slot=frame-panel]]:mt-1\",\n className,\n )}\n data-slot=\"frame\"\n {...props}\n />\n );\n}\n\nfunction FramePanel({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"relative rounded-xl border bg-background bg-clip-padding p-5 shadow-xs/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"frame-panel\"\n {...props}\n />\n );\n}\n\nfunction FrameHeader({ className, ...props }: React.ComponentProps<\"header\">) {\n return (\n <header\n className={cn(\"flex flex-col px-5 py-4\", className)}\n data-slot=\"frame-panel-header\"\n {...props}\n />\n );\n}\n\nfunction FrameTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"font-semibold text-sm\", className)}\n data-slot=\"frame-panel-title\"\n {...props}\n />\n );\n}\n\nfunction FrameDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"frame-panel-description\"\n {...props}\n />\n );\n}\n\nfunction FrameFooter({ className, ...props }: React.ComponentProps<\"footer\">) {\n return (\n <footer\n className={cn(\"px-5 py-4\", className)}\n data-slot=\"frame-panel-footer\"\n {...props}\n />\n );\n}\n\nexport {\n Frame,\n FramePanel,\n FrameHeader,\n FrameTitle,\n FrameDescription,\n FrameFooter,\n};\n","import {\n FileQuestionIcon,\n ShieldAlertIcon,\n ShieldXIcon,\n TriangleAlertIcon,\n} from \"lucide-react\";\nimport type React from \"react\";\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"./empty\";\n\ninterface ErrorOrEmptyStateProps\n extends Omit<React.ComponentProps<\"div\">, \"title\"> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n media?: React.ReactNode;\n mediaVariant?: \"icon\" | \"default\";\n compact?: boolean;\n}\n\nfunction ErrorOrEmptyState({\n title,\n description,\n actions,\n className,\n media,\n mediaVariant = \"default\",\n compact,\n ...props\n}: ErrorOrEmptyStateProps) {\n return (\n <Empty {...props}>\n <EmptyHeader>\n {!compact && <EmptyMedia variant={mediaVariant}>{media}</EmptyMedia>}\n <EmptyTitle>{title}</EmptyTitle>\n <EmptyDescription>{description}</EmptyDescription>\n </EmptyHeader>\n <EmptyContent>{actions}</EmptyContent>\n </Empty>\n );\n}\n\ntype ErrorTemplateProps = Omit<\n ErrorOrEmptyStateProps,\n \"image\" | \"title\" | \"description\"\n> & {\n mediaClassName?: string;\n};\n\nfunction NotFoundErrorState({ mediaClassName, ...props }: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<FileQuestionIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Not found\"\n description=\"The requested resource was not found.\"\n {...props}\n />\n );\n}\n\nfunction UnauthorizedErrorState({\n mediaClassName,\n ...props\n}: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<ShieldAlertIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Unauthorized\"\n description=\"You are not authorized to access this resource.\"\n {...props}\n />\n );\n}\n\nfunction ForbiddenErrorState({ mediaClassName, ...props }: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<ShieldXIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Forbidden\"\n description=\"You are not allowed to access this resource.\"\n {...props}\n />\n );\n}\n\nfunction InternalServerErrorState({\n mediaClassName,\n ...props\n}: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<ShieldXIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Internal server error\"\n description=\"An error occurred while processing your request.\"\n {...props}\n />\n );\n}\n\nfunction OfflineErrorState({ mediaClassName, ...props }: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<ShieldXIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Offline\"\n description=\"Please check your internet connection and try again.\"\n {...props}\n />\n );\n}\n\nfunction GeneralErrorState({ mediaClassName, ...props }: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<TriangleAlertIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Error\"\n description=\"An error occurred while processing your request.\"\n {...props}\n />\n );\n}\n\nexport {\n ErrorOrEmptyState,\n NotFoundErrorState,\n UnauthorizedErrorState,\n ForbiddenErrorState,\n InternalServerErrorState,\n OfflineErrorState,\n GeneralErrorState,\n};\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n className={cn(\n \"shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:not-[[class^='h-']]:not-[[class*='_h-']]:self-stretch\",\n className,\n )}\n data-slot=\"separator\"\n orientation={orientation}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { Separator } from \"./separator\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst groupVariants = cva(\n \"flex w-fit *:focus-visible:z-1 has-[>[data-slot=group]]:gap-2 *:has-focus-visible:z-1 dark:*:[[data-slot=button]:hover~[data-slot=separator]:not([data-slot]:hover~[data-slot=separator]~[data-slot=separator]),[data-slot][data-pressed]~[data-slot=separator]:not([data-slot][data-pressed]~[data-slot=separator]~[data-slot=separator])]:before:bg-input/64 dark:*:[[data-slot=separator]:has(~[data-slot=button]:hover):not(:has(~[data-slot=separator]~[data-slot]:hover)),[data-slot=separator]:has(~[data-slot][data-pressed]):not(:has(~[data-slot=separator]~[data-slot][data-pressed]))]:before:bg-input/64\",\n {\n defaultVariants: {\n orientation: \"horizontal\",\n },\n variants: {\n orientation: {\n horizontal:\n \"*:[[data-slot]~[data-slot]:not([data-slot=separator])]:before:-start-[0.5px] *:data-slot:not-data-[slot=separator]:has-[~[data-slot]]:before:-end-[0.5px] *:pointer-coarse:after:min-w-auto *:data-slot:has-[~[data-slot]]:rounded-e-none *:data-slot:has-[~[data-slot]]:border-e-0 *:data-slot:has-[~[data-slot]]:before:rounded-e-none *:[[data-slot]~[data-slot]]:rounded-s-none *:[[data-slot]~[data-slot]]:border-s-0 *:[[data-slot]~[data-slot]]:before:rounded-s-none\",\n vertical:\n \"*:[[data-slot]~[data-slot]:not([data-slot=separator])]:before:-top-[0.5px] *:data-slot:not-data-[slot=separator]:has-[~[data-slot]]:before:-bottom-[0.5px] flex-col *:pointer-coarse:after:min-h-auto *:data-slot:has-[~[data-slot]]:rounded-b-none *:data-slot:has-[~[data-slot]]:border-b-0 *:data-slot:not-data-[slot=separator]:has-[~[data-slot]]:before:hidden *:data-slot:has-[~[data-slot]]:before:rounded-b-none dark:*:last:before:hidden dark:*:first:before:block *:[[data-slot]~[data-slot]]:rounded-t-none *:[[data-slot]~[data-slot]]:border-t-0 *:[[data-slot]~[data-slot]]:before:rounded-t-none\",\n },\n },\n },\n);\n\nfunction Group({\n className,\n orientation,\n children,\n ...props\n}: {\n className?: string;\n orientation?: VariantProps<typeof groupVariants>[\"orientation\"];\n children: React.ReactNode;\n} & React.ComponentProps<\"div\">) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: Imported from library\n <div\n className={cn(groupVariants({ orientation }), className)}\n data-orientation={orientation}\n data-slot=\"group\"\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n );\n}\n\nfunction GroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"relative inline-flex items-center whitespace-nowrap gap-2 rounded-lg border border-input bg-muted not-dark:bg-clip-padding px-[calc(--spacing(3)-1px)] text-muted-foreground text-base sm:text-sm shadow-xs/5 outline-none transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:bg-input/64 dark:before:shadow-[0_-1px_--theme(--color-white/6%)] [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 [&_svg]:-mx-0.5\",\n className,\n ),\n \"data-slot\": \"group-text\",\n };\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps(defaultProps, props),\n render,\n });\n}\n\nfunction GroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: {\n className?: string;\n} & React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n className={cn(\n \"[[data-slot=input-control]:focus-within+&,[data-slot=input-group]:focus-within+&,[data-slot=select-trigger]:focus-visible+*+&,[data-slot=number-field]:focus-within+input+&]:-translate-x-px pointer-events-none relative z-2 bg-input before:absolute before:inset-0 has-[+[data-slot=input-control]:focus-within,+[data-slot=input-group]:focus-within,+[data-slot=select-trigger]:focus-visible+*,+[data-slot=number-field]:focus-within]:translate-x-px has-[+[data-slot=input-control]:focus-within,+[data-slot=input-group]:focus-within,+[data-slot=select-trigger]:focus-visible+*,+[data-slot=number-field]:focus-within]:bg-ring dark:before:bg-input/32 [[data-slot=input-control]:focus-within+&,[data-slot=input-group]:focus-within+&,[data-slot=select-trigger]:focus-visible+*+&,[data-slot=number-field]:focus-within+&,[data-slot=number-field]:focus-within+input+&]:bg-ring\",\n className,\n )}\n orientation={orientation}\n {...props}\n />\n );\n}\n\nexport {\n Group,\n Group as ButtonGroup,\n GroupText,\n GroupText as ButtonGroupText,\n GroupSeparator,\n GroupSeparator as ButtonGroupSeparator,\n groupVariants,\n};\n","\"use client\";\n\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst TooltipCreateHandle = TooltipPrimitive.createHandle;\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nfunction TooltipTrigger(props: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipTitle({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) {\n return (\n <p\n data-slot=\"tooltip-title\"\n className={cn(\"font-medium leading-snug\", className)}\n {...props}\n />\n );\n}\n\nfunction TooltipDescription({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) {\n return (\n <p\n data-slot=\"tooltip-description\"\n className={cn(\"text-muted-foreground leading-snug\", className)}\n {...props}\n />\n );\n}\n\nfunction TooltipPopup({\n className,\n align = \"center\",\n sideOffset = 4,\n side = \"top\",\n arrow = false,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props & {\n align?: TooltipPrimitive.Positioner.Props[\"align\"];\n side?: TooltipPrimitive.Positioner.Props[\"side\"];\n sideOffset?: TooltipPrimitive.Positioner.Props[\"sideOffset\"];\n arrow?: boolean;\n}) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n className=\"z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom,transform] data-instant:transition-none\"\n data-slot=\"tooltip-positioner\"\n side={side}\n sideOffset={arrow ? (sideOffset as number) + 5 : sideOffset}\n >\n <TooltipPrimitive.Popup\n className={cn(\n \"relative flex h-(--popup-height,auto) w-(--popup-width,auto) origin-(--transform-origin) text-balance rounded-md border bg-popover not-dark:bg-clip-padding text-popover-foreground text-xs shadow-md/5 transition-[width,height,scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-md)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 data-instant:duration-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"tooltip-popup\"\n {...props}\n >\n <TooltipPrimitive.Viewport\n className=\"relative size-full overflow-clip px-(--viewport-inline-padding) py-1 [--viewport-inline-padding:--spacing(2)] data-instant:transition-none **:data-current:data-ending-style:opacity-0 **:data-current:data-starting-style:opacity-0 **:data-previous:data-ending-style:opacity-0 **:data-previous:data-starting-style:opacity-0 **:data-current:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-previous:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-previous:truncate **:data-current:opacity-100 **:data-previous:opacity-100 **:data-current:transition-opacity **:data-previous:transition-opacity\"\n data-slot=\"tooltip-viewport\"\n >\n {children}\n </TooltipPrimitive.Viewport>\n {arrow && (\n <TooltipPrimitive.Arrow\n data-slot=\"tooltip-arrow\"\n className=\"absolute block size-2.5 bg-popover data-[side=top]:[clip-path:polygon(0%_0%,100%_0%,50%_100%)] data-[side=bottom]:[clip-path:polygon(50%_0%,0%_100%,100%_100%)] data-[side=left]:[clip-path:polygon(0%_0%,100%_50%,0%_100%)] data-[side=right]:[clip-path:polygon(100%_0%,0%_50%,100%_100%)]\"\n />\n )}\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport {\n TooltipCreateHandle,\n TooltipProvider,\n Tooltip,\n TooltipTrigger,\n TooltipPopup,\n TooltipPopup as TooltipContent,\n TooltipTitle,\n TooltipDescription,\n};\n","\"use client\";\n\nimport { CircleHelp } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport {\n Tooltip,\n TooltipDescription,\n TooltipPopup,\n TooltipProvider,\n TooltipTitle,\n TooltipTrigger,\n} from \"./tooltip\";\n\nexport interface HelpTipProps {\n /** The help text shown in the tooltip. */\n children?: React.ReactNode;\n /** Optional bold heading rendered above the description text. */\n title?: React.ReactNode;\n /** Which side of the trigger the tooltip opens on. Default \"top\". */\n side?: React.ComponentProps<typeof TooltipPopup>[\"side\"];\n /** Alignment of the tooltip along the trigger. Default \"center\". */\n align?: React.ComponentProps<typeof TooltipPopup>[\"align\"];\n /** Accessible label for the icon button. Default \"More information\". */\n label?: string;\n /** Hover / focus open delay in ms. Default 150. */\n delay?: number;\n /** Icon size in px. Default 16. */\n iconSize?: number;\n /** Extra classes for the trigger button. */\n className?: string;\n /** Extra classes for the tooltip popup. */\n popupClassName?: string;\n /** Render the little arrow pointing at the icon. Default false. */\n arrow?: boolean;\n}\n\n/**\n * A small \"?\" help affordance: an unobtrusive circular icon that reveals\n * supporting text in a tooltip on hover / focus. Use it next to a label,\n * heading, or field when a short explanation would help but shouldn't take up\n * permanent space.\n *\n * ```tsx\n * <span className=\"flex items-center gap-1.5\">\n * My Events\n * <HelpTip>Every event Country Club has surfaced for you…</HelpTip>\n * </span>\n * ```\n */\nexport function HelpTip({\n children,\n title,\n side = \"top\",\n align = \"center\",\n label = \"More information\",\n delay = 150,\n iconSize = 16,\n className,\n popupClassName,\n arrow = false,\n}: HelpTipProps) {\n return (\n <TooltipProvider delay={delay}>\n <Tooltip>\n <TooltipTrigger\n aria-label={label}\n className={cn(\n \"inline-flex shrink-0 cursor-help items-center justify-center rounded-full text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring\",\n className,\n )}\n >\n <CircleHelp aria-hidden size={iconSize} />\n </TooltipTrigger>\n <TooltipPopup\n align={align}\n arrow={arrow}\n className={cn(\"max-w-64 [--viewport-inline-padding:--spacing(3)]\", popupClassName)}\n side={side}\n >\n {title ? (\n <div className=\"flex flex-col gap-0.5 py-0.5\">\n <TooltipTitle>{title}</TooltipTitle>\n <TooltipDescription className=\"text-popover-foreground\">{children}</TooltipDescription>\n </div>\n ) : (\n <div className=\"py-0.5 leading-snug\">{children}</div>\n )}\n </TooltipPopup>\n </Tooltip>\n </TooltipProvider>\n );\n}\n","\"use client\";\n\nimport { useRef } from \"react\";\n\n// biome-ignore lint/suspicious/noExplicitAny: Generic shinanigans\nfunction useCallbackRef<T extends (...args: Array<any>) => any>(fn: T): T {\n const fnRef = useRef(fn);\n fnRef.current = fn;\n\n // biome-ignore lint/suspicious/noExplicitAny: Generic shinanigans\n const ref = useRef((...args: Array<any>) => fnRef.current(...args));\n return ref.current as T;\n}\n\nexport default useCallbackRef;\n","\"use client\";\n\nimport { useCallback, useRef, useState } from \"react\";\n\nexport function useHover<T extends Element>({\n mounted = true,\n}: {\n mounted?: boolean;\n} = {}): readonly [(node: T | null) => void, boolean] {\n const [hovering, setHovering] = useState(false);\n const previousNode = useRef<T | null>(null);\n\n const [prevMounted, setPrevMounted] = useState(mounted);\n if (mounted !== prevMounted) {\n setPrevMounted(mounted);\n if (!mounted) {\n setHovering(false);\n }\n }\n\n const handleMouseEnter = useCallback(() => {\n setHovering(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovering(false);\n }, []);\n\n const customRef = useCallback<React.RefCallback<T>>(\n (node) => {\n if (previousNode.current?.nodeType === Node.ELEMENT_NODE) {\n previousNode.current.removeEventListener(\n \"mouseenter\",\n handleMouseEnter,\n );\n previousNode.current.removeEventListener(\n \"mouseleave\",\n handleMouseLeave,\n );\n }\n\n if (node?.nodeType === Node.ELEMENT_NODE) {\n node.addEventListener(\"mouseenter\", handleMouseEnter);\n node.addEventListener(\"mouseleave\", handleMouseLeave);\n }\n\n previousNode.current = node;\n },\n [handleMouseEnter, handleMouseLeave],\n );\n\n return [customRef, hovering] as const;\n}\n","\"use client\";\n\nimport { Transition } from \"@headlessui/react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport type React from \"react\";\nimport {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport useResizeObserver from \"use-resize-observer\";\nimport useCallbackRef from \"../../lib/hooks/use-callback-ref\";\nimport { useHover } from \"../../lib/hooks/use-hover\";\nimport { cn } from \"../../lib/utils/css\";\nimport type { AsChildProps } from \"../../types/helpers\";\n\ninterface HorizontalScrollFaderContextValue {\n isLeftOverflowing: boolean;\n isRightOverflowing: boolean;\n containerRef: React.RefObject<HTMLElement | null>;\n onScroll: () => void;\n}\n\nconst HorizontalScrollFaderContext =\n createContext<HorizontalScrollFaderContextValue>({\n isLeftOverflowing: false,\n isRightOverflowing: false,\n containerRef: { current: null },\n onScroll: () => {},\n });\n\nfunction HorizontalScrollFaderInner(\n { asChild, ...props }: AsChildProps<\"div\">,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const containerRef = useRef<HTMLElement>(null);\n\n const [isLeftOverflowing, setIsLeftOverflowing] = useState(false);\n const [isRightOverflowing, setIsRightOverflowing] = useState(false);\n\n const onScroll = useCallbackRef(() => {\n if (!containerRef.current) return;\n\n const { scrollLeft, scrollWidth, clientWidth } = containerRef.current;\n setIsLeftOverflowing(scrollLeft > 0);\n setIsRightOverflowing(scrollLeft + clientWidth < scrollWidth);\n });\n\n const contextValue = useMemo(\n () => ({ isLeftOverflowing, isRightOverflowing, containerRef, onScroll }),\n [isLeftOverflowing, isRightOverflowing, onScroll],\n );\n\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <HorizontalScrollFaderContext.Provider value={contextValue}>\n <Slot className=\"relative\" onScroll={onScroll}>\n <Comp ref={ref} {...props} />\n </Slot>\n </HorizontalScrollFaderContext.Provider>\n );\n}\n\nconst HorizontalScrollFader = forwardRef(HorizontalScrollFaderInner);\n\nfunction HorizontalScrollFaderContentInner(\n { asChild, ...props }: AsChildProps<\"div\">,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const Comp = asChild ? Slot : \"div\";\n const { isLeftOverflowing, isRightOverflowing, containerRef, onScroll } =\n useContext(HorizontalScrollFaderContext);\n\n useResizeObserver({\n ref: containerRef as React.RefObject<HTMLElement>,\n onResize: onScroll,\n });\n\n // A single horizontal mask gradient fades each edge over its fader size.\n // When an edge isn't overflowing its fader size is 0, so no fade shows.\n // Inline styles (with the -webkit- prefix for Safari) keep this independent\n // of Tailwind mask-utility emission.\n const maskImage = `linear-gradient(to right, transparent 0, #000 var(--left-fader-size), #000 calc(100% - var(--right-fader-size)), transparent 100%)`;\n\n return (\n <Slot\n onScroll={onScroll}\n className={cn(\n \"overflow-auto [transition:--left-fader-size_150ms,--right-fader-size_150ms] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n )}\n style={{\n \"--left-fader-size\": isLeftOverflowing ? \"3rem\" : \"0rem\",\n \"--right-fader-size\": isRightOverflowing ? \"3rem\" : \"0rem\",\n maskImage,\n WebkitMaskImage: maskImage,\n }}\n ref={containerRef}\n >\n <Comp ref={ref} {...props} />\n </Slot>\n );\n}\n\nconst HorizontalScrollFaderContent = forwardRef(\n HorizontalScrollFaderContentInner,\n);\n\nfunction HorizontalScrollFaderLeftScrollerInner(\n { asChild, ...props }: AsChildProps<\"button\">,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const Comp = asChild ? Slot : \"button\";\n const { containerRef, isLeftOverflowing } = useContext(\n HorizontalScrollFaderContext,\n );\n const onClick = useCallbackRef(() => {\n if (!containerRef.current) return;\n containerRef.current.scrollBy({\n left: -containerRef.current.clientWidth,\n behavior: \"smooth\",\n });\n });\n\n const [hoverRef, hovered] = useHover<HTMLElement>({\n mounted: isLeftOverflowing,\n });\n useEffect(() => {\n if (!hovered || !isLeftOverflowing) return;\n let stopped = false;\n let animationFrameId: number;\n let startTime: DOMHighResTimeStamp;\n\n const animate = (timestamp: DOMHighResTimeStamp) => {\n if (stopped) return;\n if (!startTime) startTime = timestamp;\n const elapsed = Math.min(timestamp - startTime, 2000);\n containerRef.current?.scrollBy({\n left: -Math.log2(elapsed + 1),\n });\n animationFrameId = requestAnimationFrame(animate);\n };\n animationFrameId = requestAnimationFrame(animate);\n\n return () => {\n stopped = true;\n cancelAnimationFrame(animationFrameId);\n };\n }, [hovered, isLeftOverflowing, containerRef.current?.scrollBy]);\n\n return (\n <Transition show={isLeftOverflowing}>\n <Slot onClick={onClick} ref={hoverRef}>\n <Comp {...(asChild ? {} : { type: \"button\" })} ref={ref} {...props} />\n </Slot>\n </Transition>\n );\n}\n\nconst HorizontalScrollFaderLeftScroller = forwardRef(\n HorizontalScrollFaderLeftScrollerInner,\n);\n\nfunction HorizontalScrollFaderRightScrollerInner(\n { asChild, ...props }: AsChildProps<\"button\">,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const Comp = asChild ? Slot : \"button\";\n const { containerRef, isRightOverflowing } = useContext(\n HorizontalScrollFaderContext,\n );\n const onClick = useCallbackRef(() => {\n if (!containerRef.current) return;\n containerRef.current.scrollBy({\n left: containerRef.current.clientWidth,\n behavior: \"smooth\",\n });\n });\n\n const [hoverRef, hovered] = useHover({\n mounted: isRightOverflowing,\n });\n useEffect(() => {\n if (!hovered || !isRightOverflowing) return;\n let stopped = false;\n let animationFrameId: number;\n let startTime: DOMHighResTimeStamp;\n\n const animate = (timestamp: DOMHighResTimeStamp) => {\n if (stopped) return;\n if (!startTime) startTime = timestamp;\n const elapsed = Math.min(timestamp - startTime, 2000);\n containerRef.current?.scrollBy({\n left: Math.log2(elapsed + 1),\n });\n animationFrameId = requestAnimationFrame(animate);\n };\n animationFrameId = requestAnimationFrame(animate);\n\n return () => {\n stopped = true;\n cancelAnimationFrame(animationFrameId);\n };\n }, [hovered, isRightOverflowing, containerRef.current?.scrollBy]);\n\n return (\n <Transition show={isRightOverflowing}>\n <Slot onClick={onClick} ref={hoverRef}>\n <Comp {...(asChild ? {} : { type: \"button\" })} ref={ref} {...props} />\n </Slot>\n </Transition>\n );\n}\n\nconst HorizontalScrollFaderRightScroller = forwardRef(\n HorizontalScrollFaderRightScrollerInner,\n);\n\nexport {\n HorizontalScrollFader,\n HorizontalScrollFaderContent,\n HorizontalScrollFaderLeftScroller,\n HorizontalScrollFaderRightScroller,\n};\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { OTPInput, OTPInputContext, REGEXP_ONLY_DIGITS } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ntype InputOTPProps = React.ComponentProps<typeof OTPInput>;\n\nfunction InputOTP({\n className,\n containerClassName,\n // Digits-only by default. Override `pattern`/`inputMode` to allow letters.\n inputMode = \"numeric\",\n pattern = REGEXP_ONLY_DIGITS,\n ...props\n}: InputOTPProps) {\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 inputMode={inputMode}\n pattern={pattern}\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\nconst inputOTPSlotVariants = cva(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex items-center justify-center border-y border-r shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n {\n variants: {\n size: {\n sm: \"h-8 w-8 text-xs\",\n default: \"h-9 w-9 text-sm\",\n lg: \"h-11 w-11 text-base\",\n },\n },\n defaultVariants: { size: \"default\" },\n },\n);\n\nfunction InputOTPSlot({\n index,\n className,\n size,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n} & VariantProps<typeof inputOTPSlotVariants>) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(inputOTPSlotVariants({ size }), className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n // biome-ignore lint/a11y/useFocusableInteractive lint/a11y/useSemanticElements lint/a11y/useAriaPropsForRole: Installed from shadcn\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Separator } from \"./separator\";\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"group/item-group flex flex-col\", className)}\n data-slot=\"item-group\"\n role=\"list\"\n {...props}\n />\n );\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n className={cn(\"my-0\", className)}\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n \"group/item flex flex-wrap items-center rounded-lg border border-transparent text-base outline-none transition-colors duration-100 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background sm:text-sm [a]:transition-colors [a]:hover:bg-accent/50\",\n {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n size: {\n default: \"gap-4 p-4\",\n sm: \"gap-2.5 px-4 py-3\",\n },\n variant: {\n default: \"bg-transparent\",\n muted: \"bg-muted/50\",\n outline:\n \"border-border bg-card not-dark:bg-clip-padding shadow-xs/5 dark:bg-input/32\",\n },\n },\n },\n);\n\ninterface ItemProps extends useRender.ComponentProps<\"div\"> {\n variant?: VariantProps<typeof itemVariants>[\"variant\"];\n size?: VariantProps<typeof itemVariants>[\"size\"];\n}\n\nfunction Item({ className, variant, size, render, ...props }: ItemProps) {\n const defaultProps = {\n className: cn(itemVariants({ className, size, variant })),\n \"data-size\": size ?? \"default\",\n \"data-slot\": \"item\",\n \"data-variant\": variant ?? \"default\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\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 defaultVariants: {\n variant: \"default\",\n },\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\",\n },\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 className={cn(itemMediaVariants({ className, variant }))}\n data-slot=\"item-media\"\n data-variant={variant}\n {...props}\n />\n );\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\",\n className,\n )}\n data-slot=\"item-content\"\n {...props}\n />\n );\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex w-fit items-center gap-2 font-medium leading-snug\",\n className,\n )}\n data-slot=\"item-title\"\n {...props}\n />\n );\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n className={cn(\n \"line-clamp-2 text-balance font-normal text-muted-foreground text-sm leading-normal sm:text-xs\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className,\n )}\n data-slot=\"item-description\"\n {...props}\n />\n );\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n data-slot=\"item-actions\"\n {...props}\n />\n );\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className,\n )}\n data-slot=\"item-header\"\n {...props}\n />\n );\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className,\n )}\n data-slot=\"item-footer\"\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 itemVariants,\n};\n","\"use client\";\n\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n className={cn(\n \"pointer-events-none inline-flex h-5 min-w-5 select-none items-center justify-center gap-1 rounded bg-muted px-1 font-medium font-sans text-muted-foreground text-xs [&_svg:not([class*='size-'])]:size-3\",\n className,\n )}\n data-slot=\"kbd\"\n {...props}\n />\n );\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n className={cn(\"inline-flex items-center gap-1\", className)}\n data-slot=\"kbd-group\"\n {...props}\n />\n );\n}\n\nexport { Kbd, KbdGroup };\n","\"use client\";\n\nimport type * as React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\nimport { cn } from \"../../lib/utils/css\";\n\n/** Common LaTeX command → readable-text replacements. */\nconst LATEX_SYMBOLS: Record<string, string> = {\n times: \"×\",\n cdot: \"·\",\n div: \"÷\",\n approx: \"≈\",\n neq: \"≠\",\n ne: \"≠\",\n leq: \"≤\",\n le: \"≤\",\n geq: \"≥\",\n ge: \"≥\",\n pm: \"±\",\n to: \"→\",\n rightarrow: \"→\",\n Rightarrow: \"⇒\",\n infty: \"∞\",\n cdots: \"⋯\",\n ldots: \"…\",\n deg: \"°\",\n};\n\n/** Wrap a fraction side in parens only when it holds an operator, so\n * `\\frac{116}{22}` → `116/22` but `\\frac{a+b}{2}` → `(a+b)/2`. */\nconst wrapFracSide = (x: string): string => {\n const t = x.trim();\n return /[+\\-*/×÷·\\s]/.test(t) ? `(${t})` : t;\n};\n\n/**\n * LLMs sometimes emit LaTeX math (`\\( \\frac{116}{22} \\times 100 \\approx 527\\% \\)`),\n * which react-markdown renders as raw gibberish. We don't ship a full math\n * engine (KaTeX + fonts) — assistant chat rarely needs typeset math — so this\n * downgrades the common LaTeX constructs to readable plain text instead. Plain\n * text with no backslash / `$` is returned untouched (fast path), and lone `$`\n * amounts like \"$100\" are left alone (only `$…$` containing a command unwraps).\n */\nfunction normalizeLatex(src: string): string {\n if (!src.includes(\"\\\\\") && !src.includes(\"$\")) return src;\n\n let s = src;\n\n // Unwrap math delimiters. `$$…$$` display + `\\(…\\)`/`\\[…\\]` inline always;\n // single `$…$` only when the body looks like math (has a backslash).\n s = s.replace(/\\$\\$([\\s\\S]*?)\\$\\$/g, \" $1 \");\n s = s.replace(/\\$([^$\\n]*\\\\[^$\\n]*)\\$/g, \" $1 \");\n s = s.replace(/\\\\[()[\\]]/g, \" \");\n\n // \\frac{a}{b} → a/b (a few passes for nesting), \\sqrt{x} → √(x).\n for (let i = 0; i < 3; i++) {\n const next = s.replace(\n /\\\\[dt]?frac\\s*\\{([^{}]*)\\}\\s*\\{([^{}]*)\\}/g,\n (_m, a: string, b: string) => `${wrapFracSide(a)}/${wrapFracSide(b)}`,\n );\n if (next === s) break;\n s = next;\n }\n s = s.replace(/\\\\sqrt\\s*\\{([^{}]*)\\}/g, \"√($1)\");\n s = s.replace(/\\\\(?:text|mathrm|mathbf|mathit|operatorname)\\s*\\{([^{}]*)\\}/g, \"$1\");\n\n // Known symbols → unicode; \\left/\\right dropped.\n s = s.replace(/\\\\([a-zA-Z]+)/g, (m, name: string) => LATEX_SYMBOLS[name] ?? m);\n s = s.replace(/\\\\(left|right)\\b/g, \"\");\n\n // Escaped chars (\\% \\$ \\_ \\{ …) and thin spaces (\\, \\; \\!).\n s = s.replace(/\\\\([%$&#_{}])/g, \"$1\");\n s = s.replace(/\\\\[,;:!]/g, \"\");\n s = s.replace(/\\\\ /g, \" \");\n\n // Any leftover unknown \\command → keep the word, drop the backslash.\n s = s.replace(/\\\\([a-zA-Z]+)/g, \"$1\");\n\n // Collapse grouping braces ({x} → x) and runs of spaces.\n for (let i = 0; i < 3; i++) {\n const next = s.replace(/\\{([^{}]*)\\}/g, \"$1\");\n if (next === s) break;\n s = next;\n }\n return s.replace(/[ \\t]{2,}/g, \" \");\n}\n\nexport interface MarkdownProps {\n /** The markdown source to render. */\n children: string;\n className?: string;\n}\n\n/**\n * Markdown renderer for assistant/chat content (GitHub-flavored markdown).\n * Raw HTML in the source is NOT rendered — output is limited to markdown\n * elements, which keeps untrusted model output safe to display.\n */\nfunction Markdown({ children, className }: MarkdownProps) {\n return (\n <div\n className={cn(\n \"space-y-2 break-words text-foreground text-sm leading-relaxed\",\n className,\n )}\n data-slot=\"markdown\"\n >\n <ReactMarkdown\n components={{\n a: ({ node: _node, ...props }) => (\n <a\n className=\"font-medium text-primary underline underline-offset-2 hover:opacity-80\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n {...props}\n />\n ),\n blockquote: ({ node: _node, ...props }) => (\n <blockquote\n className=\"border-border border-l-2 pl-3 text-muted-foreground italic\"\n {...props}\n />\n ),\n code: ({ node: _node, className: codeClassName, ...props }) => {\n const isBlock = /language-/.test(codeClassName ?? \"\");\n return (\n <code\n className={cn(\n \"rounded bg-muted font-mono text-[0.85em]\",\n isBlock ? \"block overflow-x-auto p-3\" : \"px-1 py-0.5\",\n codeClassName,\n )}\n {...props}\n />\n );\n },\n h1: ({ node: _node, ...props }) => (\n <h1 className=\"font-semibold text-base\" {...props} />\n ),\n h2: ({ node: _node, ...props }) => (\n <h2 className=\"font-semibold text-base\" {...props} />\n ),\n h3: ({ node: _node, ...props }) => (\n <h3 className=\"font-semibold text-sm\" {...props} />\n ),\n hr: ({ node: _node, ...props }) => (\n <hr className=\"border-border\" {...props} />\n ),\n li: ({ node: _node, ...props }) => <li className=\"my-0.5\" {...props} />,\n ol: ({ node: _node, ...props }) => (\n <ol className=\"list-decimal space-y-1 pl-5\" {...props} />\n ),\n pre: ({ node: _node, ...props }) => (\n <pre\n className=\"overflow-x-auto rounded-lg bg-muted p-0 text-[0.85em]\"\n {...props}\n />\n ),\n table: ({ node: _node, ...props }) => (\n <div className=\"overflow-x-auto rounded-lg border border-border\">\n <table className=\"w-full text-left text-sm\" {...props} />\n </div>\n ),\n td: ({ node: _node, ...props }) => (\n <td className=\"border-border border-t px-3 py-1.5 align-top\" {...props} />\n ),\n th: ({ node: _node, ...props }) => (\n <th\n className=\"bg-muted px-3 py-1.5 font-medium text-muted-foreground\"\n {...props}\n />\n ),\n ul: ({ node: _node, ...props }) => (\n <ul className=\"list-disc space-y-1 pl-5\" {...props} />\n ),\n }}\n remarkPlugins={[remarkGfm]}\n skipHtml\n >\n {normalizeLatex(children)}\n </ReactMarkdown>\n </div>\n );\n}\n\nexport { Markdown };\n","\"use client\";\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst MenuCreateHandle = MenuPrimitive.createHandle;\n\nconst Menu = MenuPrimitive.Root;\n\nconst MenuPortal = MenuPrimitive.Portal;\n\nfunction MenuTrigger(props: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"menu-trigger\" {...props} />;\n}\n\nfunction MenuPopup({\n children,\n className,\n sideOffset = 4,\n align = \"center\",\n alignOffset,\n side = \"bottom\",\n ...props\n}: MenuPrimitive.Popup.Props & {\n align?: MenuPrimitive.Positioner.Props[\"align\"];\n sideOffset?: MenuPrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: MenuPrimitive.Positioner.Props[\"alignOffset\"];\n side?: MenuPrimitive.Positioner.Props[\"side\"];\n}) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n className=\"z-50\"\n data-slot=\"menu-positioner\"\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n className={cn(\n \"relative flex not-[class*='w-']:min-w-32 origin-(--transform-origin) rounded-lg border bg-popover not-dark:bg-clip-padding shadow-lg/5 outline-none transition-[transform,scale,opacity] duration-150 ease-out before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] focus:outline-none data-ending-style:scale-95 data-ending-style:opacity-0 data-starting-style:scale-95 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"menu-popup\"\n {...props}\n >\n <div className=\"max-h-(--available-height) w-full overflow-y-auto p-1\">\n {children}\n </div>\n </MenuPrimitive.Popup>\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\n\nfunction MenuGroup(props: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"menu-group\" {...props} />;\n}\n\nfunction MenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenuPrimitive.Item\n className={cn(\n \"[&>svg]:-mx-0.5 flex min-h-8 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-base text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-inset:ps-8 data-[variant=destructive]:text-destructive-foreground data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&>svg:not([class*='opacity-'])]:opacity-80 [&>svg:not([class*='size-'])]:size-4.5 sm:[&>svg:not([class*='size-'])]:size-4 [&>svg]:pointer-events-none [&>svg]:shrink-0\",\n className,\n )}\n data-inset={inset}\n data-slot=\"menu-item\"\n data-variant={variant}\n {...props}\n />\n );\n}\n\nfunction MenuCheckboxItem({\n className,\n children,\n checked,\n variant = \"default\",\n ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n variant?: \"default\" | \"switch\";\n}) {\n return (\n <MenuPrimitive.CheckboxItem\n checked={checked}\n className={cn(\n \"grid min-h-8 in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] cursor-default items-center gap-2 rounded-sm py-1 ps-2 text-base text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n variant === \"switch\"\n ? \"grid-cols-[1fr_auto] gap-4 pe-1.5\"\n : \"grid-cols-[1rem_1fr] pe-4\",\n className,\n )}\n data-slot=\"menu-checkbox-item\"\n {...props}\n >\n {variant === \"switch\" ? (\n <>\n <span className=\"col-start-1\">{children}</span>\n <MenuPrimitive.CheckboxItemIndicator\n className=\"inset-shadow-[0_1px_--theme(--color-black/6%)] inline-flex h-[calc(var(--thumb-size)+2px)] w-[calc(var(--thumb-size)*2-2px)] shrink-0 items-center rounded-full p-px outline-none transition-[background-color,box-shadow] duration-200 [--thumb-size:--spacing(4)] focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-checked:bg-primary data-unchecked:bg-input data-disabled:opacity-64 sm:[--thumb-size:--spacing(3)]\"\n keepMounted\n >\n <span className=\"pointer-events-none block aspect-square h-full in-[[data-slot=menu-checkbox-item][data-checked]]:origin-[var(--thumb-size)_50%] origin-left in-[[data-slot=menu-checkbox-item][data-checked]]:translate-x-[calc(var(--thumb-size)-4px)] in-[[data-slot=menu-checkbox-item]:active]:not-data-disabled:scale-x-110 in-[[data-slot=menu-checkbox-item]:active]:rounded-[var(--thumb-size)/calc(var(--thumb-size)*1.10)] rounded-(--thumb-size) bg-background shadow-sm/5 will-change-transform [transition:translate_.15s,border-radius_.15s,scale_.1s_.1s,transform-origin_.15s]\" />\n </MenuPrimitive.CheckboxItemIndicator>\n </>\n ) : (\n <>\n <MenuPrimitive.CheckboxItemIndicator className=\"col-start-1\">\n <svg\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <title>Check</title>\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n </MenuPrimitive.CheckboxItemIndicator>\n <span className=\"col-start-2\">{children}</span>\n </>\n )}\n </MenuPrimitive.CheckboxItem>\n );\n}\n\nfunction MenuRadioGroup(props: MenuPrimitive.RadioGroup.Props) {\n return <MenuPrimitive.RadioGroup data-slot=\"menu-radio-group\" {...props} />;\n}\n\nfunction MenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n <MenuPrimitive.RadioItem\n className={cn(\n \"grid min-h-8 in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] cursor-default grid-cols-[1rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-base text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"menu-radio-item\"\n {...props}\n >\n <MenuPrimitive.RadioItemIndicator className=\"col-start-1\">\n <svg\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <title>Check</title>\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n </MenuPrimitive.RadioItemIndicator>\n <span className=\"col-start-2\">{children}</span>\n </MenuPrimitive.RadioItem>\n );\n}\n\nfunction MenuGroupLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.GroupLabel\n className={cn(\n \"px-2 py-1.5 font-medium text-muted-foreground text-xs data-inset:ps-9 sm:data-inset:ps-8\",\n className,\n )}\n data-inset={inset}\n data-slot=\"menu-label\"\n {...props}\n />\n );\n}\n\nfunction MenuSeparator({ className, ...props }: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n className={cn(\"mx-2 my-1 h-px bg-border\", className)}\n data-slot=\"menu-separator\"\n {...props}\n />\n );\n}\n\nfunction MenuShortcut({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n className={cn(\n \"ms-auto font-medium font-sans text-muted-foreground/72 text-xs tracking-widest\",\n className,\n )}\n data-slot=\"menu-shortcut\"\n {...props}\n />\n );\n}\n\nfunction MenuSub(props: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"menu-sub\" {...props} />;\n}\n\nfunction MenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n className={cn(\n \"flex min-h-8 items-center gap-2 rounded-sm px-2 py-1 text-base text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-popup-open:bg-accent data-inset:ps-8 data-highlighted:text-accent-foreground data-popup-open:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className,\n )}\n data-inset={inset}\n data-slot=\"menu-sub-trigger\"\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"-me-0.5 ms-auto opacity-80\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction MenuSubPopup({\n className,\n sideOffset = 0,\n alignOffset,\n align = \"start\",\n ...props\n}: MenuPrimitive.Popup.Props & {\n align?: MenuPrimitive.Positioner.Props[\"align\"];\n sideOffset?: MenuPrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: MenuPrimitive.Positioner.Props[\"alignOffset\"];\n}) {\n const defaultAlignOffset = align !== \"center\" ? -5 : undefined;\n\n return (\n <MenuPopup\n align={align}\n alignOffset={alignOffset ?? defaultAlignOffset}\n className={className}\n data-slot=\"menu-sub-content\"\n side=\"inline-end\"\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\n\nexport {\n MenuCreateHandle,\n MenuCreateHandle as DropdownMenuCreateHandle,\n Menu,\n Menu as DropdownMenu,\n MenuPortal,\n MenuPortal as DropdownMenuPortal,\n MenuTrigger,\n MenuTrigger as DropdownMenuTrigger,\n MenuPopup,\n MenuPopup as DropdownMenuContent,\n MenuGroup,\n MenuGroup as DropdownMenuGroup,\n MenuItem,\n MenuItem as DropdownMenuItem,\n MenuCheckboxItem,\n MenuCheckboxItem as DropdownMenuCheckboxItem,\n MenuRadioGroup,\n MenuRadioGroup as DropdownMenuRadioGroup,\n MenuRadioItem,\n MenuRadioItem as DropdownMenuRadioItem,\n MenuGroupLabel,\n MenuGroupLabel as DropdownMenuLabel,\n MenuSeparator,\n MenuSeparator as DropdownMenuSeparator,\n MenuShortcut,\n MenuShortcut as DropdownMenuShortcut,\n MenuSub,\n MenuSub as DropdownMenuSub,\n MenuSubTrigger,\n MenuSubTrigger as DropdownMenuSubTrigger,\n MenuSubPopup,\n MenuSubPopup as DropdownMenuSubContent,\n};\n","\"use client\";\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\nimport {\n Menubar as MenubarPrimitive,\n type MenubarProps,\n} from \"@base-ui/react/menubar\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport {\n Menu,\n MenuCheckboxItem,\n MenuGroup,\n MenuGroupLabel,\n MenuItem,\n MenuPopup,\n MenuPortal,\n MenuRadioGroup,\n MenuRadioItem,\n MenuSeparator,\n MenuShortcut,\n MenuSub,\n MenuSubPopup,\n MenuSubTrigger,\n} from \"./menu\";\n\nfunction Menubar({ className, ...props }: MenubarProps) {\n return (\n <MenubarPrimitive\n className={cn(\n \"flex h-9 w-fit items-center gap-1 rounded-lg border bg-background p-1 shadow-xs/5 sm:h-8 dark:bg-input/32\",\n className,\n )}\n data-slot=\"menubar\"\n {...props}\n />\n );\n}\n\nfunction MenubarMenu(props: MenuPrimitive.Root.Props) {\n return <Menu data-slot=\"menubar-menu\" {...props} />;\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: MenuPrimitive.Trigger.Props) {\n return (\n <MenuPrimitive.Trigger\n className={cn(\n \"flex select-none items-center rounded-md px-2 py-1 font-medium text-base outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-popup-open:bg-accent data-popup-open:text-accent-foreground sm:text-sm\",\n className,\n )}\n data-slot=\"menubar-trigger\"\n {...props}\n />\n );\n}\n\nfunction MenubarContent({\n align = \"start\",\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenuPopup>) {\n return (\n <MenuPopup\n align={align}\n data-slot=\"menubar-content\"\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenuPortal as MenubarPortal,\n MenuGroup as MenubarGroup,\n MenuItem as MenubarItem,\n MenuCheckboxItem as MenubarCheckboxItem,\n MenuRadioGroup as MenubarRadioGroup,\n MenuRadioItem as MenubarRadioItem,\n MenuGroupLabel as MenubarLabel,\n MenuSeparator as MenubarSeparator,\n MenuShortcut as MenubarShortcut,\n MenuSub as MenubarSub,\n MenuSubTrigger as MenubarSubTrigger,\n MenuSubPopup as MenubarSubContent,\n};\n","\"use client\";\n\nimport { Meter as MeterPrimitive } from \"@base-ui/react/meter\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Meter({ className, children, ...props }: MeterPrimitive.Root.Props) {\n return (\n <MeterPrimitive.Root\n className={cn(\"flex w-full flex-col gap-2\", className)}\n {...props}\n >\n {children ? (\n children\n ) : (\n <MeterTrack>\n <MeterIndicator />\n </MeterTrack>\n )}\n </MeterPrimitive.Root>\n );\n}\n\nfunction MeterLabel({ className, ...props }: MeterPrimitive.Label.Props) {\n return (\n <MeterPrimitive.Label\n className={cn(\"font-medium text-foreground text-sm\", className)}\n data-slot=\"meter-label\"\n {...props}\n />\n );\n}\n\nfunction MeterTrack({ className, ...props }: MeterPrimitive.Track.Props) {\n return (\n <MeterPrimitive.Track\n className={cn(\"block h-2 w-full overflow-hidden bg-input\", className)}\n data-slot=\"meter-track\"\n {...props}\n />\n );\n}\n\nfunction MeterIndicator({\n className,\n ...props\n}: MeterPrimitive.Indicator.Props) {\n return (\n <MeterPrimitive.Indicator\n className={cn(\"bg-primary transition-all duration-500\", className)}\n data-slot=\"meter-indicator\"\n {...props}\n />\n );\n}\n\nfunction MeterValue({ className, ...props }: MeterPrimitive.Value.Props) {\n return (\n <MeterPrimitive.Value\n className={cn(\"text-foreground text-sm tabular-nums\", className)}\n data-slot=\"meter-value\"\n {...props}\n />\n );\n}\n\nexport { Meter, MeterLabel, MeterTrack, MeterIndicator, MeterValue };\n","\"use client\";\n\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\nimport { ChevronsUpDownIcon, SearchIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Button } from \"./button\";\n\ninterface MultiSelectItem {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\ninterface MultiSelectProps {\n items: MultiSelectItem[];\n /** Controlled selected values. */\n value?: string[];\n /** Uncontrolled initial selected values. */\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n size?: \"sm\" | \"default\" | \"lg\";\n placeholder?: React.ReactNode;\n /** Extra context rendered next to the selected count, e.g. \"of 12 users\". */\n supportingText?: React.ReactNode;\n /** Formats the trigger text from the selected count. Defaults to `${count} selected`. */\n selectedCountFormatter?: (count: number) => React.ReactNode;\n showSearch?: boolean;\n searchPlaceholder?: string;\n showFooter?: boolean;\n selectAllLabel?: React.ReactNode;\n resetLabel?: React.ReactNode;\n emptyStateTitle?: React.ReactNode;\n emptyStateDescription?: React.ReactNode;\n disabled?: boolean;\n name?: string;\n required?: boolean;\n id?: string;\n /** Trigger class name. */\n className?: string;\n popupClassName?: string;\n sideOffset?: SelectPrimitive.Positioner.Props[\"sideOffset\"];\n}\n\nfunction MultiSelect({\n items,\n value: valueProp,\n defaultValue,\n onValueChange,\n size = \"default\",\n placeholder = \"Select options\",\n supportingText,\n selectedCountFormatter = (count) => `${count} selected`,\n showSearch = true,\n searchPlaceholder = \"Search\",\n showFooter = true,\n selectAllLabel = \"Select all\",\n resetLabel = \"Reset\",\n emptyStateTitle = \"No results found\",\n emptyStateDescription,\n disabled,\n name,\n required,\n id,\n className,\n popupClassName,\n sideOffset = 4,\n}: MultiSelectProps) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string[]>(\n defaultValue ?? [],\n );\n const [search, setSearch] = React.useState(\"\");\n\n const isControlled = valueProp !== undefined;\n const value = isControlled ? valueProp : uncontrolledValue;\n\n const setValue = (next: string[]) => {\n if (!isControlled) {\n setUncontrolledValue(next);\n }\n onValueChange?.(next);\n };\n\n const query = search.trim().toLowerCase();\n const filteredItems = query\n ? items.filter((item) => item.label.toLowerCase().includes(query))\n : items;\n\n const count = value.length;\n\n return (\n <SelectPrimitive.Root\n disabled={disabled}\n multiple\n name={name}\n onOpenChange={(open) => {\n if (!open) {\n setSearch(\"\");\n }\n }}\n onValueChange={(next) => setValue(next as string[])}\n required={required}\n value={value}\n >\n <SelectPrimitive.Trigger\n className={cn(\n \"relative inline-flex min-h-9 w-full min-w-36 select-none items-center justify-center gap-2 rounded-lg border border-input bg-background not-dark:bg-clip-padding px-[calc(--spacing(3)-1px)] text-left text-base text-foreground shadow-xs/5 outline-none ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-data-disabled:not-focus-visible:not-aria-invalid:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 focus-visible:border-ring focus-visible:ring-[3px] aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/16 data-disabled:pointer-events-none data-disabled:opacity-64 sm:min-h-8 sm:text-sm dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-focus-visible:not-aria-invalid:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0 [[data-disabled],:focus-visible,[aria-invalid],[data-pressed]]:shadow-none\",\n size === \"sm\" &&\n \"min-h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:min-h-7\",\n size === \"lg\" && \"min-h-10 sm:min-h-9\",\n className,\n )}\n data-slot=\"multi-select-trigger\"\n id={id}\n >\n <span className=\"flex flex-1 items-baseline gap-1.5 truncate\">\n {count > 0 ? (\n <>\n <span className=\"truncate\">{selectedCountFormatter(count)}</span>\n {supportingText ? (\n <span className=\"truncate font-normal text-muted-foreground\">\n {supportingText}\n </span>\n ) : null}\n </>\n ) : (\n <span className=\"truncate text-muted-foreground\">\n {placeholder}\n </span>\n )}\n </span>\n <SelectPrimitive.Icon data-slot=\"multi-select-icon\">\n <ChevronsUpDownIcon className=\"-me-1 size-4.5 opacity-80 sm:size-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n alignItemWithTrigger={false}\n className=\"z-50 select-none\"\n data-slot=\"multi-select-positioner\"\n sideOffset={sideOffset}\n >\n <SelectPrimitive.Popup\n className={cn(\n \"relative flex max-h-[min(var(--available-height),20rem)] w-(--anchor-width) min-w-48 max-w-(--available-width) origin-(--transform-origin) flex-col overflow-hidden rounded-lg border bg-popover not-dark:bg-clip-padding text-foreground shadow-lg/5 transition-[transform,scale,opacity] duration-150 ease-out before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-95 data-ending-style:opacity-0 data-starting-style:scale-95 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n popupClassName,\n )}\n data-slot=\"multi-select-popup\"\n >\n {showSearch ? (\n <MultiSelectSearch\n onChange={setSearch}\n placeholder={searchPlaceholder}\n value={search}\n />\n ) : null}\n <SelectPrimitive.List\n className=\"min-h-0 flex-1 overflow-y-auto p-1\"\n data-slot=\"multi-select-list\"\n >\n {filteredItems.map((item) => (\n <MultiSelectOption\n disabled={item.disabled}\n key={item.value}\n label={item.label}\n value={item.value}\n />\n ))}\n {filteredItems.length === 0 ? (\n <div\n className=\"flex flex-col items-center justify-center gap-0.5 px-4 py-6 text-center\"\n data-slot=\"multi-select-empty\"\n >\n <p className=\"font-medium text-foreground text-sm\">\n {emptyStateTitle}\n </p>\n {emptyStateDescription ? (\n <p className=\"text-muted-foreground text-sm\">\n {emptyStateDescription}\n </p>\n ) : null}\n </div>\n ) : null}\n </SelectPrimitive.List>\n {showFooter ? (\n <div\n className=\"flex items-center justify-between gap-1 border-t p-1\"\n data-slot=\"multi-select-footer\"\n >\n <Button\n onClick={() =>\n setValue(\n items\n .filter((item) => !item.disabled)\n .map((item) => item.value),\n )\n }\n size=\"xs\"\n variant=\"ghost\"\n >\n {selectAllLabel}\n </Button>\n <Button\n className=\"text-muted-foreground\"\n onClick={() => setValue([])}\n size=\"xs\"\n variant=\"ghost\"\n >\n {resetLabel}\n </Button>\n </div>\n ) : null}\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n );\n}\n\nfunction MultiSelectSearch({\n value,\n onChange,\n placeholder,\n}: {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n}) {\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Focus after Base UI's own initial focus management has run.\n React.useEffect(() => {\n const frame = requestAnimationFrame(() => inputRef.current?.focus());\n return () => cancelAnimationFrame(frame);\n }, []);\n\n return (\n <div\n className=\"flex shrink-0 items-center gap-2 border-b px-2.5\"\n data-slot=\"multi-select-search\"\n >\n <SearchIcon className=\"size-4.5 shrink-0 opacity-64 sm:size-4\" />\n <input\n className=\"h-9 min-w-0 flex-1 bg-transparent text-base text-foreground outline-none placeholder:text-muted-foreground sm:h-8 sm:text-sm\"\n onChange={(event) => onChange(event.target.value)}\n onKeyDown={(event) => {\n // Let list navigation keys bubble to Base UI; keep everything else\n // (printable characters, Space, Backspace…) from triggering the\n // select's typeahead while typing in the search box.\n if (\n event.key !== \"ArrowDown\" &&\n event.key !== \"ArrowUp\" &&\n event.key !== \"Enter\" &&\n event.key !== \"Escape\"\n ) {\n event.stopPropagation();\n }\n }}\n placeholder={placeholder}\n ref={inputRef}\n value={value}\n />\n </div>\n );\n}\n\nfunction MultiSelectOption({\n label,\n value,\n disabled,\n}: {\n label: string;\n value: string;\n disabled?: boolean;\n}) {\n return (\n <SelectPrimitive.Item\n className=\"grid min-h-8 cursor-default grid-cols-[1rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n data-slot=\"multi-select-item\"\n disabled={disabled}\n value={value}\n >\n <SelectPrimitive.ItemIndicator className=\"col-start-1\">\n {/** biome-ignore lint/a11y/noSvgWithoutTitle: Imported from library */}\n <svg\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/1500/svg\"\n >\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n </SelectPrimitive.ItemIndicator>\n <SelectPrimitive.ItemText className=\"col-start-2 min-w-0 truncate\">\n {label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nexport { MultiSelect };\nexport type { MultiSelectItem, MultiSelectProps };\n","\"use client\";\n\nimport { NavigationMenu as NavigationMenuPrimitive } from \"@base-ui/react/navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction NavigationMenu({\n className,\n children,\n ...props\n}: NavigationMenuPrimitive.Root.Props) {\n return (\n <NavigationMenuPrimitive.Root\n className={cn(\n \"relative flex max-w-max flex-1 items-center justify-center\",\n className,\n )}\n data-slot=\"navigation-menu\"\n {...props}\n >\n {children}\n <NavigationMenuPrimitive.Portal>\n <NavigationMenuPrimitive.Positioner\n className=\"z-50 box-border h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] before:absolute before:content-['']\"\n collisionAvoidance={{ side: \"none\" }}\n collisionPadding={{ top: 5, bottom: 5, left: 20, right: 20 }}\n data-slot=\"navigation-menu-positioner\"\n sideOffset={8}\n >\n <NavigationMenuPrimitive.Popup\n className=\"relative h-(--popup-height) w-full min-w-32 origin-(--transform-origin) rounded-lg border bg-popover not-dark:bg-clip-padding text-popover-foreground shadow-lg/5 outline-none transition-[opacity,transform,width,height,scale,translate] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-95 data-ending-style:opacity-0 data-starting-style:scale-95 data-starting-style:opacity-0 sm:w-(--popup-width) dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\"\n data-slot=\"navigation-menu-popup\"\n >\n <NavigationMenuPrimitive.Viewport\n className=\"relative h-full w-full overflow-hidden\"\n data-slot=\"navigation-menu-viewport\"\n />\n </NavigationMenuPrimitive.Popup>\n </NavigationMenuPrimitive.Positioner>\n </NavigationMenuPrimitive.Portal>\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className,\n )}\n data-slot=\"navigation-menu-list\"\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n className={cn(\"relative\", className)}\n data-slot=\"navigation-menu-item\"\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max cursor-pointer select-none items-center justify-center gap-1 rounded-lg bg-transparent px-3 py-2 font-medium text-base outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-popup-open:bg-accent/50 data-popup-open:text-accent-foreground disabled:pointer-events-none disabled:opacity-64 sm:h-8 sm:text-sm\",\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: NavigationMenuPrimitive.Trigger.Props) {\n return (\n <NavigationMenuPrimitive.Trigger\n className={cn(navigationMenuTriggerStyle(), className)}\n data-slot=\"navigation-menu-trigger\"\n {...props}\n >\n {children}\n <NavigationMenuPrimitive.Icon\n className=\"relative top-px transition-transform duration-300 ease-in-out group-data-popup-open:rotate-180\"\n data-slot=\"navigation-menu-icon\"\n >\n <ChevronDownIcon className=\"size-3.5 opacity-80\" />\n </NavigationMenuPrimitive.Icon>\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: NavigationMenuPrimitive.Content.Props) {\n return (\n <NavigationMenuPrimitive.Content\n className={cn(\n \"h-full w-max p-2 transition-[opacity,translate,transform] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-ending-style:opacity-0 data-starting-style:opacity-0 data-[activation-direction=left]:data-ending-style:translate-x-[50%] data-[activation-direction=left]:data-starting-style:translate-x-[-50%] data-[activation-direction=right]:data-ending-style:translate-x-[-50%] data-[activation-direction=right]:data-starting-style:translate-x-[50%]\",\n className,\n )}\n data-slot=\"navigation-menu-content\"\n {...props}\n />\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: NavigationMenuPrimitive.Link.Props) {\n return (\n <NavigationMenuPrimitive.Link\n className={cn(\n \"flex cursor-pointer flex-col gap-1 rounded-md p-2 text-base no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background sm:text-sm [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n data-slot=\"navigation-menu-link\"\n {...props}\n />\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuTrigger,\n NavigationMenuContent,\n NavigationMenuLink,\n navigationMenuTriggerStyle,\n};\n","\"use client\";\n\nimport { PreviewCard as PreviewCardPrimitive } from \"@base-ui/react/preview-card\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst PreviewCard = PreviewCardPrimitive.Root;\n\nfunction PreviewCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\n return (\n <PreviewCardPrimitive.Trigger data-slot=\"preview-card-trigger\" {...props} />\n );\n}\n\nfunction PreviewCardPopup({\n className,\n children,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: PreviewCardPrimitive.Popup.Props & {\n align?: PreviewCardPrimitive.Positioner.Props[\"align\"];\n sideOffset?: PreviewCardPrimitive.Positioner.Props[\"sideOffset\"];\n}) {\n return (\n <PreviewCardPrimitive.Portal>\n <PreviewCardPrimitive.Positioner\n align={align}\n className=\"z-50\"\n data-slot=\"preview-card-positioner\"\n sideOffset={sideOffset}\n >\n <PreviewCardPrimitive.Popup\n className={cn(\n \"relative flex w-64 origin-(--transform-origin) text-balance rounded-lg border bg-popover not-dark:bg-clip-padding p-4 text-popover-foreground text-sm shadow-lg/5 transition-[scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"preview-card-content\"\n {...props}\n >\n {children}\n </PreviewCardPrimitive.Popup>\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n );\n}\n\nexport {\n PreviewCard,\n PreviewCard as HoverCard,\n PreviewCardTrigger,\n PreviewCardTrigger as HoverCardTrigger,\n PreviewCardPopup,\n PreviewCardPopup as HoverCardContent,\n};\n","\"use client\";\n\nimport { Progress as ProgressPrimitive } from \"@base-ui/react/progress\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Progress({\n className,\n children,\n ...props\n}: ProgressPrimitive.Root.Props) {\n return (\n <ProgressPrimitive.Root\n className={cn(\"flex w-full flex-col gap-2\", className)}\n data-slot=\"progress\"\n {...props}\n >\n {children ? (\n children\n ) : (\n <ProgressTrack>\n <ProgressIndicator />\n </ProgressTrack>\n )}\n </ProgressPrimitive.Root>\n );\n}\n\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\n return (\n <ProgressPrimitive.Label\n className={cn(\"font-medium text-sm\", className)}\n data-slot=\"progress-label\"\n {...props}\n />\n );\n}\n\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\n return (\n <ProgressPrimitive.Track\n className={cn(\n \"block h-1.5 w-full overflow-hidden rounded-full bg-input\",\n className,\n )}\n data-slot=\"progress-track\"\n {...props}\n />\n );\n}\n\nfunction ProgressIndicator({\n className,\n ...props\n}: ProgressPrimitive.Indicator.Props) {\n return (\n <ProgressPrimitive.Indicator\n className={cn(\"bg-primary transition-all duration-500\", className)}\n data-slot=\"progress-indicator\"\n {...props}\n />\n );\n}\n\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\n return (\n <ProgressPrimitive.Value\n className={cn(\"text-sm tabular-nums\", className)}\n data-slot=\"progress-value\"\n {...props}\n />\n );\n}\n\n/**\n * A tooltip-like value bubble that floats above or below the track,\n * following the progress percentage. Render it next to a ProgressTrack\n * inside a `relative` wrapper.\n */\nfunction ProgressFloatingValue({\n className,\n side = \"top\",\n value,\n max = 100,\n children,\n style,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"top\" | \"bottom\";\n value: number;\n max?: number;\n}) {\n const percent = Math.min(100, Math.max(0, (value / max) * 100));\n return (\n <div\n className={cn(\n \"absolute -translate-x-1/2 transition-[left] duration-500\",\n side === \"top\" ? \"bottom-full mb-2\" : \"top-full mt-2\",\n className,\n )}\n data-side={side}\n data-slot=\"progress-floating-value\"\n style={{\n left: `clamp(1.25rem, ${percent}%, calc(100% - 1.25rem))`,\n ...style,\n }}\n {...props}\n >\n <div className=\"rounded-md border bg-popover px-2 py-1 font-semibold text-popover-foreground text-xs tabular-nums shadow-md/5\">\n {children ?? `${Math.round(percent)}%`}\n </div>\n </div>\n );\n}\n\nconst progressCircleSizes = {\n sm: { label: \"text-[0.625rem]\", px: 64, stroke: 6, value: \"text-sm\" },\n md: { label: \"text-xs\", px: 120, stroke: 10, value: \"text-2xl\" },\n lg: { label: \"text-sm\", px: 160, stroke: 12, value: \"text-3xl\" },\n} as const;\n\ntype ProgressCircleSize = keyof typeof progressCircleSizes;\n\ninterface ProgressCircleProps extends ProgressPrimitive.Root.Props {\n size?: ProgressCircleSize;\n /** A short caption rendered above the value, inside the circle. */\n label?: React.ReactNode;\n /** Hide the centered percentage. */\n showValue?: boolean;\n}\n\n/** A circular progress ring with an optional centered value and label. */\nfunction ProgressCircle({\n className,\n size = \"md\",\n label,\n showValue = true,\n value,\n max = 100,\n ...props\n}: ProgressCircleProps) {\n const { px, stroke, value: valueClass, label: labelClass } =\n progressCircleSizes[size];\n const radius = (px - stroke) / 2;\n const percent = Math.min(100, Math.max(0, ((value ?? 0) / max) * 100));\n\n return (\n <ProgressPrimitive.Root\n className={cn(\n \"relative inline-flex items-center justify-center\",\n className,\n )}\n data-slot=\"progress-circle\"\n max={max}\n value={value}\n {...props}\n >\n <svg\n className=\"-rotate-90\"\n fill=\"none\"\n height={px}\n viewBox={`0 0 ${px} ${px}`}\n width={px}\n >\n <circle\n className=\"text-input\"\n cx={px / 2}\n cy={px / 2}\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={stroke}\n />\n <circle\n className=\"text-primary transition-[stroke-dashoffset] duration-500\"\n cx={px / 2}\n cy={px / 2}\n pathLength={100}\n r={radius}\n stroke=\"currentColor\"\n strokeDasharray={100}\n strokeDashoffset={100 - percent}\n strokeLinecap=\"round\"\n strokeWidth={stroke}\n />\n </svg>\n {showValue || label ? (\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\n {label ? (\n <span className={cn(\"text-muted-foreground\", labelClass)}>\n {label}\n </span>\n ) : null}\n {showValue ? (\n <ProgressPrimitive.Value\n className={cn(\n \"font-semibold text-foreground tabular-nums\",\n valueClass,\n )}\n data-slot=\"progress-circle-value\"\n />\n ) : null}\n </div>\n ) : null}\n </ProgressPrimitive.Root>\n );\n}\n\n/** A half-circle (gauge) progress arc with an optional value and label. */\nfunction ProgressHalfCircle({\n className,\n size = \"md\",\n label,\n showValue = true,\n value,\n max = 100,\n ...props\n}: ProgressCircleProps) {\n const { px, stroke, value: valueClass, label: labelClass } =\n progressCircleSizes[size];\n const radius = (px - stroke) / 2;\n const height = px / 2 + stroke / 2;\n const arc = `M ${stroke / 2} ${px / 2} A ${radius} ${radius} 0 0 1 ${px - stroke / 2} ${px / 2}`;\n const percent = Math.min(100, Math.max(0, ((value ?? 0) / max) * 100));\n\n return (\n <ProgressPrimitive.Root\n className={cn(\"relative inline-flex justify-center\", className)}\n data-slot=\"progress-half-circle\"\n max={max}\n value={value}\n {...props}\n >\n <svg\n fill=\"none\"\n height={height}\n viewBox={`0 0 ${px} ${height}`}\n width={px}\n >\n <path\n className=\"text-input\"\n d={arc}\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={stroke}\n />\n <path\n className=\"text-primary transition-[stroke-dashoffset] duration-500\"\n d={arc}\n pathLength={100}\n stroke=\"currentColor\"\n strokeDasharray={100}\n strokeDashoffset={100 - percent}\n strokeLinecap=\"round\"\n strokeWidth={stroke}\n />\n </svg>\n {showValue || label ? (\n <div className=\"absolute inset-x-0 bottom-0 flex flex-col items-center\">\n {label ? (\n <span className={cn(\"text-muted-foreground\", labelClass)}>\n {label}\n </span>\n ) : null}\n {showValue ? (\n <ProgressPrimitive.Value\n className={cn(\n \"font-semibold text-foreground tabular-nums\",\n valueClass,\n )}\n data-slot=\"progress-half-circle-value\"\n />\n ) : null}\n </div>\n ) : null}\n </ProgressPrimitive.Root>\n );\n}\n\nexport {\n Progress,\n ProgressLabel,\n ProgressTrack,\n ProgressIndicator,\n ProgressValue,\n ProgressFloatingValue,\n ProgressCircle,\n ProgressHalfCircle,\n};\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type { Options as QRCodeStylingOptions } from \"qr-code-styling\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst qrCodeVariants = cva(\n \"relative inline-flex shrink-0 items-center justify-center text-foreground [&_canvas]:size-full [&_svg]:size-full\",\n {\n defaultVariants: { size: \"md\" },\n variants: {\n size: {\n sm: \"size-24\",\n md: \"size-40\",\n lg: \"size-60\",\n },\n },\n },\n);\n\ninterface QRCodeProps\n extends Omit<React.ComponentProps<\"div\">, \"children\">,\n VariantProps<typeof qrCodeVariants> {\n /** The text or URL encoded in the QR code. */\n value: string;\n /**\n * Extra qr-code-styling options merged over the themed defaults — e.g. a\n * center image, custom dot colors or shapes. See the qr-code-styling docs.\n */\n options?: Partial<QRCodeStylingOptions>;\n}\n\n/**\n * A themeable QR code rendered with qr-code-styling. Dots follow the\n * foreground color (and re-tint when the theme flips) unless overridden\n * via `options`.\n */\nfunction QRCode({ className, size, value, options, ...props }: QRCodeProps) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n let disposed = false;\n let observer: MutationObserver | undefined;\n\n const {\n dotsOptions,\n cornersSquareOptions,\n cornersDotOptions,\n imageOptions,\n ...rest\n } = options ?? {};\n\n // The container's computed color is the resolved foreground token, so the\n // code stays on-theme without hard-coding hex values.\n const themedShapes = () => {\n const color = getComputedStyle(container).color;\n return {\n cornersDotOptions: { color, ...cornersDotOptions },\n cornersSquareOptions: {\n color,\n type: \"extra-rounded\" as const,\n ...cornersSquareOptions,\n },\n dotsOptions: { color, type: \"rounded\" as const, ...dotsOptions },\n };\n };\n\n // qr-code-styling touches the DOM at import time, so load it lazily to\n // keep the component SSR-safe.\n import(\"qr-code-styling\").then(({ default: QRCodeStyling }) => {\n if (disposed) return;\n const edge = container.clientWidth || 160;\n const qr = new QRCodeStyling({\n backgroundOptions: { color: \"transparent\" },\n data: value,\n height: edge,\n imageOptions: {\n crossOrigin: \"anonymous\",\n imageSize: 0.4,\n margin: 4,\n ...imageOptions,\n },\n margin: 0,\n qrOptions: { errorCorrectionLevel: \"Q\" },\n type: \"svg\",\n width: edge,\n ...themedShapes(),\n ...rest,\n });\n container.replaceChildren();\n qr.append(container);\n\n observer = new MutationObserver(() => qr.update(themedShapes()));\n observer.observe(document.documentElement, {\n attributeFilter: [\"data-theme\", \"class\"],\n attributes: true,\n });\n });\n\n return () => {\n disposed = true;\n observer?.disconnect();\n container.replaceChildren();\n };\n }, [value, size, options]);\n\n return (\n <div\n aria-label={`QR code for ${value}`}\n className={cn(qrCodeVariants({ size }), className)}\n data-slot=\"qr-code\"\n ref={containerRef}\n role=\"img\"\n {...props}\n />\n );\n}\n\n/**\n * An animated scan-line overlay for a QR code. Render it inside a `relative`\n * wrapper around the `<QRCode />`.\n */\nfunction QRCodeGradientScan({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\n \"pointer-events-none absolute inset-0 overflow-hidden rounded-lg\",\n className,\n )}\n data-slot=\"qr-code-gradient-scan\"\n {...props}\n >\n <div className=\"absolute inset-x-0 top-0 h-1/2 animate-qr-scan will-change-transform\">\n <div className=\"absolute inset-0 bg-gradient-to-b from-transparent via-brand/20 to-transparent\" />\n <div className=\"absolute inset-x-0 top-1/2 h-px bg-brand/80 shadow-[0_0_10px_1px_var(--brand)]\" />\n </div>\n </div>\n );\n}\n\nexport { QRCode, QRCodeGradientScan, qrCodeVariants };\n","\"use client\";\n\nimport { Radio as RadioPrimitive } from \"@base-ui/react/radio\";\nimport { RadioGroup as RadioGroupPrimitive } from \"@base-ui/react/radio-group\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\n return (\n <RadioGroupPrimitive\n className={cn(\"flex flex-col gap-3\", className)}\n data-slot=\"radio-group\"\n {...props}\n />\n );\n}\n\nconst radioSizes = {\n sm: {\n box: \"size-4.5 sm:size-4\",\n indicator: \"size-4.5 sm:size-4\",\n dot: \"before:size-2 sm:before:size-1.5\",\n check: \"size-3.5 sm:size-3\",\n },\n md: {\n box: \"size-5\",\n indicator: \"size-5\",\n dot: \"before:size-2\",\n check: \"size-4\",\n },\n} as const;\n\ninterface RadioProps extends RadioPrimitive.Root.Props {\n /** Visual size of the radio. Defaults to \"sm\". */\n size?: keyof typeof radioSizes;\n /** Indicator style: the classic dot or a checkbox-style tick. Defaults to \"dot\". */\n variant?: \"dot\" | \"check\";\n}\n\nfunction Radio({\n className,\n size = \"sm\",\n variant = \"dot\",\n ...props\n}: RadioProps) {\n const sizes = radioSizes[size];\n return (\n <RadioPrimitive.Root\n className={cn(\n \"relative inline-flex shrink-0 items-center justify-center border border-input bg-background not-dark:bg-clip-padding shadow-xs/5 outline-none transition-shadow before:pointer-events-none before:absolute before:inset-0 not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/6%)] focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/48 data-disabled:opacity-64 dark:not-data-checked:bg-input/32 dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)] [[data-disabled],[data-checked],[aria-invalid]]:shadow-none\",\n variant === \"check\"\n ? \"rounded-[4px] before:rounded-[3px]\"\n : \"rounded-full before:rounded-full\",\n sizes.box,\n className,\n )}\n data-slot=\"radio\"\n {...props}\n >\n {variant === \"check\" ? (\n <RadioPrimitive.Indicator\n className=\"-inset-px absolute flex items-center justify-center rounded-[4px] text-primary-foreground transition-opacity duration-150 ease-out data-checked:bg-primary data-checked:opacity-100 data-unchecked:opacity-0\"\n data-slot=\"radio-indicator\"\n keepMounted\n >\n {/* biome-ignore lint/a11y/noSvgWithoutTitle: decorative indicator */}\n <svg\n className={sizes.check}\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Same draw-in motion as the Checkbox: the tick strokes itself in\n a beat after the fill fades in. */}\n <path\n className=\"[stroke-dasharray:1] [stroke-dashoffset:1] [transition:stroke-dashoffset_250ms_cubic-bezier(0.65,0,0.35,1)_110ms] in-[[data-checked]]:[stroke-dashoffset:0]\"\n d=\"M5.252 12.7 10.2 18.63 18.748 5.37\"\n pathLength={1}\n />\n </svg>\n </RadioPrimitive.Indicator>\n ) : (\n <RadioPrimitive.Indicator\n className={cn(\n \"-inset-px absolute flex origin-center items-center justify-center rounded-full transition-[background-color,box-shadow] duration-150 ease-out before:rounded-full before:bg-primary-foreground before:transition-[transform,opacity] before:duration-200 before:ease-[cubic-bezier(0.34,1.56,0.64,1)] data-checked:bg-primary data-checked:before:scale-100 data-checked:before:opacity-100 data-unchecked:before:scale-0 data-unchecked:before:opacity-0\",\n sizes.indicator,\n sizes.dot,\n )}\n data-slot=\"radio-indicator\"\n keepMounted\n />\n )}\n </RadioPrimitive.Root>\n );\n}\n\nexport { RadioGroup, Radio, Radio as RadioGroupItem };\n","\"use client\";\n\nimport { GripVerticalIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className,\n )}\n data-slot=\"resizable-panel-group\"\n {...props}\n />\n );\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\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:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className,\n )}\n data-slot=\"resizable-handle\"\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.PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"../../lib/utils/css\";\nimport type { AsChildProps } from \"../../types/helpers\";\n\nconst scrollerClassName =\n \"absolute top-1/2 z-10 -translate-y-1/2 data-closed:opacity-0\";\n\nconst LeftScroller = ({\n className,\n asChild,\n ...props\n}: AsChildProps<\"button\">) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n {...(asChild ? {} : { type: \"button\" })}\n className={cn(scrollerClassName, \"left-0\", className)}\n {...props}\n />\n );\n};\n\nconst RightScroller = ({\n className,\n asChild,\n ...props\n}: AsChildProps<\"button\">) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n {...(asChild ? {} : { type: \"button\" })}\n className={cn(scrollerClassName, \"right-0\", className)}\n {...props}\n />\n );\n};\n\nexport { LeftScroller, RightScroller };\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst sectionHeaderTitleVariants = cva(\n \"min-w-0 font-semibold text-foreground tracking-tight\",\n {\n defaultVariants: { size: \"default\" },\n variants: {\n size: {\n sm: \"text-sm\",\n default: \"text-base\",\n lg: \"text-lg\",\n },\n },\n },\n);\n\nconst sectionHeaderDescriptionVariants = cva(\n \"text-muted-foreground leading-relaxed\",\n {\n defaultVariants: { size: \"default\" },\n variants: {\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n lg: \"text-sm\",\n },\n },\n },\n);\n\ninterface SectionHeaderProps\n extends Omit<React.ComponentProps<\"div\">, \"title\">,\n VariantProps<typeof sectionHeaderTitleVariants> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n /** Right-aligned actions (buttons, counts, menus). */\n actions?: React.ReactNode;\n /** A leading node — e.g. a `<FeaturedIcon />` or a count badge. */\n icon?: React.ReactNode;\n /** Adds a bottom hairline + padding, so the header sits above a list/grid. */\n border?: boolean;\n}\n\n/**\n * A titled section heading: title + optional description on the left, optional\n * actions on the right, with an optional leading icon. One altitude below the\n * page-level `DashboardHeader` — use it to introduce a card body, a list, or a\n * settings group.\n */\nfunction SectionHeader({\n className,\n title,\n description,\n actions,\n icon,\n size,\n border,\n children,\n ...props\n}: SectionHeaderProps) {\n return (\n <div\n className={cn(\n \"flex items-start justify-between gap-3\",\n border && \"border-b pb-4\",\n className,\n )}\n data-slot=\"section-header\"\n {...props}\n >\n <div className=\"flex min-w-0 items-start gap-3\">\n {icon ? (\n <div className=\"shrink-0\" data-slot=\"section-header-icon\">\n {icon}\n </div>\n ) : null}\n <div className=\"min-w-0 space-y-0.5\">\n {title ? (\n <div\n className={cn(sectionHeaderTitleVariants({ size }))}\n data-slot=\"section-header-title\"\n >\n {title}\n </div>\n ) : null}\n {description ? (\n <p\n className={cn(sectionHeaderDescriptionVariants({ size }))}\n data-slot=\"section-header-description\"\n >\n {description}\n </p>\n ) : null}\n {children}\n </div>\n </div>\n {actions ? (\n <div\n className=\"flex shrink-0 items-center gap-2\"\n data-slot=\"section-header-actions\"\n >\n {actions}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport {\n SectionHeader,\n sectionHeaderTitleVariants,\n sectionHeaderDescriptionVariants,\n};\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst socialButtonVariants = cva(\n \"relative inline-flex h-10 shrink-0 cursor-pointer items-center justify-center gap-2.5 whitespace-nowrap rounded-lg border font-medium text-base outline-none transition-[box-shadow,filter] duration-100 sm:h-9 sm:text-sm [:active:not(:disabled)]:brightness-95 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 [&_svg]:pointer-events-none [&_svg]:size-5 [&_svg]:shrink-0 sm:[&_svg]:size-4.5\",\n {\n defaultVariants: {\n iconOnly: false,\n theme: \"brand\",\n },\n variants: {\n iconOnly: {\n false: \"px-[calc(--spacing(4)-1px)]\",\n true: \"w-10 px-0 sm:w-9\",\n },\n theme: {\n // Filled with the provider's brand color (set per provider below).\n brand:\n \"not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] shadow-xs [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none\",\n // Outline surface with the provider's full-color logo.\n color:\n \"border-input bg-popover not-dark:bg-clip-padding text-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-accent/50 dark:[:hover,[data-pressed]]:bg-input/64\",\n // Neutral tonal surface with a monochrome logo.\n gray: \"border-transparent bg-secondary text-secondary-foreground [:active,[data-pressed]]:bg-secondary/80 [:hover,[data-pressed]]:bg-secondary/90\",\n },\n provider: {\n apple: \"\",\n dribbble: \"\",\n facebook: \"\",\n figma: \"\",\n google: \"\",\n twitter: \"\",\n },\n },\n compoundVariants: [\n {\n provider: \"google\",\n theme: \"brand\",\n className:\n \"border-[#4285F4] bg-[#4285F4] text-white shadow-[#4285F4]/24 [:hover,[data-pressed]]:bg-[#4285F4]/90\",\n },\n {\n provider: \"facebook\",\n theme: \"brand\",\n className:\n \"border-[#1877F2] bg-[#1877F2] text-white shadow-[#1877F2]/24 [:hover,[data-pressed]]:bg-[#1877F2]/90\",\n },\n {\n provider: \"dribbble\",\n theme: \"brand\",\n className:\n \"border-[#EA4C89] bg-[#EA4C89] text-white shadow-[#EA4C89]/24 [:hover,[data-pressed]]:bg-[#EA4C89]/90\",\n },\n // Black-brand providers invert in dark mode so they stay visible.\n ...[\"apple\", \"twitter\", \"figma\"].map((provider) => ({\n provider: provider as SocialButtonProvider,\n theme: \"brand\" as const,\n className:\n \"border-black bg-black text-white shadow-black/24 [:hover,[data-pressed]]:bg-black/90 dark:border-white dark:bg-white dark:text-black dark:shadow-white/8 dark:not-disabled:inset-shadow-none dark:[:hover,[data-pressed]]:bg-white/90\",\n })),\n ],\n },\n);\n\ninterface SocialLogoProps extends React.ComponentProps<\"svg\"> {\n /** Render the provider's full-color logo instead of currentColor. */\n colored?: boolean;\n}\n\nfunction GoogleLogoIcon({ colored, ...props }: SocialLogoProps) {\n return (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M23.52 12.273c0-.851-.076-1.67-.218-2.455H12v4.642h6.458a5.52 5.52 0 0 1-2.394 3.622v3.01h3.878c2.269-2.088 3.578-5.165 3.578-8.819Z\"\n fill={colored ? \"#4285F4\" : \"currentColor\"}\n />\n <path\n d=\"M12 24c3.24 0 5.957-1.075 7.942-2.907l-3.878-3.011c-1.075.72-2.45 1.145-4.064 1.145-3.125 0-5.77-2.11-6.715-4.947H1.276v3.11A11.995 11.995 0 0 0 12 24Z\"\n fill={colored ? \"#34A853\" : \"currentColor\"}\n />\n <path\n d=\"M5.285 14.28A7.213 7.213 0 0 1 4.91 12c0-.79.136-1.56.376-2.28V6.61H1.276a11.995 11.995 0 0 0 0 10.78l4.009-3.11Z\"\n fill={colored ? \"#FBBC05\" : \"currentColor\"}\n />\n <path\n d=\"M12 4.773c1.762 0 3.344.605 4.587 1.794l3.442-3.442C17.952 1.19 15.235 0 12 0A11.995 11.995 0 0 0 1.276 6.61l4.01 3.11C6.228 6.884 8.874 4.773 12 4.773Z\"\n fill={colored ? \"#EA4335\" : \"currentColor\"}\n />\n </svg>\n );\n}\n\nfunction FacebookLogoIcon({ colored, ...props }: SocialLogoProps) {\n return (\n <svg\n fill={colored ? \"#1877F2\" : \"currentColor\"}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M24 12c0-6.627-5.373-12-12-12S0 5.373 0 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078V12h3.047V9.356c0-3.007 1.792-4.668 4.533-4.668 1.312 0 2.686.234 2.686.234v2.953h-1.514c-1.491 0-1.955.926-1.955 1.875V12h3.328l-.532 3.469h-2.796v8.385C19.612 22.954 24 17.99 24 12Z\" />\n </svg>\n );\n}\n\nfunction AppleLogoIcon({ colored: _colored, ...props }: SocialLogoProps) {\n return (\n <svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\" />\n </svg>\n );\n}\n\nfunction XLogoIcon({ colored: _colored, ...props }: SocialLogoProps) {\n return (\n <svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231 5.45-6.231Zm-1.161 17.52h1.833L7.084 4.126H5.117l11.966 15.644Z\" />\n </svg>\n );\n}\n\nfunction FigmaLogoIcon({ colored, ...props }: SocialLogoProps) {\n return (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M8.167 24a3.834 3.834 0 0 0 3.833-3.833V16.333H8.167a3.834 3.834 0 0 0 0 7.667Z\"\n fill={colored ? \"#0ACF83\" : \"currentColor\"}\n />\n <path\n d=\"M4.333 12a3.834 3.834 0 0 1 3.834-3.833H12v7.666H8.167A3.834 3.834 0 0 1 4.333 12Z\"\n fill={colored ? \"#A259FF\" : \"currentColor\"}\n />\n <path\n d=\"M4.333 4.167A3.834 3.834 0 0 1 8.167.333H12V8H8.167a3.834 3.834 0 0 1-3.834-3.833Z\"\n fill={colored ? \"#F24E1E\" : \"currentColor\"}\n />\n <path\n d=\"M12 .333h3.833a3.834 3.834 0 0 1 0 7.667H12V.333Z\"\n fill={colored ? \"#FF7262\" : \"currentColor\"}\n />\n <path\n d=\"M19.667 12a3.834 3.834 0 1 1-7.667 0 3.834 3.834 0 0 1 7.667 0Z\"\n fill={colored ? \"#1ABCFE\" : \"currentColor\"}\n />\n </svg>\n );\n}\n\nfunction DribbbleLogoIcon({ colored, ...props }: SocialLogoProps) {\n return (\n <svg\n fill={colored ? \"#EA4C89\" : \"currentColor\"}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12-5.385 12-12 12Zm10.12-10.358c-.35-.11-3.17-.953-6.384-.438 1.34 3.684 1.887 6.684 1.992 7.308 2.3-1.555 3.936-4.02 4.395-6.87Zm-6.115 7.808c-.153-.9-.75-4.032-2.19-7.77l-.066.02c-5.79 2.015-7.86 6.025-8.04 6.4 1.73 1.358 3.92 2.166 6.29 2.166 1.42 0 2.77-.29 4-.814Zm-11.62-2.58c.232-.4 3.045-5.055 8.332-6.765.135-.045.27-.084.405-.12-.26-.585-.54-1.167-.832-1.74C7.17 11.775 2.206 11.71 1.756 11.7l-.004.312c0 2.633.998 5.037 2.634 6.855ZM1.96 9.92c.46.008 4.683.026 9.477-1.248-1.698-3.018-3.53-5.558-3.8-5.928-2.868 1.35-5.01 3.99-5.676 7.17ZM9.6 2.052c.282.38 2.145 2.914 3.822 6 3.645-1.365 5.19-3.44 5.373-3.702-1.81-1.61-4.19-2.586-6.795-2.586-.825 0-1.63.1-2.4.285Zm10.335 3.483c-.218.29-1.935 2.493-5.724 4.04.24.49.47.985.68 1.486.08.18.15.36.22.53 3.41-.43 6.8.26 7.14.33-.02-2.42-.88-4.64-2.31-6.38Z\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n}\n\ntype SocialButtonProvider =\n | \"google\"\n | \"facebook\"\n | \"apple\"\n | \"twitter\"\n | \"figma\"\n | \"dribbble\";\n\nconst providers: Record<\n SocialButtonProvider,\n {\n label: string;\n Icon: (props: SocialLogoProps) => React.ReactElement;\n }\n> = {\n apple: { Icon: AppleLogoIcon, label: \"Sign in with Apple\" },\n dribbble: { Icon: DribbbleLogoIcon, label: \"Sign in with Dribbble\" },\n facebook: { Icon: FacebookLogoIcon, label: \"Sign in with Facebook\" },\n figma: { Icon: FigmaLogoIcon, label: \"Sign in with Figma\" },\n google: { Icon: GoogleLogoIcon, label: \"Sign in with Google\" },\n twitter: { Icon: XLogoIcon, label: \"Sign in with X\" },\n};\n\ninterface SocialButtonProps extends useRender.ComponentProps<\"button\"> {\n /** Which provider to render: google, facebook, apple, twitter, figma or dribbble. */\n provider: SocialButtonProvider;\n /** brand (provider-filled), color (outline + full-color logo) or gray (tonal). */\n theme?: VariantProps<typeof socialButtonVariants>[\"theme\"];\n /** Render a square button with the logo only. */\n iconOnly?: boolean;\n}\n\nfunction SocialButton({\n className,\n provider,\n theme = \"brand\",\n iconOnly = false,\n render,\n children,\n ...props\n}: SocialButtonProps) {\n const { label, Icon } = providers[provider];\n const typeValue: React.ButtonHTMLAttributes<HTMLButtonElement>[\"type\"] =\n render ? undefined : \"button\";\n\n const defaultProps = {\n \"aria-label\": iconOnly ? label : undefined,\n className: cn(socialButtonVariants({ className, iconOnly, provider, theme })),\n \"data-provider\": provider,\n \"data-slot\": \"social-button\",\n type: typeValue,\n children: (\n <>\n <Icon aria-hidden=\"true\" colored={theme === \"color\"} />\n {!iconOnly && <span>{children ?? label}</span>}\n </>\n ),\n };\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(defaultProps, props),\n render,\n });\n}\n\nexport {\n SocialButton,\n socialButtonVariants,\n GoogleLogoIcon,\n FacebookLogoIcon,\n XLogoIcon,\n FigmaLogoIcon,\n DribbbleLogoIcon,\n type SocialButtonProvider,\n};\n","\"use client\";\n\nimport { CheckIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ntype Orientation = \"horizontal\" | \"vertical\";\ntype StepState = \"active\" | \"completed\" | \"inactive\";\n\nconst StepperContext = React.createContext<{\n value: number;\n orientation: Orientation;\n}>({ orientation: \"horizontal\", value: 1 });\n\nconst StepperItemContext = React.createContext<{\n step: number;\n state: StepState;\n}>({ state: \"inactive\", step: 1 });\n\nfunction Stepper({\n value = 1,\n orientation = \"horizontal\",\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** 1-based index of the active step. */\n value?: number;\n orientation?: Orientation;\n}) {\n return (\n <StepperContext.Provider value={{ orientation, value }}>\n <div\n className={cn(\n \"group/stepper flex w-full gap-2\",\n orientation === \"vertical\" ? \"flex-col\" : \"items-center\",\n className,\n )}\n data-orientation={orientation}\n data-slot=\"stepper\"\n {...props}\n />\n </StepperContext.Provider>\n );\n}\n\nfunction StepperItem({\n step,\n completed,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & { step: number; completed?: boolean }) {\n const { value } = React.useContext(StepperContext);\n const state: StepState =\n completed || value > step\n ? \"completed\"\n : value === step\n ? \"active\"\n : \"inactive\";\n\n return (\n <StepperItemContext.Provider value={{ state, step }}>\n <div\n className={cn(\n \"group/step flex gap-2.5\",\n \"group-data-[orientation=horizontal]/stepper:items-center group-data-[orientation=horizontal]/stepper:not-last:flex-1\",\n \"group-data-[orientation=vertical]/stepper:flex-col\",\n className,\n )}\n data-slot=\"stepper-item\"\n data-state={state}\n {...props}\n />\n </StepperItemContext.Provider>\n );\n}\n\nfunction StepperTrigger({\n className,\n ...props\n}: React.ComponentProps<\"button\">) {\n return (\n <button\n className={cn(\n \"flex items-center gap-2.5 rounded-lg text-left outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64\",\n className,\n )}\n data-slot=\"stepper-trigger\"\n type=\"button\"\n {...props}\n />\n );\n}\n\nfunction StepperIndicator({\n className,\n children,\n ...props\n}: React.ComponentProps<\"span\">) {\n const { step } = React.useContext(StepperItemContext);\n return (\n <span\n className={cn(\n \"relative flex size-8 shrink-0 items-center justify-center rounded-full border border-transparent bg-muted font-medium text-muted-foreground text-sm transition-colors group-data-[state=active]/step:bg-primary group-data-[state=active]/step:text-primary-foreground group-data-[state=completed]/step:bg-primary group-data-[state=completed]/step:text-primary-foreground\",\n className,\n )}\n data-slot=\"stepper-indicator\"\n {...props}\n >\n <span className=\"group-data-[state=completed]/step:hidden\">\n {children ?? step}\n </span>\n <CheckIcon className=\"hidden size-4 group-data-[state=completed]/step:block\" />\n </span>\n );\n}\n\nfunction StepperTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"font-medium text-sm transition-colors group-data-[state=inactive]/step:text-muted-foreground\",\n className,\n )}\n data-slot=\"stepper-title\"\n {...props}\n />\n );\n}\n\nfunction StepperDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"text-muted-foreground text-xs\", className)}\n data-slot=\"stepper-description\"\n {...props}\n />\n );\n}\n\nfunction StepperSeparator({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"rounded-full bg-border transition-colors group-data-[state=completed]/step:bg-primary\",\n \"group-data-[orientation=horizontal]/stepper:h-0.5 group-data-[orientation=horizontal]/stepper:flex-1\",\n \"group-data-[orientation=vertical]/stepper:ms-[calc(--spacing(4)-1px)] group-data-[orientation=vertical]/stepper:h-6 group-data-[orientation=vertical]/stepper:w-0.5\",\n className,\n )}\n data-slot=\"stepper-separator\"\n {...props}\n />\n );\n}\n\nexport {\n Stepper,\n StepperItem,\n StepperTrigger,\n StepperIndicator,\n StepperTitle,\n StepperDescription,\n StepperSeparator,\n};\n","\"use client\";\n\nimport { Fragment } from \"react\";\nimport type * as React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ninterface PipelineStage {\n /** The headline number for the stage. */\n value: React.ReactNode;\n /** The stage caption, e.g. \"Target accounts\". */\n label: React.ReactNode;\n /** Render the value in the brand/primary color (e.g. a final stage). */\n accent?: boolean;\n}\n\ninterface PipelineProps extends React.ComponentProps<\"div\"> {\n /** Ordered funnel stages, left to right. */\n stages: PipelineStage[];\n /**\n * Step-to-step conversion markers. `conversions[i]` is the share of stage `i`\n * that advances to stage `i + 1`, and is shown as a pill right beside stage\n * `i`'s number (length = `stages.length - 1`). Typically a percentage string.\n */\n conversions?: React.ReactNode[];\n}\n\n/**\n * A conversion funnel — equal-width stages laid left to right. Each stage\n * carries its own step-to-step conversion in a pill next to the number, and a\n * chevron points to the next stage, so the row reads as a flow rather than a\n * set of loose stats.\n *\n * The component is its own container query context: when it gets narrow (e.g.\n * beside a docked panel) the chevrons hide and the stages reflow into a\n * two-column grid, staying readable without squashing the numbers.\n */\nfunction Pipeline({ stages, conversions = [], className, ...props }: PipelineProps) {\n return (\n <div\n className={cn(\n \"@container flex items-stretch @max-[560px]:grid @max-[560px]:grid-cols-2 @max-[560px]:gap-x-6 @max-[560px]:gap-y-5\",\n className,\n )}\n data-slot=\"pipeline\"\n {...props}\n >\n {stages.map((stage, i) => {\n const conv = i < stages.length - 1 ? conversions[i] : undefined;\n return (\n <Fragment key={i}>\n <div className=\"min-w-0 flex-1 px-0.5\" data-slot=\"pipeline-stage\">\n <div className=\"flex items-center gap-2\">\n <span\n className={cn(\n \"font-sans font-bold text-3xl text-foreground leading-none tabular-nums tracking-tight\",\n stage.accent && \"text-success\",\n )}\n >\n {stage.value}\n </span>\n {conv != null ? <PipelineConversion>{conv}</PipelineConversion> : null}\n </div>\n <div className=\"mt-2 text-muted-foreground text-xs leading-snug\">\n {stage.label}\n </div>\n </div>\n {conv != null ? (\n <div\n className=\"flex flex-none items-center px-1 @max-[560px]:hidden\"\n data-slot=\"pipeline-arrow\"\n aria-hidden\n >\n <ChevronRight className=\"size-3.5 text-muted-foreground/40\" />\n </div>\n ) : null}\n </Fragment>\n );\n })}\n </div>\n );\n}\n\n/** The conversion pill sitting beside a stage number. */\nfunction PipelineConversion({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"inline-flex items-center rounded-full border border-success/20 bg-success/10 px-2 py-0.5 font-medium text-[11px] text-success tabular-nums dark:bg-success/16\",\n className,\n )}\n data-slot=\"pipeline-conversion\"\n {...props}\n />\n );\n}\n\nexport { Pipeline, PipelineConversion, type PipelineProps, type PipelineStage };\n","\"use client\";\n\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst toggleVariants = cva(\n \"[&_svg]:-mx-0.5 relative inline-flex shrink-0 cursor-pointer select-none items-center justify-center gap-2 whitespace-nowrap rounded-lg border font-medium text-base text-foreground outline-none transition-[box-shadow,background-color] duration-100 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 data-pressed:bg-input/64 data-pressed:text-accent-foreground sm:text-sm [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:transition-transform [&_svg]:duration-150 [&_svg]:ease-[cubic-bezier(0.34,1.56,0.64,1)] data-pressed:[&_svg]:scale-115\",\n {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n size: {\n default: \"h-9 min-w-9 px-[calc(--spacing(2)-1px)] sm:h-8 sm:min-w-8\",\n lg: \"h-10 min-w-10 px-[calc(--spacing(2.5)-1px)] sm:h-9 sm:min-w-9\",\n sm: \"h-8 min-w-8 px-[calc(--spacing(1.5)-1px)] sm:h-7 sm:min-w-7\",\n },\n variant: {\n default: \"border-transparent\",\n outline:\n \"border-input bg-background not-dark:bg-clip-padding shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/6%)] dark:bg-input/32 dark:data-pressed:bg-input dark:hover:bg-input/64 dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] dark:not-disabled:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/2%)] [:disabled,:active,[data-pressed]]:shadow-none\",\n },\n },\n },\n);\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n className={cn(toggleVariants({ className, size, variant }))}\n data-slot=\"toggle\"\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n","\"use client\";\n\nimport type { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { ToggleGroup as ToggleGroupPrimitive } from \"@base-ui/react/toggle-group\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { Separator } from \"./separator\";\nimport {\n Toggle as ToggleComponent,\n type toggleVariants,\n} from \"./toggle\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n});\n\nfunction ToggleGroup({\n className,\n variant = \"default\",\n size = \"default\",\n orientation = \"horizontal\",\n children,\n ...props\n}: ToggleGroupPrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive\n className={cn(\n \"flex w-fit *:focus-visible:z-10 dark:*:[[data-slot=separator]:has(+[data-slot=toggle]:hover)]:before:bg-input/64 dark:*:[[data-slot=separator]:has(+[data-slot=toggle][data-pressed])]:before:bg-input dark:*:[[data-slot=toggle]:hover+[data-slot=separator]]:before:bg-input/64 dark:*:[[data-slot=toggle][data-pressed]+[data-slot=separator]]:before:bg-input\",\n orientation === \"horizontal\"\n ? \"*:pointer-coarse:after:min-w-auto\"\n : \"*:pointer-coarse:after:min-h-auto\",\n variant === \"default\"\n ? \"gap-0.5\"\n : orientation === \"horizontal\"\n ? \"*:not-first:not-data-[slot=separator]:before:-start-[0.5px] *:not-last:not-data-[slot=separator]:before:-end-[0.5px] *:not-first:rounded-s-none *:not-last:rounded-e-none *:not-first:border-s-0 *:not-last:border-e-0 *:not-first:before:rounded-s-none *:not-last:before:rounded-e-none\"\n : \"*:not-first:not-data-[slot=separator]:before:-top-[0.5px] *:not-last:not-data-[slot=separator]:before:-bottom-[0.5px] flex-col *:not-first:rounded-t-none *:not-last:rounded-b-none *:not-first:border-t-0 *:not-last:border-b-0 *:not-first:before:rounded-t-none *:not-last:before:rounded-b-none *:data-[slot=toggle]:not-last:before:hidden dark:*:last:before:hidden dark:*:first:before:block\",\n className,\n )}\n data-size={size}\n data-slot=\"toggle-group\"\n data-variant={variant}\n orientation={orientation}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ size, variant }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive>\n );\n}\n\nfunction Toggle({\n className,\n children,\n variant,\n size,\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n const resolvedVariant = context.variant || variant;\n const resolvedSize = context.size || size;\n\n return (\n <ToggleComponent\n className={className}\n data-size={resolvedSize}\n data-variant={resolvedVariant}\n size={resolvedSize}\n variant={resolvedVariant}\n {...props}\n >\n {children}\n </ToggleComponent>\n );\n}\n\nfunction ToggleGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: {\n className?: string;\n} & React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n className={cn(\n \"pointer-events-none relative bg-input before:absolute before:inset-0 dark:before:bg-input/32\",\n className,\n )}\n orientation={orientation}\n {...props}\n />\n );\n}\n\nexport { ToggleGroup, Toggle, Toggle as ToggleGroupItem, ToggleGroupSeparator };\n","\"use client\";\n\nimport type * as React from \"react\";\n\nimport { ToggleGroup, ToggleGroupItem } from \"./toggle-group\";\nimport { cn } from \"../../lib/utils/css\";\n\ninterface SegmentedControlOption<T extends string> {\n value: T;\n label: React.ReactNode;\n}\n\ninterface SegmentedControlProps<T extends string> {\n /** The currently-selected option value. */\n value: T;\n /** Called with the newly-selected value (never with an empty selection). */\n onValueChange: (value: T) => void;\n /** The mutually-exclusive options, left to right. */\n options: SegmentedControlOption<T>[];\n size?: \"sm\" | \"default\" | \"lg\";\n variant?: \"default\" | \"outline\";\n className?: string;\n}\n\n/**\n * Per-size segment padding. The base toggle sizes are icon-button tight\n * (~5px), which crowds text labels like \"Past 3 months\"; a segmented control\n * reads as text tabs, so it wants room to breathe on both axes.\n */\nconst SEGMENT_SIZE: Record<NonNullable<SegmentedControlProps<string>[\"size\"]>, string> = {\n sm: \"h-8 px-3.5 sm:h-7\",\n default: \"h-9 px-4 sm:h-8\",\n lg: \"h-10 px-5 sm:h-9\",\n};\n\n/**\n * A single-select segmented control — a compact row of mutually-exclusive\n * options (e.g. a time-range switch: Past month / Past 3 months / Overall).\n *\n * A thin, typed wrapper over {@link ToggleGroup} that keeps exactly one option\n * selected — the active segment can't be toggled off into an empty state — and\n * hides Base UI's array-value plumbing. Pass `options`, `value`, and\n * `onValueChange`; the value is a string union you control.\n */\nfunction SegmentedControl<T extends string>({\n value,\n onValueChange,\n options,\n size = \"sm\",\n variant = \"outline\",\n className,\n}: SegmentedControlProps<T>) {\n return (\n <ToggleGroup\n className={cn(className)}\n data-slot=\"segmented-control\"\n value={[value]}\n onValueChange={(groupValue) => {\n const next = Array.isArray(groupValue) ? groupValue[0] : groupValue;\n // Ignore the empty-array case so a segment always stays selected.\n if (next != null) onValueChange(next as T);\n }}\n size={size}\n variant={variant}\n >\n {options.map((option) => (\n <ToggleGroupItem\n key={option.value}\n value={option.value}\n className={SEGMENT_SIZE[size]}\n >\n {option.label}\n </ToggleGroupItem>\n ))}\n </ToggleGroup>\n );\n}\n\nexport {\n SegmentedControl,\n type SegmentedControlOption,\n type SegmentedControlProps,\n};\n","\"use client\";\n\nimport { Dialog as SheetPrimitive } from \"@base-ui/react/dialog\";\nimport { cva } from \"class-variance-authority\";\nimport { XIcon } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport { ScrollArea } from \"./scroll-area\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst Sheet = SheetPrimitive.Root;\n\nconst SheetPortal = SheetPrimitive.Portal;\n\nfunction SheetTrigger(props: SheetPrimitive.Trigger.Props) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose(props: SheetPrimitive.Close.Props) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetBackdrop({ className, ...props }: SheetPrimitive.Backdrop.Props) {\n return (\n <SheetPrimitive.Backdrop\n className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n className,\n )}\n data-slot=\"sheet-backdrop\"\n {...props}\n />\n );\n}\n\nexport const sheetViewportVariants = cva(\"fixed inset-0 z-50 grid\", {\n variants: {\n side: {\n bottom: \"grid grid-rows-[1fr_auto] pt-12\",\n top: \"grid grid-rows-[auto_1fr] pb-12\",\n left: \"flex justify-start\",\n right: \"flex justify-end\",\n },\n variant: {\n default: \"\",\n inset: \"sm:p-4\",\n },\n },\n});\n\nfunction SheetViewport({\n className,\n side,\n variant = \"default\",\n ...props\n}: SheetPrimitive.Viewport.Props & {\n side?: \"right\" | \"left\" | \"top\" | \"bottom\";\n variant?: \"default\" | \"inset\";\n}) {\n return (\n <SheetPrimitive.Viewport\n className={cn(sheetViewportVariants({ side, variant }), className)}\n data-slot=\"sheet-viewport\"\n {...props}\n />\n );\n}\n\nexport const sheetPopupVariants = cva(\n \"relative flex max-h-full min-h-0 w-full min-w-0 flex-col bg-popover not-dark:bg-clip-padding text-popover-foreground shadow-lg/5 transition-[opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:opacity-0 data-starting-style:opacity-0 max-sm:before:hidden dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n {\n defaultVariants: {\n variant: \"default\",\n },\n variants: {\n side: {\n bottom:\n \"row-start-2 border-t data-ending-style:translate-y-8 data-starting-style:translate-y-8\",\n top: \"data-ending-style:-translate-y-8 data-starting-style:-translate-y-8 border-b\",\n left: \"data-ending-style:-translate-x-8 data-starting-style:-translate-x-8 w-[calc(100%-(--spacing(12)))] max-w-md border-e\",\n right:\n \"col-start-2 w-[calc(100%-(--spacing(12)))] max-w-md border-s data-ending-style:translate-x-8 data-starting-style:translate-x-8\",\n },\n variant: {\n default: \"\",\n inset:\n \"before:hidden sm:rounded-2xl sm:border sm:before:rounded-[calc(var(--radius-2xl)-1px)] sm:**:data-[slot=sheet-footer]:rounded-b-[calc(var(--radius-2xl)-1px)]\",\n },\n },\n },\n);\n\nfunction SheetPopup({\n className,\n children,\n showCloseButton = true,\n side = \"right\",\n variant = \"default\",\n ...props\n}: SheetPrimitive.Popup.Props & {\n showCloseButton?: boolean;\n side?: \"right\" | \"left\" | \"top\" | \"bottom\";\n variant?: \"default\" | \"inset\";\n}) {\n return (\n <SheetPortal>\n <SheetBackdrop />\n <SheetViewport side={side} variant={variant}>\n <SheetPrimitive.Popup\n className={cn(sheetPopupVariants({ side, variant }), className)}\n data-slot=\"sheet-popup\"\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close\n aria-label=\"Close\"\n className=\"absolute end-2 top-2\"\n render={<Button size=\"icon\" variant=\"ghost\" />}\n >\n <XIcon />\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Popup>\n </SheetViewport>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-2 p-6 in-[[data-slot=sheet-popup]:has([data-slot=sheet-panel])]:pb-3 max-sm:pb-4\",\n className,\n )}\n data-slot=\"sheet-header\"\n {...props}\n />\n );\n}\n\nfunction SheetFooter({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: \"default\" | \"bare\";\n}) {\n return (\n <div\n className={cn(\n \"flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end\",\n variant === \"default\" && \"border-t bg-muted/72 py-4\",\n variant === \"bare\" &&\n \"in-[[data-slot=sheet-popup]:has([data-slot=sheet-panel])]:pt-3 pt-4 pb-6\",\n className,\n )}\n data-slot=\"sheet-footer\"\n {...props}\n />\n );\n}\n\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\n return (\n <SheetPrimitive.Title\n className={cn(\n \"font-heading font-semibold text-xl leading-none\",\n className,\n )}\n data-slot=\"sheet-title\"\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: SheetPrimitive.Description.Props) {\n return (\n <SheetPrimitive.Description\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"sheet-description\"\n {...props}\n />\n );\n}\n\nfunction SheetPanel({\n className,\n scrollFade = true,\n ...props\n}: React.ComponentProps<\"div\"> & { scrollFade?: boolean }) {\n return (\n <ScrollArea scrollFade={scrollFade}>\n <div\n className={cn(\n \"p-6 in-[[data-slot=sheet-popup]:has([data-slot=sheet-header])]:pt-1 in-[[data-slot=sheet-popup]:has([data-slot=sheet-footer]:not(.border-t))]:pb-1\",\n className,\n )}\n data-slot=\"sheet-panel\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetPortal,\n SheetClose,\n SheetBackdrop,\n SheetViewport,\n SheetBackdrop as SheetOverlay,\n SheetPopup,\n SheetPopup as SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n SheetPanel,\n};\n","import { cn } from \"../../lib/utils/css\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"animate-skeleton rounded-sm [--skeleton-highlight:--alpha(var(--color-white)/64%)] [background:linear-gradient(120deg,transparent_40%,var(--skeleton-highlight),transparent_60%)_var(--color-muted)_0_0/200%_100%_fixed] dark:[--skeleton-highlight:--alpha(var(--color-white)/4%)]\",\n className,\n )}\n data-slot=\"skeleton\"\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { ScrollArea } from \"./scroll-area\";\nimport { Separator } from \"./separator\";\nimport {\n Sheet,\n SheetDescription,\n SheetHeader,\n SheetPopup,\n SheetTitle,\n} from \"./sheet\";\nimport { Skeleton } from \"./skeleton\";\nimport { Tooltip, TooltipPopup, TooltipTrigger } from \"./tooltip\";\nimport { cn } from \"../../lib/utils/css\";\n\n// Runs before paint on the client (so the mobile/desktop sidebar is correct on\n// the first frame — no pop-in), but degrades to useEffect during SSR.\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH_LG = \"18.5rem\";\nconst SIDEBAR_WIDTH_MD = \"14.5rem\";\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 persistKey,\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 * Remember the expanded/collapsed state in `localStorage` under this key and\n * restore it on the next load (desktop rail only; the mobile sheet is always\n * closed on load). Opt-in — omit to keep the sidebar un-persisted. Ignored in\n * controlled mode (when `open` is provided). The restore runs before first\n * paint, so there's no expand→collapse flash.\n */\n persistKey?: string;\n}) {\n // Self-contained breakpoint check (md = 48rem). Resolved in a layout effect\n // before the first paint so the sidebar never flashes from mobile to desktop.\n const [isMobile, setIsMobile] = React.useState(false);\n useIsomorphicLayoutEffect(() => {\n const mql = window.matchMedia(\"(max-width: 47.999rem)\");\n const onChange = () => setIsMobile(mql.matches);\n onChange();\n mql.addEventListener(\"change\", onChange);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\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 // Persist the sidebar state. document.cookie works in every browser\n // (cookieStore is Chromium-only and throws elsewhere). When `persistKey`\n // is set we also mirror it to localStorage so a client-only app (no SSR\n // cookie read) can restore it on load.\n try {\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n if (persistKey) {\n window.localStorage.setItem(persistKey, openState ? \"true\" : \"false\");\n }\n } catch {\n // Ignore — persistence is best-effort.\n }\n },\n [setOpenProp, open, persistKey],\n );\n\n // Restore the persisted (localStorage) open state on mount — uncontrolled use\n // only. Runs in a layout effect so the restore lands before first paint (no\n // expand→collapse flash). SSR renders `defaultOpen` and the client's first\n // render matches it, so this reconciles afterwards without a hydration\n // mismatch.\n useIsomorphicLayoutEffect(() => {\n if (!persistKey || openProp !== undefined) return;\n try {\n const stored = window.localStorage.getItem(persistKey);\n if (stored === \"true\" || stored === \"false\") {\n _setOpen(stored === \"true\");\n }\n } catch {\n // Ignore — restore is best-effort.\n }\n }, [persistKey, openProp]);\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen]);\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 isMobile,\n open,\n openMobile,\n setOpen,\n setOpenMobile,\n state,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n className={cn(\n \"group/sidebar-wrapper flex h-full w-full\",\n \"[--sidebar-width:var(--sidebar-width-md)] lg:[--sidebar-width:var(--sidebar-width-lg)]\",\n className,\n )}\n data-slot=\"sidebar-wrapper\"\n style={{\n \"--sidebar-width-lg\": SIDEBAR_WIDTH_LG,\n \"--sidebar-width-md\": SIDEBAR_WIDTH_MD,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\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 className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar md:bg-transparent text-sidebar-foreground\",\n className,\n )}\n data-slot=\"sidebar\"\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet onOpenChange={setOpenMobile} open={openMobile} {...props}>\n <SheetPopup\n className=\"w-(--sidebar-width) bg-sidebar md:bg-transparent p-0 text-sidebar-foreground [&>button]:hidden\"\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n style={{\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n }}\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 </SheetPopup>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-300 ease-[cubic-bezier(0.32,0.72,0,1)]\",\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 data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] 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 data-slot=\"sidebar-container\"\n {...props}\n >\n <div\n className=\"flex h-full w-full flex-col bg-sidebar md:bg-transparent group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm/5\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\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 className={cn(\"size-7\", className)}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n size=\"icon\"\n variant=\"ghost\"\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 aria-label=\"Toggle Sidebar\"\n className={cn(\n \"-translate-x-1/2 group-data-[side=left]:-right-4 absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=right]:left-0 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 hover:group-data-[collapsible=offcanvas]:bg-sidebar md:bg-transparent group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className,\n )}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n onClick={toggleSidebar}\n tabIndex={-1}\n title=\"Toggle Sidebar\"\n type=\"button\"\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n className={cn(\n \"relative flex w-full flex-1 flex-col bg-background\",\n \"md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm/5\",\n className,\n )}\n data-slot=\"sidebar-inset\"\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n className={cn(\"h-8 w-full bg-background shadow-none\", className)}\n data-sidebar=\"input\"\n data-slot=\"sidebar-input\"\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n data-sidebar=\"header\"\n data-slot=\"sidebar-header\"\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n data-sidebar=\"footer\"\n data-slot=\"sidebar-footer\"\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n data-sidebar=\"separator\"\n data-slot=\"sidebar-separator\"\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <ScrollArea className=\"pr-1.5 -mr-1.5\" scrollFade>\n <div\n className={cn(\n \"flex flex-1 flex-col group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n data-sidebar=\"content\"\n data-slot=\"sidebar-content\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n data-sidebar=\"group\"\n data-slot=\"sidebar-group\"\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"flex h-8 shrink-0 items-center rounded-lg px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] 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 \"data-sidebar\": \"group-label\",\n \"data-slot\": \"sidebar-group-label\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps(defaultProps, props),\n render,\n });\n}\n\nfunction SidebarGroupAction({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"button\">) {\n const defaultProps = {\n className: cn(\n \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-lg p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg:not([class*='size-'])]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:-inset-2 after:absolute md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n ),\n \"data-sidebar\": \"group-action\",\n \"data-slot\": \"sidebar-group-action\",\n };\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps(defaultProps, props),\n render,\n });\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"w-full text-sm\", className)}\n data-sidebar=\"group-content\"\n data-slot=\"sidebar-group-content\"\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n data-sidebar=\"menu\"\n data-slot=\"sidebar-menu\"\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n className={cn(\"group/menu-item relative\", className)}\n data-sidebar=\"menu-item\"\n data-slot=\"sidebar-menu-item\"\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-lg border border-transparent text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding,background-color] duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] hover:bg-secondary focus-visible:ring-2 active:bg-secondary disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pe-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[status=active]:bg-background data-[status=active]:font-medium data-[status=active]:text-sidebar-accent-foreground data-[active=true]:bg-background data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-background data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-3! [&>span:last-child]:truncate [&>span:last-child]:transition-opacity [&>span:last-child]:duration-200 [&>span:last-child]:ease-out group-data-[collapsible=icon]:[&>span:last-child]:opacity-0 [&>svg:not([class*='size-'])]:size-4 [&>svg]:shrink-0 data-[status=active]:border-border data-[status=active]:shadow-xs data-[status=active]:hover:bg-background data-[status=active]:hover:text-sidebar-accent-foreground\",\n {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n size: {\n default: \"h-9 font-normal p-2 text-sm\",\n lg: \"h-11 p-3 font-medium text-sm group-data-[collapsible=icon]:p-0!\",\n sm: \"h-7 p-2 font-normal text-xs\",\n },\n variant: {\n default: \"hover:bg-secondary\",\n outline: \"bg-sidebar-accent text-foreground shadow-xs border\",\n },\n },\n },\n);\n\nfunction SidebarMenuButton({\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"button\"> & {\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipPopup>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const { isMobile, state } = useSidebar();\n\n const defaultProps = {\n className: cn(sidebarMenuButtonVariants({ size, variant }), className),\n \"data-active\": isActive,\n \"data-sidebar\": \"menu-button\",\n \"data-size\": size,\n \"data-slot\": \"sidebar-menu-button\",\n };\n\n const buttonProps = mergeProps<\"button\">(defaultProps, props);\n\n const buttonElement = useRender({\n defaultTagName: \"button\",\n props: buttonProps,\n render,\n });\n\n if (!tooltip) {\n return buttonElement;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={buttonElement as React.ReactElement<Record<string, unknown>>}\n />\n <TooltipPopup\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n side=\"right\"\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n showOnHover = false,\n render,\n ...props\n}: useRender.ComponentProps<\"button\"> & {\n showOnHover?: boolean;\n}) {\n const defaultProps = {\n className: cn(\n \"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-lg p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg:not([class*='size-'])]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:-inset-2 after:absolute 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 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground peer-data-[status=active]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className,\n ),\n \"data-sidebar\": \"menu-action\",\n \"data-slot\": \"sidebar-menu-action\",\n };\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(defaultProps, props),\n render,\n });\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n // Vertically centered against the menu button (size-agnostic) rather\n // than pinned to the top, so the count reads level with the label.\n \"pointer-events-none absolute right-1 top-1/2 flex h-5 min-w-5 -translate-y-1/2 select-none items-center justify-center rounded-lg px-1 font-medium text-sidebar-foreground text-xs tabular-nums\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground peer-data-[status=active]/menu-button:text-sidebar-accent-foreground\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n data-sidebar=\"menu-badge\"\n data-slot=\"sidebar-menu-badge\"\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n className={cn(\"flex h-8 items-center gap-2 rounded-lg px-2\", className)}\n data-sidebar=\"menu-skeleton\"\n data-slot=\"sidebar-menu-skeleton\"\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-lg\"\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 \"--skeleton-width\": width,\n }}\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-sidebar-border border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n data-sidebar=\"menu-sub\"\n data-slot=\"sidebar-menu-sub\"\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n className={cn(\"group/menu-sub-item relative\", className)}\n data-sidebar=\"menu-sub-item\"\n data-slot=\"sidebar-menu-sub-item\"\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n size = \"md\",\n isActive = false,\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\"> & {\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const defaultProps = {\n className: cn(\n \"-translate-x-px flex h-7 min-w-0 items-center gap-2 overflow-hidden rounded-lg px-2 text-sidebar-foreground outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-secondary active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg:not([class*='size-'])]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground data-[status=active]:bg-sidebar-accent data-[status=active]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n ),\n \"data-active\": isActive,\n \"data-sidebar\": \"menu-sub-button\",\n \"data-size\": size,\n \"data-slot\": \"sidebar-menu-sub-button\",\n };\n\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(defaultProps, props),\n render,\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","\"use client\";\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ntype SliderLabelPosition = \"bottom\" | \"floating\";\n\nfunction Slider({\n className,\n children,\n defaultValue,\n value,\n min = 0,\n max = 100,\n labelPosition,\n formatLabel = (labelValue) => String(labelValue),\n ...props\n}: SliderPrimitive.Root.Props & {\n /** Render each thumb's value beneath it, or in a floating bubble above it. */\n labelPosition?: SliderLabelPosition;\n formatLabel?: (value: number) => React.ReactNode;\n}) {\n const _values = React.useMemo(() => {\n if (value !== undefined) {\n return Array.isArray(value) ? value : [value];\n }\n if (defaultValue !== undefined) {\n return Array.isArray(defaultValue) ? defaultValue : [defaultValue];\n }\n return [min];\n }, [value, defaultValue, min]);\n\n return (\n <SliderPrimitive.Root\n className={cn(\"data-[orientation=horizontal]:w-full\", className)}\n defaultValue={defaultValue}\n max={max}\n min={min}\n thumbAlignment=\"edge\"\n value={value}\n {...props}\n >\n {children}\n <SliderPrimitive.Control\n className=\"flex touch-none select-none data-disabled:pointer-events-none data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=horizontal]:w-full data-[orientation=horizontal]:min-w-44 data-[orientation=vertical]:flex-col data-disabled:opacity-64\"\n data-slot=\"slider-control\"\n >\n <SliderPrimitive.Track\n className=\"relative grow select-none before:absolute before:rounded-full before:bg-input data-[orientation=horizontal]:h-1 data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-1 data-[orientation=horizontal]:before:inset-x-0.5 data-[orientation=vertical]:before:inset-x-0 data-[orientation=horizontal]:before:inset-y-0 data-[orientation=vertical]:before:inset-y-0.5\"\n data-slot=\"slider-track\"\n >\n <SliderPrimitive.Indicator\n className=\"select-none rounded-full bg-primary data-[orientation=horizontal]:ms-0.5 data-[orientation=vertical]:mb-0.5\"\n data-slot=\"slider-indicator\"\n />\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n className=\"block size-5 shrink-0 select-none rounded-full border border-input bg-white not-dark:bg-clip-padding shadow-xs/5 outline-none transition-[box-shadow,scale] duration-150 ease-out before:absolute before:inset-0 before:rounded-full before:shadow-[0_1px_--theme(--color-black/6%)] has-focus-visible:ring-[3px] has-focus-visible:ring-ring/24 data-dragging:data-[active]:scale-115 sm:size-4 dark:border-background dark:has-focus-visible:ring-ring/48 [:has(*:focus-visible),[data-dragging]]:shadow-none\"\n data-slot=\"slider-thumb\"\n index={index}\n key={String(index)}\n render={(thumbProps, state) => (\n <div\n {...thumbProps}\n data-active={\n state.activeThumbIndex === index ? \"\" : undefined\n }\n >\n {thumbProps.children}\n {labelPosition === \"bottom\" && (\n <span\n className=\"pointer-events-none absolute start-1/2 top-full mt-2 -translate-x-1/2 select-none whitespace-nowrap font-medium text-foreground text-sm rtl:translate-x-1/2\"\n data-slot=\"slider-thumb-label\"\n >\n {formatLabel(state.values[index] ?? min)}\n </span>\n )}\n {labelPosition === \"floating\" && (\n <span\n className=\"pointer-events-none absolute bottom-full start-1/2 mb-2.5 -translate-x-1/2 select-none whitespace-nowrap rounded-md border bg-popover not-dark:bg-clip-padding px-2 py-1 font-semibold text-popover-foreground text-xs shadow-md/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-md)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] rtl:translate-x-1/2 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\"\n data-slot=\"slider-thumb-label\"\n >\n {formatLabel(state.values[index] ?? min)}\n </span>\n )}\n </div>\n )}\n />\n ))}\n </SliderPrimitive.Track>\n </SliderPrimitive.Control>\n </SliderPrimitive.Root>\n );\n}\n\nfunction SliderValue({ className, ...props }: SliderPrimitive.Value.Props) {\n return (\n <SliderPrimitive.Value\n className={cn(\"flex justify-end text-sm\", className)}\n data-slot=\"slider-value\"\n {...props}\n />\n );\n}\n\nexport { Slider, SliderValue };\n","import { Loader2Icon } from \"lucide-react\";\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Spinner({\n className,\n ...props\n}: React.ComponentProps<typeof Loader2Icon>) {\n return (\n <Loader2Icon\n aria-label=\"Loading\"\n className={cn(\"animate-spin\", className)}\n role=\"status\"\n {...props}\n />\n );\n}\n\nexport { Spinner };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { TrendingDownIcon, TrendingUpIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst statVariants = cva(\"flex flex-col gap-1.5\", {\n defaultVariants: { variant: \"default\" },\n variants: {\n variant: {\n // Bare — no chrome. Use inside a StatGroup or a Card.\n default: \"\",\n // A subtle tonal tile.\n muted: \"rounded-xl border bg-secondary p-4\",\n // A bordered surface tile that reads as its own card.\n card: \"rounded-xl border bg-card not-dark:bg-clip-padding p-4 shadow-xs/5\",\n },\n },\n});\n\ninterface StatProps extends useRender.ComponentProps<\"div\"> {\n variant?: VariantProps<typeof statVariants>[\"variant\"];\n}\n\n/**\n * A single headline metric (KPI). Compose it from `StatLabel`, `StatValue`,\n * `StatDescription` and an optional `StatTrend`. Drop bare `Stat`s into a\n * `StatGroup` for a divided row, or use `variant=\"muted\" | \"card\"` for a\n * standalone tile.\n */\nfunction Stat({ className, variant, render, ...props }: StatProps) {\n const defaultProps = {\n className: cn(statVariants({ className, variant })),\n \"data-slot\": \"stat\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\n/** The metric's caption, e.g. \"Active members\". */\nfunction StatLabel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"font-medium text-muted-foreground text-sm leading-none\", className),\n \"data-slot\": \"stat-label\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\n/**\n * The headline number. Sans + tabular so digits stay aligned across a row;\n * drop `font-sans` from `className` to render it in the serif display face.\n */\nfunction StatValue({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"font-sans font-semibold text-2xl text-foreground leading-none tabular-nums tracking-tight\",\n className,\n ),\n \"data-slot\": \"stat-value\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\n/** Supporting copy under the value, e.g. \"vs. 1,204 last month\". */\nfunction StatDescription({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"p\">) {\n const defaultProps = {\n className: cn(\"text-muted-foreground text-sm leading-snug\", className),\n \"data-slot\": \"stat-description\",\n };\n\n return useRender({\n defaultTagName: \"p\",\n props: mergeProps<\"p\">(defaultProps, props),\n render,\n });\n}\n\nconst statTrendVariants = cva(\n \"inline-flex items-center gap-0.5 font-medium text-sm tabular-nums [&_svg:not([class*='size-'])]:size-3.5 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n defaultVariants: { direction: \"up\" },\n variants: {\n direction: {\n up: \"text-success-foreground\",\n down: \"text-destructive-foreground\",\n neutral: \"text-muted-foreground\",\n },\n },\n },\n);\n\ninterface StatTrendProps extends React.ComponentProps<\"span\"> {\n direction?: VariantProps<typeof statTrendVariants>[\"direction\"];\n /** Show the directional arrow before the children. Defaults to `true`. */\n showIcon?: boolean;\n}\n\n/**\n * A small delta chip — e.g. \"+12.5%\". Picks an up/down arrow from `direction`\n * and colors itself success/destructive/neutral.\n */\nfunction StatTrend({\n className,\n direction = \"up\",\n showIcon = true,\n children,\n ...props\n}: StatTrendProps) {\n const Icon = direction === \"down\" ? TrendingDownIcon : TrendingUpIcon;\n return (\n <span\n className={cn(statTrendVariants({ direction }), className)}\n data-direction={direction}\n data-slot=\"stat-trend\"\n {...props}\n >\n {showIcon && direction !== \"neutral\" ? <Icon /> : null}\n {children}\n </span>\n );\n}\n\n/**\n * Lays a set of bare `Stat`s out as a divided row (stacked on narrow screens),\n * wrapped in a bordered card surface with even padding per metric.\n */\nfunction StatGroup({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"grid auto-cols-fr grid-flow-row divide-y rounded-xl border bg-card not-dark:bg-clip-padding shadow-xs/5 sm:grid-flow-col sm:divide-x sm:divide-y-0 [&>[data-slot=stat]]:p-4\",\n className,\n ),\n \"data-slot\": \"stat-group\",\n role: \"list\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nexport {\n Stat,\n StatLabel,\n StatValue,\n StatDescription,\n StatTrend,\n StatGroup,\n statVariants,\n statTrendVariants,\n};\n","\"use client\";\n\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ntype SwitchProps = SwitchPrimitive.Root.Props & {\n size?: \"sm\" | \"md\" | \"lg\";\n slim?: boolean;\n};\n\nfunction Switch({ className, size = \"md\", slim = false, ...props }: SwitchProps) {\n return (\n <SwitchPrimitive.Root\n className={cn(\n \"inline-flex shrink-0 items-center rounded-full outline-none transition-[background-color,box-shadow] duration-200\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background\",\n \"data-checked:bg-primary data-unchecked:bg-input data-disabled:opacity-64\",\n size === \"sm\" && \"[--thumb-size:--spacing(4)] sm:[--thumb-size:--spacing(3.5)]\",\n size === \"md\" && \"[--thumb-size:--spacing(5)] sm:[--thumb-size:--spacing(4)]\",\n size === \"lg\" && \"[--thumb-size:--spacing(6)] sm:[--thumb-size:--spacing(5)]\",\n \"w-[calc(var(--thumb-size)*2-2px)]\",\n !slim && \"h-[calc(var(--thumb-size)+2px)] p-px\",\n slim && \"relative h-[calc(var(--thumb-size)*0.4)] overflow-visible p-0\",\n className,\n )}\n data-slot=\"switch\"\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block aspect-square bg-background shadow-sm/5 will-change-transform\",\n \"[transition:translate_.15s,border-radius_.15s,scale_.1s_.1s,transform-origin_.15s]\",\n !slim && [\n \"h-full origin-left\",\n \"in-[[role=switch]:active,[data-slot=label]:active]:not-data-disabled:scale-x-110\",\n \"in-[[role=switch]:active,[data-slot=label]:active]:rounded-[var(--thumb-size)/calc(var(--thumb-size)*1.1)]\",\n \"rounded-(--thumb-size)\",\n \"data-checked:origin-[var(--thumb-size)_50%] data-checked:translate-x-[calc(var(--thumb-size)-4px)]\",\n ],\n slim && [\n \"absolute top-1/2 -translate-y-1/2\",\n \"h-[var(--thumb-size)] w-[var(--thumb-size)]\",\n \"rounded-full origin-left\",\n \"in-[[role=switch]:active,[data-slot=label]:active]:not-data-disabled:scale-x-110\",\n \"in-[[role=switch]:active,[data-slot=label]:active]:rounded-[var(--thumb-size)/calc(var(--thumb-size)*1.1)]\",\n \"data-checked:origin-[var(--thumb-size)_50%] data-checked:translate-x-[calc(var(--thumb-size)-2px)]\",\n ],\n )}\n data-slot=\"switch-thumb\"\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","\"use client\";\n\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ntype TabsVariant = \"default\" | \"underline\";\n\nfunction Tabs({ className, ...props }: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n className={cn(\n \"flex flex-col gap-2 data-[orientation=vertical]:flex-row\",\n className,\n )}\n data-slot=\"tabs\"\n {...props}\n />\n );\n}\n\nfunction TabsList({\n variant = \"default\",\n className,\n children,\n ...props\n}: TabsPrimitive.List.Props & {\n variant?: TabsVariant;\n}) {\n return (\n <TabsPrimitive.List\n className={cn(\n \"relative z-0 flex w-fit items-center justify-center gap-x-0.5 text-muted-foreground\",\n \"data-[orientation=vertical]:flex-col\",\n variant === \"default\"\n ? \"rounded-lg bg-muted p-0.5 text-muted-foreground/72\"\n : \"data-[orientation=vertical]:px-1 data-[orientation=horizontal]:py-1 *:data-[slot=tabs-tab]:hover:bg-accent\",\n className,\n )}\n data-slot=\"tabs-list\"\n {...props}\n >\n {children}\n <TabsPrimitive.Indicator\n className={cn(\n \"-translate-y-(--active-tab-bottom) absolute bottom-0 left-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) transition-[width,translate] duration-200 ease-in-out\",\n variant === \"underline\"\n ? \"data-[orientation=vertical]:-translate-x-px z-10 bg-primary data-[orientation=horizontal]:h-0.5 data-[orientation=vertical]:w-0.5 data-[orientation=horizontal]:translate-y-px\"\n : \"-z-1 rounded-md bg-background shadow-sm/5 dark:bg-input\",\n )}\n data-slot=\"tab-indicator\"\n />\n </TabsPrimitive.List>\n );\n}\n\nfunction TabsTab({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n className={cn(\n \"[&_svg]:-mx-0.5 relative flex h-9 shrink-0 grow cursor-pointer items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-[calc(--spacing(2.5)-1px)] font-medium text-base outline-none transition-[color,background-color,box-shadow] hover:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring data-disabled:pointer-events-none data-[orientation=vertical]:w-full data-[orientation=vertical]:justify-start data-active:text-foreground data-disabled:opacity-64 sm:h-8 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"tabs-tab\"\n {...props}\n />\n );\n}\n\nfunction TabsPanel({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n className={cn(\n \"flex-1 outline-none data-[activation-direction=down]:animate-in data-[activation-direction=left]:animate-in data-[activation-direction=right]:animate-in data-[activation-direction=up]:animate-in fade-in-0 duration-200 ease-out data-[activation-direction=down]:slide-in-from-bottom-1 data-[activation-direction=left]:slide-in-from-left-1 data-[activation-direction=right]:slide-in-from-right-1 data-[activation-direction=up]:slide-in-from-top-1\",\n className,\n )}\n data-slot=\"tabs-content\"\n {...props}\n />\n );\n}\n\nexport {\n Tabs,\n TabsList,\n TabsTab,\n TabsTab as TabsTrigger,\n TabsPanel,\n TabsPanel as TabsContent,\n};\n","\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport { CheckIcon, XIcon } from \"lucide-react\";\nimport { createContext, useContext, useState } from \"react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype TagSize = \"sm\" | \"md\" | \"lg\";\ntype TagSelectionMode = \"none\" | \"single\" | \"multiple\";\n\n// ─── Context ──────────────────────────────────────────────────────────────────\n\ninterface TagGroupContextValue {\n size: TagSize;\n selectionMode: TagSelectionMode;\n selectedKeys: ReadonlySet<string>;\n onItemSelect: (key: string) => void;\n onItemRemove?: (key: string) => void;\n}\n\nconst TagGroupContext = createContext<TagGroupContextValue | null>(null);\n\n// ─── TagGroup ─────────────────────────────────────────────────────────────────\n\ninterface TagGroupProps {\n size?: TagSize;\n selectionMode?: TagSelectionMode;\n defaultSelectedKeys?: Iterable<string>;\n selectedKeys?: Set<string>;\n onSelectionChange?: (keys: Set<string>) => void;\n onRemove?: (key: string) => void;\n className?: string;\n children?: React.ReactNode;\n}\n\nfunction TagGroup({\n size = \"md\",\n selectionMode = \"none\",\n defaultSelectedKeys,\n selectedKeys: controlledKeys,\n onSelectionChange,\n onRemove,\n className,\n children,\n}: TagGroupProps) {\n const [internalKeys, setInternalKeys] = useState<Set<string>>(\n () => new Set(defaultSelectedKeys),\n );\n\n const selectedKeys = controlledKeys ?? internalKeys;\n\n function handleSelect(key: string) {\n if (selectionMode === \"none\") return;\n let next: Set<string>;\n if (selectionMode === \"single\") {\n next = selectedKeys.has(key) ? new Set() : new Set([key]);\n } else {\n next = new Set(selectedKeys);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n }\n if (!controlledKeys) setInternalKeys(next);\n onSelectionChange?.(next);\n }\n\n return (\n <TagGroupContext.Provider\n value={{\n size,\n selectionMode,\n selectedKeys,\n onItemSelect: handleSelect,\n onItemRemove: onRemove,\n }}\n >\n <div\n className={cn(\"flex flex-wrap items-center gap-1.5\", className)}\n data-slot=\"tag-group\"\n role={selectionMode !== \"none\" ? \"group\" : undefined}\n >\n {children}\n </div>\n </TagGroupContext.Provider>\n );\n}\n\n// ─── Tag ──────────────────────────────────────────────────────────────────────\n\nconst tagVariants = cva(\n [\n \"relative inline-flex items-center rounded-full border font-medium whitespace-nowrap select-none\",\n \"outline-none transition-colors\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background\",\n ],\n {\n defaultVariants: { size: \"md\" },\n variants: {\n size: {\n sm: \"h-6 gap-1 px-2 text-xs\",\n md: \"h-7 gap-1.5 px-2.5 text-sm\",\n lg: \"h-8 gap-2 px-3 text-base\",\n },\n },\n },\n);\n\nconst iconSize = { sm: \"size-3\", md: \"size-3.5\", lg: \"size-4\" } as const;\nconst countSize = {\n sm: \"h-4 min-w-4 text-[10px]\",\n md: \"h-[18px] min-w-[18px] text-xs\",\n lg: \"h-5 min-w-5 text-sm\",\n} as const;\n// Gap between an icon child and the label text, matching the root gap per size.\nconst labelGap = { sm: \"gap-1\", md: \"gap-1.5\", lg: \"gap-2\" } as const;\n\ninterface TagProps extends Omit<React.ComponentProps<\"span\">, \"children\"> {\n /** Unique value used for selection and removal tracking. */\n value?: string;\n size?: TagSize;\n /** Numeric count displayed as a small pill beside the label. */\n count?: number;\n /** Called when the remove button is clicked. Renders the X button. */\n onRemove?: () => void;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nfunction Tag({\n value = \"\",\n size: sizeProp,\n count,\n onRemove: onRemoveProp,\n disabled,\n children,\n className,\n ...props\n}: TagProps) {\n const ctx = useContext(TagGroupContext);\n\n const size = sizeProp ?? ctx?.size ?? \"md\";\n const selectionMode = ctx?.selectionMode ?? \"none\";\n const isSelected = Boolean(ctx?.selectedKeys.has(value));\n const isSelectable = selectionMode !== \"none\";\n const handleRemove =\n onRemoveProp ??\n (value && ctx?.onItemRemove ? () => ctx.onItemRemove!(value) : undefined);\n\n return (\n <span\n aria-disabled={disabled || undefined}\n aria-pressed={isSelectable ? isSelected : undefined}\n className={cn(\n tagVariants({ size }),\n \"border-input bg-background text-foreground\",\n isSelectable && !disabled && \"cursor-pointer hover:bg-accent\",\n isSelected && \"border-brand bg-brand/10 text-brand hover:bg-brand/15\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n data-disabled={disabled || undefined}\n data-selected={isSelected || undefined}\n data-slot=\"tag\"\n role={isSelectable ? \"button\" : undefined}\n tabIndex={isSelectable && !disabled ? 0 : undefined}\n onClick={\n isSelectable && !disabled ? () => ctx?.onItemSelect(value) : undefined\n }\n onKeyDown={\n isSelectable && !disabled\n ? (e) => {\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n ctx?.onItemSelect(value);\n }\n }\n : undefined\n }\n {...props}\n >\n {isSelected && isSelectable && (\n <CheckIcon\n aria-hidden\n className={cn(\"shrink-0\", iconSize[size])}\n strokeWidth={2.5}\n />\n )}\n {/* Flex label wrapper so icon children sit inline beside the text —\n Tailwind preflight makes SVGs display:block, which would otherwise\n stack them above the label. */}\n <span\n className={cn(\n \"inline-flex min-w-0 items-center [&_svg]:shrink-0\",\n labelGap[size],\n )}\n data-slot=\"tag-label\"\n >\n {children}\n </span>\n {count !== undefined && (\n <span\n className={cn(\n \"inline-flex items-center justify-center rounded-full px-1 font-medium tabular-nums\",\n countSize[size],\n isSelected\n ? \"bg-brand/20 text-brand\"\n : \"bg-muted text-muted-foreground\",\n )}\n data-slot=\"tag-count\"\n >\n {count}\n </span>\n )}\n {handleRemove && (\n <button\n aria-label=\"Remove\"\n className={cn(\n \"-me-0.5 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full\",\n \"text-current opacity-60 outline-none transition-opacity\",\n \"hover:opacity-100 focus-visible:ring-1 focus-visible:ring-ring focus-visible:opacity-100\",\n iconSize[size],\n )}\n data-slot=\"tag-remove\"\n onClick={(e) => {\n e.stopPropagation();\n handleRemove();\n }}\n tabIndex={-1}\n type=\"button\"\n >\n <XIcon aria-hidden className=\"pointer-events-none size-full\" />\n </button>\n )}\n </span>\n );\n}\n\nexport { TagGroup, Tag };\nexport type { TagSize, TagSelectionMode, TagGroupProps, TagProps };\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function useFirstRender() {\n const [firstRender, setFirstRender] = useState(true);\n useEffect(() => {\n setFirstRender(false);\n }, []);\n return firstRender;\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst subscribe = (onVisibilityChange: () => void) => {\n window.addEventListener(\"visibilitychange\", onVisibilityChange);\n return () =>\n window.removeEventListener(\"visibilitychange\", onVisibilityChange);\n};\nconst getSnapshot = () => !document.hidden;\nconst getServerSnapshot = () => true;\n\nfunction useIsTabActive() {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\nexport default useIsTabActive;\n","\"use client\";\n\nimport { type Duration, intervalToDuration } from \"date-fns\";\nimport { useEffect, useState } from \"react\";\nimport { useFirstRender } from \"../../lib/hooks/use-first-render\";\nimport useIsTabActive from \"../../lib/hooks/use-is-tab-active\";\n\nfunction TargetCountdown({\n target,\n children,\n}: {\n target: Date | number;\n children: (\n duration: Duration | null,\n isFirstRender: boolean,\n ) => React.ReactNode;\n}) {\n const [now, setNow] = useState(Date.now());\n const [start] = useState(() => now);\n const isTabActive = useIsTabActive();\n\n useEffect(() => {\n if (!isTabActive || now >= Number(target)) return;\n const timeout = setTimeout(\n () => {\n setNow(Date.now());\n },\n 1000 - ((Date.now() - start) % 1000),\n );\n return () => clearTimeout(timeout);\n }, [start, now, isTabActive, target]);\n\n const isFirstRender = useFirstRender();\n\n if (isFirstRender || now >= Number(target))\n return children(null, isFirstRender);\n return children(\n intervalToDuration({\n start: now,\n end: target,\n }),\n isFirstRender,\n );\n}\n\nexport default TargetCountdown;\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Timeline({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n className={cn(\n \"flex flex-col [&>li:last-child_[data-slot=timeline-connector]]:hidden\",\n className,\n )}\n data-slot=\"timeline\"\n {...props}\n />\n );\n}\n\nfunction TimelineItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n className={cn(\"group/timeline-item flex gap-4\", className)}\n data-slot=\"timeline-item\"\n {...props}\n />\n );\n}\n\n/** The marker column: a dot and the connecting line beneath it. */\nfunction TimelineDot({\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className=\"flex w-7 shrink-0 flex-col items-center\"\n data-slot=\"timeline-marker\"\n >\n <div\n className={cn(\n \"mt-0.5 flex size-3 shrink-0 items-center justify-center rounded-full border-2 border-primary bg-background [&_svg]:size-3.5 has-[svg]:mt-0 has-[svg]:size-7 has-[svg]:border-transparent has-[svg]:bg-primary has-[svg]:text-primary-foreground\",\n className,\n )}\n data-slot=\"timeline-dot\"\n {...props}\n >\n {children}\n </div>\n <div\n className=\"my-1 w-0.5 flex-1 rounded-full bg-border\"\n data-slot=\"timeline-connector\"\n />\n </div>\n );\n}\n\nfunction TimelineContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-1 flex-col gap-1 pb-8 group-last/timeline-item:pb-0\",\n className,\n )}\n data-slot=\"timeline-content\"\n {...props}\n />\n );\n}\n\nfunction TimelineTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"font-medium text-sm leading-tight\", className)}\n data-slot=\"timeline-title\"\n {...props}\n />\n );\n}\n\nfunction TimelineTime({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"font-medium text-muted-foreground text-xs tabular-nums\",\n className,\n )}\n data-slot=\"timeline-time\"\n {...props}\n />\n );\n}\n\nfunction TimelineDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"timeline-description\"\n {...props}\n />\n );\n}\n\nexport {\n Timeline,\n TimelineItem,\n TimelineDot,\n TimelineContent,\n TimelineTitle,\n TimelineTime,\n TimelineDescription,\n};\n","\"use client\";\n\nimport { EditorContent, useEditor } from \"@tiptap/react\";\nimport { BubbleMenu } from \"@tiptap/react/menus\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport type { Editor } from \"@tiptap/core\";\nimport type * as React from \"react\";\nimport {\n AlignCenter,\n AlignJustify,\n AlignLeft,\n AlignRight,\n Bold,\n Italic,\n List,\n ListOrdered,\n Redo2,\n Strikethrough,\n Undo2,\n} from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport {\n Tooltip,\n TooltipPopup,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\n// Inject placeholder + list styles once (client only, idempotent)\nif (typeof window !== \"undefined\") {\n const CSS_ID = \"cc-text-editor\";\n if (!document.getElementById(CSS_ID)) {\n const s = document.createElement(\"style\");\n s.id = CSS_ID;\n s.textContent = [\n \".cc-text-editor .ProseMirror{outline:none}\",\n \".cc-text-editor .ProseMirror p.is-editor-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--muted-foreground);pointer-events:none;height:0}\",\n \".cc-text-editor .ProseMirror ul{list-style-type:disc;padding-left:1.5em}\",\n \".cc-text-editor .ProseMirror ol{list-style-type:decimal;padding-left:1.5em}\",\n \".cc-text-editor .ProseMirror li{margin-top:0.15em}\",\n \".cc-text-editor .ProseMirror > * + *{margin-top:0.4em}\",\n ].join(\"\\n\");\n document.head.appendChild(s);\n }\n}\n\n// ─── Toolbar internals ────────────────────────────────────────────────────────\n\ninterface TBtnProps {\n icon: React.ReactNode;\n label: string;\n onClick?: () => void;\n isActive?: boolean;\n disabled?: boolean;\n compact?: boolean;\n tooltip?: string;\n}\n\nfunction TBtn({ icon, label, onClick, isActive, disabled, compact, tooltip }: TBtnProps) {\n const btnClass = cn(\n \"relative inline-flex shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent outline-none transition-[background-color,box-shadow] duration-100\",\n \"text-muted-foreground hover:bg-accent hover:text-foreground\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background\",\n \"disabled:pointer-events-none disabled:opacity-40\",\n \"data-[active]:bg-accent data-[active]:text-foreground\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n compact ? \"size-6 [&_svg]:size-3\" : \"size-7 [&_svg]:size-3.5\",\n );\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-label={label}\n data-active={isActive ? \"\" : undefined}\n className={btnClass}\n >\n {icon}\n </TooltipTrigger>\n <TooltipPopup>{tooltip}</TooltipPopup>\n </Tooltip>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-label={label}\n data-active={isActive ? \"\" : undefined}\n className={btnClass}\n >\n {icon}\n </button>\n );\n}\n\nfunction TSep() {\n return <div className=\"mx-0.5 h-4 w-px shrink-0 bg-border\" />;\n}\n\ninterface ToolbarButtonsProps {\n editor: Editor | null;\n compact?: boolean;\n withTooltips?: boolean;\n}\n\nfunction ToolbarButtons({ editor, compact, withTooltips }: ToolbarButtonsProps) {\n if (!editor) return null;\n const t = (label: string) => (withTooltips ? label : undefined);\n\n return (\n <>\n <TBtn\n icon={<Undo2 />}\n label=\"Undo\"\n tooltip={t(\"Undo\")}\n compact={compact}\n onClick={() => editor.chain().focus().undo().run()}\n disabled={!editor.can().undo()}\n />\n <TBtn\n icon={<Redo2 />}\n label=\"Redo\"\n tooltip={t(\"Redo\")}\n compact={compact}\n onClick={() => editor.chain().focus().redo().run()}\n disabled={!editor.can().redo()}\n />\n <TSep />\n <TBtn\n icon={<Bold />}\n label=\"Bold\"\n tooltip={t(\"Bold\")}\n compact={compact}\n isActive={editor.isActive(\"bold\")}\n onClick={() => editor.chain().focus().toggleBold().run()}\n />\n <TBtn\n icon={<Italic />}\n label=\"Italic\"\n tooltip={t(\"Italic\")}\n compact={compact}\n isActive={editor.isActive(\"italic\")}\n onClick={() => editor.chain().focus().toggleItalic().run()}\n />\n <TBtn\n icon={<Strikethrough />}\n label=\"Strikethrough\"\n tooltip={t(\"Strikethrough\")}\n compact={compact}\n isActive={editor.isActive(\"strike\")}\n onClick={() => editor.chain().focus().toggleStrike().run()}\n />\n <TSep />\n <TBtn\n icon={<List />}\n label=\"Bullet list\"\n tooltip={t(\"Bullet list\")}\n compact={compact}\n isActive={editor.isActive(\"bulletList\")}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n />\n <TBtn\n icon={<ListOrdered />}\n label=\"Ordered list\"\n tooltip={t(\"Ordered list\")}\n compact={compact}\n isActive={editor.isActive(\"orderedList\")}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n />\n <TSep />\n <TBtn\n icon={<AlignLeft />}\n label=\"Align left\"\n tooltip={t(\"Align left\")}\n compact={compact}\n isActive={editor.isActive({ textAlign: \"left\" })}\n onClick={() => editor.chain().focus().setTextAlign(\"left\").run()}\n />\n <TBtn\n icon={<AlignCenter />}\n label=\"Align center\"\n tooltip={t(\"Align center\")}\n compact={compact}\n isActive={editor.isActive({ textAlign: \"center\" })}\n onClick={() => editor.chain().focus().setTextAlign(\"center\").run()}\n />\n <TBtn\n icon={<AlignRight />}\n label=\"Align right\"\n tooltip={t(\"Align right\")}\n compact={compact}\n isActive={editor.isActive({ textAlign: \"right\" })}\n onClick={() => editor.chain().focus().setTextAlign(\"right\").run()}\n />\n <TBtn\n icon={<AlignJustify />}\n label=\"Justify\"\n tooltip={t(\"Justify\")}\n compact={compact}\n isActive={editor.isActive({ textAlign: \"justify\" })}\n onClick={() => editor.chain().focus().setTextAlign(\"justify\").run()}\n />\n </>\n );\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\nexport interface TextEditorProps {\n /** Compact (sm) or standard (md) size */\n size?: \"sm\" | \"md\";\n /** Placeholder when the editor is empty */\n placeholder?: string;\n /** Initial HTML content */\n content?: string;\n /** Called with the updated HTML on every change */\n onChange?: (html: string) => void;\n /** Show tooltips on every toolbar button */\n withTooltips?: boolean;\n /** Replace the fixed toolbar with a selection-triggered floating toolbar */\n floatingToolbar?: boolean;\n /** Extra className for the outer wrapper */\n className?: string;\n}\n\nexport function TextEditor({\n size = \"md\",\n placeholder = \"Start typing...\",\n content,\n onChange,\n withTooltips = false,\n floatingToolbar = false,\n className,\n}: TextEditorProps) {\n const editor = useEditor(\n {\n immediatelyRender: false,\n extensions: [\n StarterKit,\n TextAlign.configure({ types: [\"heading\", \"paragraph\"] }),\n Placeholder.configure({\n placeholder,\n emptyEditorClass: \"is-editor-empty\",\n }),\n ],\n content: content ?? \"\",\n onUpdate({ editor: e }) {\n onChange?.(e.getHTML());\n },\n },\n );\n\n const compact = size === \"sm\";\n\n return (\n <TooltipProvider>\n <div\n data-slot=\"text-editor\"\n className={cn(\n \"cc-text-editor relative overflow-hidden rounded-xl border border-input bg-background\",\n \"not-dark:bg-clip-padding shadow-xs/5\",\n className,\n )}\n >\n {/* Fixed toolbar */}\n {!floatingToolbar && (\n <div\n className={cn(\n \"flex flex-wrap items-center gap-0.5 border-b border-input\",\n compact ? \"px-1.5 py-1\" : \"px-2 py-1.5\",\n )}\n >\n <ToolbarButtons editor={editor} compact={compact} withTooltips={withTooltips} />\n </div>\n )}\n\n {/* Floating (bubble) toolbar — appears on text selection */}\n {floatingToolbar && editor && (\n <BubbleMenu\n editor={editor}\n className={cn(\n \"flex items-center gap-0.5 rounded-lg border border-input bg-popover not-dark:bg-clip-padding p-1\",\n \"relative shadow-md/8 before:pointer-events-none before:absolute before:inset-0\",\n \"before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)]\",\n )}\n >\n <ToolbarButtons editor={editor} compact withTooltips={withTooltips} />\n </BubbleMenu>\n )}\n\n {/* Editor content */}\n <EditorContent\n editor={editor}\n className={cn(\n \"text-foreground\",\n compact\n ? \"[&_.ProseMirror]:min-h-24 [&_.ProseMirror]:px-3 [&_.ProseMirror]:py-2 [&_.ProseMirror]:text-sm\"\n : \"[&_.ProseMirror]:min-h-36 [&_.ProseMirror]:px-4 [&_.ProseMirror]:py-3 [&_.ProseMirror]:text-sm\",\n )}\n />\n </div>\n </TooltipProvider>\n );\n}\n","\"use client\";\n\nimport { Toast } from \"@base-ui/react/toast\";\nimport {\n CircleAlertIcon,\n CircleCheckIcon,\n InfoIcon,\n LoaderCircleIcon,\n TriangleAlertIcon,\n} from \"lucide-react\";\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst toastManager = Toast.createToastManager();\nconst anchoredToastManager = Toast.createToastManager();\n\nconst TOAST_ICONS = {\n error: CircleAlertIcon,\n info: InfoIcon,\n loading: LoaderCircleIcon,\n success: CircleCheckIcon,\n warning: TriangleAlertIcon,\n} as const;\n\ntype ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\ninterface ToastProviderProps extends Toast.Provider.Props {\n position?: ToastPosition;\n}\n\nfunction ToastProvider({\n children,\n position = \"bottom-right\",\n ...props\n}: ToastProviderProps) {\n return (\n <Toast.Provider toastManager={toastManager} {...props}>\n {children}\n <Toasts position={position} />\n </Toast.Provider>\n );\n}\n\nfunction Toasts({ position = \"bottom-right\" }: { position: ToastPosition }) {\n const { toasts } = Toast.useToastManager();\n const isTop = position.startsWith(\"top\");\n\n return (\n <Toast.Portal data-slot=\"toast-portal\">\n <Toast.Viewport\n className={cn(\n \"fixed z-60 mx-auto flex w-[calc(100%-var(--toast-inset)*2)] max-w-90 [--toast-inset:--spacing(4)] sm:[--toast-inset:--spacing(8)]\",\n // Vertical positioning\n \"data-[position*=top]:top-(--toast-inset)\",\n \"data-[position*=bottom]:bottom-(--toast-inset)\",\n // Horizontal positioning\n \"data-[position*=left]:left-(--toast-inset)\",\n \"data-[position*=right]:right-(--toast-inset)\",\n \"data-[position*=center]:-translate-x-1/2 data-[position*=center]:left-1/2\",\n )}\n data-position={position}\n data-slot=\"toast-viewport\"\n >\n {toasts.map((toast) => {\n const Icon = toast.type\n ? TOAST_ICONS[toast.type as keyof typeof TOAST_ICONS]\n : null;\n\n return (\n <Toast.Root\n className={cn(\n \"absolute z-[calc(9999-var(--toast-index))] h-(--toast-calc-height) w-full select-none rounded-lg border bg-popover not-dark:bg-clip-padding text-popover-foreground shadow-lg/5 [transition:transform_.5s_cubic-bezier(.22,1,.36,1),opacity_.5s,height_.15s] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n // Base positioning using data-position\n \"data-[position*=right]:right-0 data-[position*=right]:left-auto\",\n \"data-[position*=left]:right-auto data-[position*=left]:left-0\",\n \"data-[position*=center]:right-0 data-[position*=center]:left-0\",\n \"data-[position*=top]:top-0 data-[position*=top]:bottom-auto data-[position*=top]:origin-top\",\n \"data-[position*=bottom]:top-auto data-[position*=bottom]:bottom-0 data-[position*=bottom]:origin-bottom\",\n // Gap fill for hover\n \"after:absolute after:left-0 after:h-[calc(var(--toast-gap)+1px)] after:w-full\",\n \"data-[position*=top]:after:top-full\",\n \"data-[position*=bottom]:after:bottom-full\",\n // Define some variables\n \"[--toast-calc-height:var(--toast-frontmost-height,var(--toast-height))] [--toast-gap:--spacing(3)] [--toast-peek:--spacing(3)] [--toast-scale:calc(max(0,1-(var(--toast-index)*.1)))] [--toast-shrink:calc(1-var(--toast-scale))]\",\n // Define offset-y variable\n \"data-[position*=top]:[--toast-calc-offset-y:calc(var(--toast-offset-y)+var(--toast-index)*var(--toast-gap)+var(--toast-swipe-movement-y))]\",\n \"data-[position*=bottom]:[--toast-calc-offset-y:calc(var(--toast-offset-y)*-1+var(--toast-index)*var(--toast-gap)*-1+var(--toast-swipe-movement-y))]\",\n // Default state transform\n \"data-[position*=top]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--toast-peek))+(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]\",\n \"data-[position*=bottom]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--toast-peek))-(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]\",\n // Limited state\n \"data-limited:opacity-0\",\n // Expanded state\n \"data-expanded:h-(--toast-height)\",\n \"data-position:data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(var(--toast-calc-offset-y))]\",\n // Starting and ending animations\n \"data-[position*=top]:data-starting-style:transform-[translateY(calc(-100%-var(--toast-inset)))]\",\n \"data-[position*=bottom]:data-starting-style:transform-[translateY(calc(100%+var(--toast-inset)))]\",\n \"data-ending-style:opacity-0\",\n // Ending animations (direction-aware)\n \"data-ending-style:not-data-limited:not-data-swipe-direction:transform-[translateY(calc(100%+var(--toast-inset)))]\",\n \"data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]\",\n \"data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]\",\n // Ending animations (expanded)\n \"data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]\",\n )}\n data-position={position}\n key={toast.id}\n swipeDirection={\n position.includes(\"center\")\n ? [isTop ? \"up\" : \"down\"]\n : position.includes(\"left\")\n ? [\"left\", isTop ? \"up\" : \"down\"]\n : [\"right\", isTop ? \"up\" : \"down\"]\n }\n toast={toast}\n >\n <Toast.Content className=\"pointer-events-auto flex items-center justify-between gap-1.5 overflow-hidden px-3.5 py-3 text-sm transition-opacity duration-250 data-behind:not-data-expanded:pointer-events-none data-behind:opacity-0 data-expanded:opacity-100\">\n <div className=\"flex gap-2\">\n {Icon && (\n <div\n className=\"[&>svg]:h-lh [&>svg]:w-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n data-slot=\"toast-icon\"\n >\n <Icon className=\"in-data-[type=loading]:animate-spin in-data-[type=error]:text-destructive in-data-[type=info]:text-info in-data-[type=success]:text-success in-data-[type=warning]:text-warning in-data-[type=loading]:opacity-80\" />\n </div>\n )}\n\n <div className=\"flex flex-col gap-0.5\">\n <Toast.Title\n className=\"font-medium\"\n data-slot=\"toast-title\"\n />\n <Toast.Description\n className=\"text-muted-foreground\"\n data-slot=\"toast-description\"\n />\n </div>\n </div>\n {toast.actionProps && (\n <Toast.Action\n className={buttonVariants({ size: \"xs\" })}\n data-slot=\"toast-action\"\n >\n {toast.actionProps.children}\n </Toast.Action>\n )}\n </Toast.Content>\n </Toast.Root>\n );\n })}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n\nfunction AnchoredToastProvider({ children, ...props }: Toast.Provider.Props) {\n return (\n <Toast.Provider toastManager={anchoredToastManager} {...props}>\n {children}\n <AnchoredToasts />\n </Toast.Provider>\n );\n}\n\nfunction AnchoredToasts() {\n const { toasts } = Toast.useToastManager();\n\n return (\n <Toast.Portal data-slot=\"toast-portal-anchored\">\n <Toast.Viewport\n className=\"outline-none\"\n data-slot=\"toast-viewport-anchored\"\n >\n {toasts.map((toast) => {\n const Icon = toast.type\n ? TOAST_ICONS[toast.type as keyof typeof TOAST_ICONS]\n : null;\n const tooltipStyle =\n (toast.data as { tooltipStyle?: boolean })?.tooltipStyle ?? false;\n const positionerProps = toast.positionerProps;\n\n if (!positionerProps?.anchor) {\n return null;\n }\n\n return (\n <Toast.Positioner\n className=\"z-50 max-w-[min(--spacing(64),var(--available-width))]\"\n data-slot=\"toast-positioner\"\n key={toast.id}\n sideOffset={positionerProps.sideOffset ?? 4}\n toast={toast}\n >\n <Toast.Root\n className={cn(\n \"relative text-balance border bg-popover not-dark:bg-clip-padding text-popover-foreground text-xs transition-[scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n tooltipStyle\n ? \"rounded-md shadow-md/5 before:rounded-[calc(var(--radius-md)-1px)]\"\n : \"rounded-lg shadow-lg/5 before:rounded-[calc(var(--radius-lg)-1px)]\",\n )}\n data-slot=\"toast-popup\"\n toast={toast}\n >\n {tooltipStyle ? (\n <Toast.Content className=\"pointer-events-auto px-2 py-1\">\n <Toast.Title data-slot=\"toast-title\" />\n </Toast.Content>\n ) : (\n <Toast.Content className=\"pointer-events-auto flex items-center justify-between gap-1.5 overflow-hidden px-3.5 py-3 text-sm\">\n <div className=\"flex gap-2\">\n {Icon && (\n <div\n className=\"[&>svg]:h-lh [&>svg]:w-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n data-slot=\"toast-icon\"\n >\n <Icon className=\"in-data-[type=loading]:animate-spin in-data-[type=error]:text-destructive in-data-[type=info]:text-info in-data-[type=success]:text-success in-data-[type=warning]:text-warning in-data-[type=loading]:opacity-80\" />\n </div>\n )}\n\n <div className=\"flex flex-col gap-0.5\">\n <Toast.Title\n className=\"font-medium\"\n data-slot=\"toast-title\"\n />\n <Toast.Description\n className=\"text-muted-foreground\"\n data-slot=\"toast-description\"\n />\n </div>\n </div>\n {toast.actionProps && (\n <Toast.Action\n className={buttonVariants({ size: \"xs\" })}\n data-slot=\"toast-action\"\n >\n {toast.actionProps.children}\n </Toast.Action>\n )}\n </Toast.Content>\n )}\n </Toast.Root>\n </Toast.Positioner>\n );\n })}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n\nexport {\n ToastProvider,\n type ToastPosition,\n toastManager,\n AnchoredToastProvider,\n anchoredToastManager,\n};\n","\"use client\";\n\nimport { Toolbar as ToolbarPrimitive } from \"@base-ui/react/toolbar\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Toolbar({ className, ...props }: ToolbarPrimitive.Root.Props) {\n return (\n <ToolbarPrimitive.Root\n className={cn(\n \"relative flex gap-2 rounded-xl border bg-card not-dark:bg-clip-padding p-1 text-card-foreground\",\n className,\n )}\n data-slot=\"toolbar\"\n {...props}\n />\n );\n}\n\nfunction ToolbarButton({ className, ...props }: ToolbarPrimitive.Button.Props) {\n return (\n <ToolbarPrimitive.Button\n className={cn(\n \"transition-[box-shadow,background-color,color,filter] duration-150 ease-out [:active:not(:disabled)]:brightness-95\",\n className,\n )}\n data-slot=\"toolbar-button\"\n {...props}\n />\n );\n}\n\nfunction ToolbarLink({ className, ...props }: ToolbarPrimitive.Link.Props) {\n return (\n <ToolbarPrimitive.Link\n className={cn(\n \"transition-[color,opacity] duration-150 ease-out\",\n className,\n )}\n data-slot=\"toolbar-link\"\n {...props}\n />\n );\n}\n\nfunction ToolbarInput({ className, ...props }: ToolbarPrimitive.Input.Props) {\n return (\n <ToolbarPrimitive.Input\n className={cn(className)}\n data-slot=\"toolbar-input\"\n {...props}\n />\n );\n}\n\nfunction ToolbarGroup({ className, ...props }: ToolbarPrimitive.Group.Props) {\n return (\n <ToolbarPrimitive.Group\n className={cn(\"flex items-center gap-1\", className)}\n data-slot=\"toolbar-group\"\n {...props}\n />\n );\n}\n\nfunction ToolbarSeparator({\n className,\n ...props\n}: ToolbarPrimitive.Separator.Props) {\n return (\n <ToolbarPrimitive.Separator\n className={cn(\n \"shrink-0 bg-border data-[orientation=horizontal]:my-0.5 data-[orientation=vertical]:my-1.5 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:not-[[class^='h-']]:not-[[class*='_h-']]:self-stretch\",\n className,\n )}\n data-slot=\"toolbar-separator\"\n {...props}\n />\n );\n}\n\nexport {\n Toolbar,\n ToolbarGroup,\n ToolbarSeparator,\n ToolbarButton,\n ToolbarLink,\n ToolbarInput,\n};\n","\"use client\";\n\nimport { Transition } from \"@headlessui/react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport type React from \"react\";\nimport {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport useResizeObserver from \"use-resize-observer\";\nimport useCallbackRef from \"../../lib/hooks/use-callback-ref\";\nimport { useHover } from \"../../lib/hooks/use-hover\";\nimport { cn } from \"../../lib/utils/css\";\nimport type { AsChildProps } from \"../../types/helpers\";\n\ninterface VerticalScrollFaderContextValue {\n isTopOverflowing: boolean;\n isBottomOverflowing: boolean;\n containerRef: React.RefObject<HTMLElement | null>;\n onScroll: () => void;\n}\n\nconst VerticalScrollFaderContext =\n createContext<VerticalScrollFaderContextValue>({\n isTopOverflowing: false,\n isBottomOverflowing: false,\n containerRef: { current: null },\n onScroll: () => {},\n });\n\nconst getScrollDirection = (element: HTMLElement) =>\n getComputedStyle(element).flexDirection === \"column-reverse\" ? -1 : 1;\n\nfunction VerticalScrollFaderInner(\n { asChild, ...props }: AsChildProps<\"div\">,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const containerRef = useRef<HTMLElement>(null);\n\n const [isTopOverflowing, setIsTopOverflowing] = useState(false);\n const [isBottomOverflowing, setIsBottomOverflowing] = useState(false);\n\n const onScroll = useCallbackRef(() => {\n if (!containerRef.current) return;\n\n const { scrollTop, scrollHeight, clientHeight } = containerRef.current;\n const scrollDirection = getScrollDirection(containerRef.current!);\n setIsTopOverflowing(\n scrollDirection > 0\n ? Math.floor(scrollTop - 1) > 0\n : Math.round(-scrollTop + clientHeight + 1) < scrollHeight,\n );\n setIsBottomOverflowing(\n scrollDirection > 0\n ? Math.round(scrollTop + clientHeight + 1) < scrollHeight\n : Math.floor(-scrollTop - 1) > 0,\n );\n });\n\n const contextValue = useMemo(\n () => ({ isTopOverflowing, isBottomOverflowing, containerRef, onScroll }),\n [isTopOverflowing, isBottomOverflowing, onScroll],\n );\n\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <VerticalScrollFaderContext.Provider value={contextValue}>\n <Slot className=\"relative\" onScroll={onScroll}>\n <Comp ref={ref} {...props} />\n </Slot>\n </VerticalScrollFaderContext.Provider>\n );\n}\n\nconst VerticalScrollFader = forwardRef(VerticalScrollFaderInner);\n\nfunction VerticalScrollFaderContentInner(\n {\n asChild,\n faderSize = \"3rem\",\n showScrollbar,\n ...props\n }: AsChildProps<\"div\"> & {\n faderSize?: string;\n showScrollbar?: boolean;\n },\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const Comp = asChild ? Slot : \"div\";\n const { isTopOverflowing, isBottomOverflowing, containerRef, onScroll } =\n useContext(VerticalScrollFaderContext);\n\n useResizeObserver({\n ref: containerRef as React.RefObject<Element>,\n onResize: onScroll,\n });\n\n // A single vertical mask gradient fades the top and bottom edges over their\n // fader sizes. An edge that isn't overflowing has a 0 fader size, so it shows\n // no fade. Inline styles (with -webkit- for Safari) keep this independent of\n // Tailwind mask-utility emission.\n const maskImage = `linear-gradient(to bottom, transparent 0, #000 var(--top-fader-size), #000 calc(100% - var(--bottom-fader-size)), transparent 100%)`;\n\n return (\n <Slot\n onScroll={onScroll}\n className={cn(\n \"overflow-auto [transition:--top-fader-size_150ms,--bottom-fader-size_150ms]\",\n !showScrollbar &&\n \"[scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n )}\n style={{\n \"--fader-size\": faderSize,\n \"--top-fader-size\": isTopOverflowing ? \"var(--fader-size)\" : \"0rem\",\n \"--bottom-fader-size\": isBottomOverflowing\n ? \"var(--fader-size)\"\n : \"0rem\",\n maskImage,\n WebkitMaskImage: maskImage,\n }}\n ref={containerRef}\n >\n <Comp ref={ref} {...props} />\n </Slot>\n );\n}\n\nconst VerticalScrollFaderContent = forwardRef(VerticalScrollFaderContentInner);\n\nfunction VerticalScrollFaderTopScrollerInner(\n { asChild, ...props }: AsChildProps<\"button\">,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const Comp = asChild ? Slot : \"button\";\n const { containerRef, isTopOverflowing } = useContext(\n VerticalScrollFaderContext,\n );\n const onClick = useCallbackRef(() => {\n if (!containerRef.current) return;\n containerRef.current.scrollBy({\n top: -containerRef.current.clientHeight,\n behavior: \"smooth\",\n });\n });\n\n const [hoverRef, hovered] = useHover<HTMLElement>({\n mounted: isTopOverflowing,\n });\n useEffect(() => {\n if (!hovered || !isTopOverflowing) return;\n let stopped = false;\n let animationFrameId: number;\n let startTime: DOMHighResTimeStamp;\n\n const animate = (timestamp: DOMHighResTimeStamp) => {\n if (stopped) return;\n if (!startTime) startTime = timestamp;\n const elapsed = Math.min(timestamp - startTime, 2000);\n containerRef.current?.scrollBy({\n top: -Math.log2(elapsed + 1),\n });\n animationFrameId = requestAnimationFrame(animate);\n };\n animationFrameId = requestAnimationFrame(animate);\n\n return () => {\n stopped = true;\n cancelAnimationFrame(animationFrameId);\n };\n }, [hovered, isTopOverflowing, containerRef.current?.scrollBy]);\n\n return (\n <Transition show={isTopOverflowing}>\n <Slot onClick={onClick} ref={hoverRef}>\n <Comp {...(asChild ? {} : { type: \"button\" })} ref={ref} {...props} />\n </Slot>\n </Transition>\n );\n}\n\nconst VerticalScrollFaderTopScroller = forwardRef(\n VerticalScrollFaderTopScrollerInner,\n);\n\nfunction VerticalScrollFaderBottomScrollerInner(\n { asChild, ...props }: AsChildProps<\"button\">,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const Comp = asChild ? Slot : \"button\";\n const { containerRef, isBottomOverflowing } = useContext(\n VerticalScrollFaderContext,\n );\n const onClick = useCallbackRef(() => {\n if (!containerRef.current) return;\n containerRef.current.scrollBy({\n top: containerRef.current.clientHeight,\n behavior: \"smooth\",\n });\n });\n const [hoverRef, hovered] = useHover({\n mounted: isBottomOverflowing,\n });\n useEffect(() => {\n if (!hovered || !isBottomOverflowing) return;\n let stopped = false;\n let animationFrameId: number;\n let startTime: DOMHighResTimeStamp;\n\n const animate = (timestamp: DOMHighResTimeStamp) => {\n if (stopped) return;\n if (!startTime) startTime = timestamp;\n const elapsed = Math.min(timestamp - startTime, 2000);\n containerRef.current?.scrollBy({\n top: Math.log2(elapsed + 1),\n });\n animationFrameId = requestAnimationFrame(animate);\n };\n animationFrameId = requestAnimationFrame(animate);\n\n return () => {\n stopped = true;\n cancelAnimationFrame(animationFrameId);\n };\n }, [hovered, isBottomOverflowing, containerRef.current?.scrollBy]);\n\n return (\n <Transition show={isBottomOverflowing}>\n <Slot onClick={onClick} ref={hoverRef}>\n <Comp {...(asChild ? {} : { type: \"button\" })} ref={ref} {...props} />\n </Slot>\n </Transition>\n );\n}\n\nconst VerticalScrollFaderBottomScroller = forwardRef(\n VerticalScrollFaderBottomScrollerInner,\n);\n\nexport {\n VerticalScrollFader,\n VerticalScrollFaderContent,\n VerticalScrollFaderTopScroller,\n VerticalScrollFaderBottomScroller,\n};\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n Maximize2Icon,\n Minimize2Icon,\n PauseIcon,\n PlayIcon,\n Volume2Icon,\n VolumeXIcon,\n} from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst videoPlayerVariants = cva(\n \"group relative overflow-hidden rounded-2xl bg-black ring-1 ring-inset ring-white/10\",\n {\n defaultVariants: { size: \"md\" },\n variants: {\n size: {\n sm: \"w-full max-w-xs\",\n md: \"w-full max-w-lg\",\n lg: \"w-full max-w-2xl\",\n },\n },\n },\n);\n\ninterface VideoPlayerProps\n extends Omit<React.ComponentProps<\"div\">, \"title\">,\n VariantProps<typeof videoPlayerVariants> {\n src: string;\n poster?: string;\n title?: string;\n autoPlay?: boolean;\n loop?: boolean;\n}\n\nfunction VideoPlayer({\n className,\n size,\n src,\n poster,\n title,\n autoPlay = false,\n loop = false,\n ...props\n}: VideoPlayerProps) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const videoRef = React.useRef<HTMLVideoElement>(null);\n const hideTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const [playing, setPlaying] = React.useState(false);\n const [currentTime, setCurrentTime] = React.useState(0);\n const [duration, setDuration] = React.useState(0);\n const [muted, setMuted] = React.useState(false);\n const [fullscreen, setFullscreen] = React.useState(false);\n const [controlsVisible, setControlsVisible] = React.useState(true);\n\n const clearHideTimer = () => {\n if (hideTimerRef.current) clearTimeout(hideTimerRef.current);\n };\n\n const scheduleHide = React.useCallback(() => {\n clearHideTimer();\n hideTimerRef.current = setTimeout(() => setControlsVisible(false), 2500);\n }, []);\n\n React.useEffect(() => () => clearHideTimer(), []);\n\n React.useEffect(() => {\n if (!playing) {\n clearHideTimer();\n setControlsVisible(true);\n }\n }, [playing]);\n\n React.useEffect(() => {\n const handler = () => setFullscreen(!!document.fullscreenElement);\n document.addEventListener(\"fullscreenchange\", handler);\n return () => document.removeEventListener(\"fullscreenchange\", handler);\n }, []);\n\n const handleMouseMove = () => {\n setControlsVisible(true);\n if (playing) scheduleHide();\n };\n\n const handleMouseLeave = () => {\n if (playing) setControlsVisible(false);\n };\n\n const togglePlay = () => {\n const v = videoRef.current;\n if (!v) return;\n if (v.paused) {\n v.play();\n } else {\n v.pause();\n }\n };\n\n const handleSeek = (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = videoRef.current;\n if (!v) return;\n const t = Number(e.target.value);\n v.currentTime = t;\n setCurrentTime(t);\n };\n\n const toggleMute = () => {\n const v = videoRef.current;\n if (!v) return;\n v.muted = !v.muted;\n setMuted(v.muted);\n };\n\n const toggleFullscreen = () => {\n const el = containerRef.current;\n if (!el) return;\n if (!document.fullscreenElement) {\n el.requestFullscreen().catch(() => {});\n } else {\n document.exitFullscreen().catch(() => {});\n }\n };\n\n const formatTime = (s: number) => {\n if (!isFinite(s) || s < 0) return \"0:00\";\n const m = Math.floor(s / 60);\n const sec = Math.floor(s % 60);\n return `${m}:${sec.toString().padStart(2, \"0\")}`;\n };\n\n const progress = duration > 0 ? (currentTime / duration) * 100 : 0;\n\n return (\n <div\n ref={containerRef}\n className={cn(videoPlayerVariants({ size }), className)}\n data-slot=\"video-player\"\n onMouseLeave={handleMouseLeave}\n onMouseMove={handleMouseMove}\n {...props}\n >\n {/* Video */}\n <video\n ref={videoRef}\n autoPlay={autoPlay}\n className=\"aspect-video w-full object-cover\"\n loop={loop}\n playsInline\n poster={poster}\n src={src}\n onEnded={() => setPlaying(false)}\n onLoadedMetadata={() => {\n const v = videoRef.current;\n if (v) setDuration(v.duration);\n }}\n onPause={() => setPlaying(false)}\n onPlay={() => {\n setPlaying(true);\n scheduleHide();\n }}\n onTimeUpdate={() => {\n const v = videoRef.current;\n if (v) setCurrentTime(v.currentTime);\n }}\n onClick={togglePlay}\n />\n\n {/* Center play overlay — visible when paused */}\n {!playing && (\n <button\n className=\"absolute inset-0 flex cursor-pointer items-center justify-center bg-black/20\"\n data-slot=\"video-player-overlay\"\n type=\"button\"\n onClick={togglePlay}\n >\n <span className=\"flex size-14 items-center justify-center rounded-full bg-white/90 text-black shadow-lg ring-1 ring-inset ring-white/20 backdrop-blur-sm transition-transform hover:scale-105\">\n <PlayIcon className=\"size-5 translate-x-0.5\" />\n </span>\n </button>\n )}\n\n {/* Controls */}\n <div\n className={cn(\n \"absolute inset-x-0 bottom-0 flex flex-col gap-2 bg-gradient-to-t from-black/70 via-black/30 to-transparent px-3 pb-3 pt-10 transition-opacity duration-200\",\n controlsVisible ? \"opacity-100\" : \"opacity-0\",\n )}\n data-slot=\"video-player-controls\"\n >\n {/* Scrubber */}\n <div className=\"relative flex items-center\">\n <div className=\"relative h-1 w-full overflow-hidden rounded-full bg-white/25\">\n <div\n className=\"pointer-events-none h-full rounded-full bg-white\"\n style={{ width: `${progress}%` }}\n />\n </div>\n <input\n aria-label=\"Seek\"\n className=\"absolute inset-0 h-full w-full cursor-pointer opacity-0\"\n max={duration || 100}\n min={0}\n step={0.1}\n type=\"range\"\n value={currentTime}\n onChange={handleSeek}\n />\n </div>\n\n {/* Button row */}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-0.5\">\n <button\n aria-label={playing ? \"Pause\" : \"Play\"}\n className=\"flex size-7 items-center justify-center rounded-md text-white/80 transition-colors hover:bg-white/10 hover:text-white\"\n type=\"button\"\n onClick={togglePlay}\n >\n {playing ? (\n <PauseIcon className=\"size-4\" />\n ) : (\n <PlayIcon className=\"size-4\" />\n )}\n </button>\n\n <button\n aria-label={muted ? \"Unmute\" : \"Mute\"}\n className=\"flex size-7 items-center justify-center rounded-md text-white/80 transition-colors hover:bg-white/10 hover:text-white\"\n type=\"button\"\n onClick={toggleMute}\n >\n {muted ? (\n <VolumeXIcon className=\"size-4\" />\n ) : (\n <Volume2Icon className=\"size-4\" />\n )}\n </button>\n\n <span className=\"select-none pl-1 text-[11px] tabular-nums text-white/60\">\n {formatTime(currentTime)} / {formatTime(duration)}\n </span>\n </div>\n\n <div className=\"flex items-center gap-1.5\">\n {title ? (\n <span className=\"max-w-28 truncate text-[11px] font-medium text-white/50\">\n {title}\n </span>\n ) : null}\n\n <button\n aria-label={fullscreen ? \"Exit fullscreen\" : \"Enter fullscreen\"}\n className=\"flex size-7 items-center justify-center rounded-md text-white/80 transition-colors hover:bg-white/10 hover:text-white\"\n type=\"button\"\n onClick={toggleFullscreen}\n >\n {fullscreen ? (\n <Minimize2Icon className=\"size-4\" />\n ) : (\n <Maximize2Icon className=\"size-4\" />\n )}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport { VideoPlayer, videoPlayerVariants };\n","import { Slot, Slottable } from \"@radix-ui/react-slot\";\nimport clsx from \"clsx\";\nimport { isValidElement } from \"react\";\nimport type { AsChildProps } from \"../../types/helpers\";\n\ninterface DashboardHeaderProps extends Omit<AsChildProps<\"div\">, \"title\"> {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n rightActions?: React.ReactNode;\n breadcrumb?: React.ReactNode;\n}\n\nexport function DashboardHeader({\n title,\n subtitle,\n className,\n children,\n asChild,\n rightActions,\n breadcrumb,\n ...props\n}: DashboardHeaderProps) {\n const TitleComp = isValidElement(title) ? Slot : \"div\";\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n className={clsx(\"flex flex-col border-b rounded-t-lg\", className)}\n {...props}\n >\n <div className={clsx(\"flex flex-col gap-4 p-4\")}>\n {breadcrumb}\n {(title || subtitle || rightActions) && (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-3 min-h-8\">\n {title && (\n <TitleComp className=\"grow min-w-0 text-lg font-medium leading-7 tracking-[-0.18px] text-foreground\">\n {title}\n </TitleComp>\n )}\n {rightActions}\n </div>\n {subtitle && (\n <div className=\"hidden md:block text-sm font-normal leading-5 text-muted-foreground\">\n {subtitle}\n </div>\n )}\n </div>\n )}\n <Slottable>{children}</Slottable>\n </div>\n </Comp>\n );\n}\n","import { Slot } from \"@radix-ui/react-slot\";\nimport clsx from \"clsx\";\nimport type { AsChildProps } from \"../../types/helpers\";\nimport { ScrollArea } from \"../ui/scroll-area\";\n\ninterface DashboardPanelProps extends AsChildProps<\"div\"> {\n header?: React.ReactNode;\n}\n\nexport function DashboardPanel({\n className,\n asChild,\n children,\n header,\n ...props\n}: DashboardPanelProps) {\n const Comp = asChild ? Slot : \"div\";\n return (\n <Comp\n className={clsx(\n \"flex flex-col grow min-h-0 min-w-0 bg-background rounded border\",\n className,\n )}\n {...props}\n >\n {header}\n <ScrollArea className=\"flex grow flex-col min-h-0 *:data-[slot=scroll-area-viewport]:p-4\">\n {children}\n </ScrollArea>\n </Comp>\n );\n}\n\nexport default DashboardPanel;\n","\"use client\";\n\nimport { LifeBuoy, LogOut, Search, Settings } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { AnimatedThemeToggler } from \"../ui/animated-theme-toggler\";\nimport { Avatar } from \"../ui/avatar\";\nimport { Button } from \"../ui/button\";\nimport { Kbd, KbdGroup } from \"../ui/kbd\";\nimport {\n Menu,\n MenuItem,\n MenuPopup,\n MenuSeparator,\n MenuTrigger,\n} from \"../ui/menu\";\nimport { SidebarTrigger } from \"../ui/sidebar\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../ui/tooltip\";\n\nexport interface DashboardTopbarUser {\n /** Display name, shown in the account menu and used as the avatar alt text. */\n name: string;\n /** Optional email, shown under the name in the account menu. */\n email?: string;\n /** Optional avatar image URL. Falls back to initials when omitted. */\n avatarSrc?: string;\n /** Initials shown when there is no avatar image. */\n initials?: string;\n}\n\nexport interface DashboardTopbarProps {\n /** The signed-in user rendered in the account menu + avatar trigger. */\n user: DashboardTopbarUser;\n /** Opens the consumer's command palette. The search field is a button. */\n onSearch?: () => void;\n /** Placeholder text inside the search affordance. Defaults to \"Search\". */\n searchPlaceholder?: string;\n /**\n * Trailing shortcut hint inside the search affordance. Defaults to\n * `<KbdGroup><Kbd>⌘</Kbd><Kbd>K</Kbd></KbdGroup>`. Pass `null` to hide it.\n */\n searchShortcut?: React.ReactNode;\n /** Account-menu \"Settings\" item handler. The item is omitted when undefined. */\n onSettings?: () => void;\n /** Account-menu \"Log out\" item handler. The item is omitted when undefined. */\n onLogout?: () => void;\n /** mailto/url for the support icon button. The button renders only when set. */\n supportHref?: string;\n /** Whether to render the animated light/dark theme toggle. Defaults to `true`. */\n showThemeToggle?: boolean;\n /** Optional extra controls rendered left of the theme toggle. */\n actions?: React.ReactNode;\n className?: string;\n}\n\nconst defaultSearchShortcut = (\n <KbdGroup className=\"absolute right-3 top-1/2 hidden -translate-y-1/2 sm:inline-flex\">\n <Kbd>⌘</Kbd>\n <Kbd>K</Kbd>\n </KbdGroup>\n);\n\n/**\n * Dashboard top bar shared by the host and sponsor dashboards.\n *\n * Zones: mobile/desktop sidebar trigger · a global search field styled as an\n * input that calls `onSearch` (the consumer owns the command palette + ⌘K key\n * handler) · optional extra `actions` · the animated theme toggle · an optional\n * support link · the account menu (Settings / Log out). The inner row shares a\n * `max-w-[1280px]` wrapper so the search field and avatar line up with the page.\n */\nexport function DashboardTopbar({\n user,\n onSearch,\n searchPlaceholder = \"Search\",\n searchShortcut = defaultSearchShortcut,\n onSettings,\n onLogout,\n supportHref,\n showThemeToggle = true,\n actions,\n className,\n}: DashboardTopbarProps) {\n return (\n <header\n data-slot=\"dashboard-topbar\"\n className={cn(\"h-16 flex-shrink-0 bg-page-bg\", className)}\n >\n <div className=\"mx-auto flex h-full max-w-[1280px] items-center gap-2 px-4 sm:gap-3 sm:px-6 md:gap-4 md:px-8\">\n {/* Sidebar toggle — collapse/open the navigation. */}\n <SidebarTrigger\n aria-label=\"Toggle navigation\"\n className=\"size-10 border border-input bg-background sm:size-9\"\n />\n\n {/* Search — looks like an input, opens the consumer's command palette. */}\n <button\n type=\"button\"\n onClick={onSearch}\n aria-label={searchPlaceholder}\n className=\"group min-w-0 max-w-xl flex-1 outline-none\"\n >\n <span className=\"relative flex h-10 w-full items-center rounded-lg border border-input bg-background pl-10 pr-3 text-sm text-muted-foreground transition-colors group-hover:bg-accent/50 group-focus-visible:ring-2 group-focus-visible:ring-ring sm:pr-16\">\n <Search\n className=\"absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground\"\n strokeWidth={2}\n />\n {searchPlaceholder}\n {searchShortcut}\n </span>\n </button>\n\n {/* Right cluster */}\n <div className=\"ml-auto flex flex-shrink-0 items-center gap-2 sm:gap-3\">\n {actions}\n\n {/* Theme toggle. The toggler is anchored inside a wrapper span rather\n than being the TooltipTrigger's render target directly:\n AnimatedThemeToggler spreads incoming props (including the ref Base\n UI injects) AFTER its own `ref={buttonRef}`, so making it the\n trigger clobbers that ref — and its click handler bails out on\n `if (!buttonRef.current) return`, so the theme never flips.\n Wrapping keeps the toggler's own ref + onClick intact while the\n span carries the tooltip. */}\n {showThemeToggle ? (\n <Tooltip>\n <TooltipTrigger render={<span className=\"inline-flex\" />}>\n <AnimatedThemeToggler\n aria-label=\"Toggle light / dark theme\"\n className=\"size-10 border border-input bg-background sm:size-9\"\n variant=\"circle\"\n />\n </TooltipTrigger>\n <TooltipContent>Toggle light / dark theme</TooltipContent>\n </Tooltip>\n ) : null}\n\n {/* Support */}\n {supportHref ? (\n <Tooltip>\n <TooltipTrigger\n render={\n <Button\n aria-label=\"Contact support\"\n className=\"hidden sm:inline-flex\"\n render={<a href={supportHref} />}\n size=\"icon-lg\"\n variant=\"outline\"\n >\n <LifeBuoy strokeWidth={1.8} />\n </Button>\n }\n />\n <TooltipContent>Contact support</TooltipContent>\n </Tooltip>\n ) : null}\n\n {/* Account menu */}\n <Menu>\n <MenuTrigger\n render={\n <button\n type=\"button\"\n aria-label={`Account menu — signed in as ${user.name}`}\n className=\"rounded-full outline-none transition hover:ring-2 hover:ring-ring focus-visible:ring-2 focus-visible:ring-ring\"\n />\n }\n >\n <Avatar\n alt={user.name}\n initials={user.initials}\n size=\"md\"\n src={user.avatarSrc}\n />\n </MenuTrigger>\n <MenuPopup\n align=\"end\"\n className=\"w-[min(280px,calc(100vw-32px))]\"\n sideOffset={8}\n >\n <div className=\"flex items-center gap-3 px-2 py-2\">\n <Avatar\n alt=\"\"\n initials={user.initials}\n size=\"md\"\n src={user.avatarSrc}\n />\n <div className=\"min-w-0\">\n <p className=\"truncate text-sm font-semibold text-foreground\">\n {user.name}\n </p>\n {user.email ? (\n <p className=\"truncate text-xs text-muted-foreground\">\n {user.email}\n </p>\n ) : null}\n </div>\n </div>\n {(onSettings || onLogout) ? <MenuSeparator /> : null}\n {onSettings ? (\n <MenuItem onClick={onSettings}>\n <Settings strokeWidth={1.8} />\n Settings\n </MenuItem>\n ) : null}\n {onLogout ? (\n <MenuItem onClick={onLogout} variant=\"destructive\">\n <LogOut strokeWidth={1.8} />\n Log out\n </MenuItem>\n ) : null}\n </MenuPopup>\n </Menu>\n </div>\n </div>\n </header>\n );\n}\n\nexport default DashboardTopbar;\n","\"use client\";\n\nimport { Progress as ProgressPrimitive } from \"@base-ui/react\";\nimport { Transition } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { CloudUploadIcon, TrashIcon, UserIcon } from \"lucide-react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../ui/avatar\";\nimport { Button } from \"../ui/button\";\nimport { SpinnerOnDemand } from \"../ui/spinner-on-demand\";\n\nexport interface AvatarUploadBaseProps\n extends Omit<React.ComponentProps<typeof Avatar>, \"onDrop\" | \"children\"> {\n onDrop: (file: File) => void;\n onDelete?: () => void;\n disabled?: boolean;\n loading?: boolean;\n progress: number;\n imageUrl: string | undefined;\n initials: React.ReactNode;\n alt: string;\n avatarClassName?: string;\n mode?: \"image\" | \"image&video\";\n}\n\nexport function AvatarUploadBase({\n onDrop,\n onDelete,\n disabled,\n loading = false,\n progress,\n imageUrl,\n initials,\n alt,\n className,\n avatarClassName,\n mode = \"image\",\n ...props\n}: AvatarUploadBaseProps) {\n const {\n getRootProps,\n getInputProps,\n open: onDropOpen,\n isDragActive,\n } = useDropzone({\n onDrop: ([file]) => file && onDrop(file),\n noClick: true,\n accept: {\n \"image/*\": [\".png\", \".jpg\", \".jpeg\", \".gif\", \".webp\"],\n ...(mode === \"image&video\"\n ? { \"video/*\": [\".webm\", \".mp4\"] }\n : undefined),\n },\n multiple: false,\n disabled: disabled || loading,\n });\n const progressValue = Math.trunc(100 * Math.min(1, progress));\n\n return (\n <div\n {...getRootProps()}\n tabIndex={undefined}\n className={clsx(\n \"relative flex items-center gap-3 rounded-full\",\n className,\n )}\n >\n <input {...getInputProps()} />\n <Avatar className={avatarClassName} key={imageUrl} {...props}>\n <AvatarImage src={imageUrl} alt={alt} />\n <AvatarFallback className=\"text-xl\">\n {initials || <UserIcon />}\n </AvatarFallback>\n </Avatar>\n <div className=\"relative flex items-center gap-3 transition\">\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={loading || disabled}\n onClick={onDropOpen}\n className=\"grow relative max-w-55 mx-auto\"\n >\n <SpinnerOnDemand icon={<CloudUploadIcon />} isLoading={loading} />\n Upload\n <Transition\n show={loading}\n as={ProgressPrimitive.Root}\n className=\"absolute inset-0 grow overflow-hidden rounded-[inherit] pointer-events-none\"\n style={{\n // Fix overflow clipping in Safari\n // https://gist.github.com/domske/b66047671c780a238b51c51ffde8d3a0\n transform: \"translateZ(0)\",\n }}\n value={progressValue}\n >\n <ProgressPrimitive.Track className=\"size-full\">\n <ProgressPrimitive.Indicator\n className=\"duration-660 ease-[cubic-bezier(0.65,0,0.35,1)] size-full bg-accent/8 transition-transform\"\n style={{ transform: `translateX(-${100 - progressValue}%)` }}\n />\n </ProgressPrimitive.Track>\n </Transition>\n </Button>\n {imageUrl && onDelete && (\n <Button\n disabled={disabled || loading}\n size=\"icon-sm\"\n variant=\"outline\"\n onClick={onDelete}\n >\n <TrashIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n )}\n </div>\n <Transition\n as=\"div\"\n show={isDragActive}\n className={clsx(\n \"pointer-events-none absolute inset-0 flex flex-col items-center justify-center rounded-2xl transition duration-200 [--opacity:1] data-closed:[--opacity:0]\",\n \"bg-accent/[calc(var(--opacity)*8%)] ring-1 ring-border/[calc(var(--opacity)*100%)] backdrop-blur-[calc(var(--opacity)*var(--blur-sm))]\",\n )}\n >\n <CloudUploadIcon className=\"size-8 text-foreground/[calc(var(--opacity)*100%)] transition-colors\" />\n <p className=\"text-sm font-medium text-foreground/[calc(var(--opacity)*100%)] transition-colors\">\n Drop files here\n </p>\n </Transition>\n </div>\n );\n}\n","\"use client\";\n\nimport { Progress as ProgressPrimitive } from \"@base-ui/react\";\nimport { Transition } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { CloudUploadIcon, TrashIcon } from \"lucide-react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../ui/avatar\";\nimport { Button } from \"../ui/button\";\nimport { SpinnerOnDemand } from \"../ui/spinner-on-demand\";\n\nexport interface ImageUploadBaseProps\n extends Omit<React.ComponentProps<\"div\">, \"onDrop\"> {\n onDrop: (file: File) => void;\n onDelete?: () => void;\n disabled?: boolean;\n loading?: boolean;\n progress: number;\n imageUrl: string | null;\n alt: string;\n}\n\nexport function ImageUploadBase({\n onDrop,\n onDelete,\n disabled,\n loading = false,\n progress,\n imageUrl,\n alt,\n className,\n ...props\n}: ImageUploadBaseProps) {\n const {\n getRootProps,\n getInputProps,\n open: onDropOpen,\n isDragActive,\n } = useDropzone({\n onDrop: ([file]) => file && onDrop(file),\n noClick: true,\n accept: {\n \"image/*\": [\".png\", \".jpg\", \".jpeg\", \".gif\", \".webp\"],\n },\n multiple: false,\n disabled: disabled || loading,\n });\n const progressValue = Math.trunc(100 * Math.min(1, progress));\n\n return (\n <div\n {...getRootProps()}\n tabIndex={undefined}\n data-slot=\"image-upload-root\"\n className={clsx(\n \"group/image-upload-root flex flex-col rounded-lg border-2 p-0.5 border-dashed border-input bg-muted/30 text-center transition-colors hover:border-muted-foreground/40 hover:bg-muted/50 has-data-[active=true]:border-primary/60 has-data-[active=true]:bg-primary/5\",\n className,\n )}\n {...props}\n >\n <div className=\"grow flex flex-col relative rounded-md\">\n <input {...getInputProps()} />\n <Avatar\n key={imageUrl ?? \"none\"}\n className=\"peer/avatar absolute size-full inset-0 rounded-[inherit]\"\n >\n {imageUrl && (\n <AvatarImage key={imageUrl ?? \"none\"} src={imageUrl} alt={alt} />\n )}\n <AvatarFallback className=\"bg-linear-to-br from-muted to-background\" />\n </Avatar>\n <div\n data-active={loading || isDragActive}\n className=\"grow flex justify-center items-center [--opacity:0] p-8 data-[active=true]:[--opacity:1] peer-has-data-[slot=avatar-fallback]/avatar:[--opacity:1] group-hover/image-upload-root:[--opacity:1] relative z-10 rounded-[inherit] bg-background/[calc(55%*var(--opacity))] backdrop-blur-[calc(var(--blur-xs)*var(--opacity))] gap-3 transition\"\n >\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={loading || disabled}\n onClick={onDropOpen}\n className=\"grow relative max-w-32 opacity-(--opacity)\"\n >\n <SpinnerOnDemand icon={<CloudUploadIcon />} isLoading={loading} />\n {isDragActive ? \"Drop files here\" : \"Upload\"}\n <Transition\n show={loading}\n as={ProgressPrimitive.Root}\n className=\"absolute inset-0 opacity-(--opacity) grow overflow-hidden rounded-[inherit] pointer-events-none\"\n value={progressValue}\n >\n <ProgressPrimitive.Track className=\"size-full\">\n <ProgressPrimitive.Indicator className=\"duration-660 ease-[cubic-bezier(0.65,0,0.35,1)] size-full bg-accent/8 transition-all\" />\n </ProgressPrimitive.Track>\n </Transition>\n </Button>\n {imageUrl && onDelete && !isDragActive && (\n <Button\n disabled={disabled || loading}\n size=\"icon-sm\"\n variant=\"outline\"\n onClick={onDelete}\n className=\"opacity-(--opacity)\"\n aria-label=\"Remove\"\n >\n <TrashIcon />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useCallback, useLayoutEffect, useSyncExternalStore } from \"react\";\nimport { create } from \"zustand\";\nimport { useFirstRender } from \"./use-first-render\";\n\nconst breakpoints = [\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"] as const;\ntype Breakpoints = (typeof breakpoints)[number];\n\nconst useBreakpointsStore = create<\n {\n [breakpoint in Breakpoints as `is${Capitalize<breakpoint>}`]: boolean;\n } & {\n [breakpoint in Breakpoints as `setIs${Capitalize<breakpoint>}`]: (\n value: boolean,\n ) => void;\n }\n>((set) => ({\n isSm: false,\n isMd: false,\n isLg: false,\n isXl: false,\n is2xl: false,\n setIsSm: (value: boolean) => set({ isSm: value }),\n setIsMd: (value: boolean) => set({ isMd: value }),\n setIsLg: (value: boolean) => set({ isLg: value }),\n setIsXl: (value: boolean) => set({ isXl: value }),\n setIs2xl: (value: boolean) => set({ is2xl: value }),\n}));\n\nconst getBreakpointValue = (breakpoint: Breakpoints) =>\n getComputedStyle(document.documentElement).getPropertyValue(\n `--breakpoint-${breakpoint}`,\n );\n\nconst setters = {\n sm: \"setIsSm\" as const,\n md: \"setIsMd\" as const,\n lg: \"setIsLg\" as const,\n xl: \"setIsXl\" as const,\n \"2xl\": \"setIs2xl\" as const,\n};\n\nfunction useSyncWithStore(breakpoint: Breakpoints) {\n const setBreakpoint = useBreakpointsStore(\n (state) => state[setters[breakpoint]],\n );\n useLayoutEffect(() => {\n const matchMedia = window.matchMedia(\n `(min-width: ${getBreakpointValue(breakpoint)})`,\n );\n matchMedia.addEventListener(\"change\", () => {\n setBreakpoint(matchMedia.matches);\n });\n setBreakpoint(matchMedia.matches);\n return () => {\n matchMedia.removeEventListener(\"change\", () => {\n setBreakpoint(matchMedia.matches);\n });\n };\n }, [breakpoint, setBreakpoint]);\n}\n\n// It could be lazy\nexport function useSubscribeBreakpoints() {\n useSyncWithStore(\"sm\");\n useSyncWithStore(\"md\");\n useSyncWithStore(\"lg\");\n useSyncWithStore(\"xl\");\n useSyncWithStore(\"2xl\");\n}\n\ninterface UseMediaQueryOptions {\n ssr?: boolean;\n defaultSSRValue?: boolean;\n}\n\nexport function useMediaQuery(\n query: string,\n { ssr = false, defaultSSRValue = false }: UseMediaQueryOptions = {},\n) {\n const subscribe = useCallback(\n (callback: (m: MediaQueryListEvent) => void) => {\n const matchMedia = window.matchMedia(query);\n\n matchMedia.addEventListener(\"change\", callback);\n return () => {\n matchMedia.removeEventListener(\"change\", callback);\n };\n },\n [query],\n );\n\n const getSnapshot = () => window.matchMedia(query).matches;\n\n const getServerSnapshot = () => defaultSSRValue;\n\n const value = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const isFirstRender = useFirstRender();\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return value;\n}\n\nexport function useIsSm({\n ssr = false,\n defaultSSRValue = false,\n}: UseMediaQueryOptions = {}) {\n const isFirstRender = useFirstRender();\n const isSm = useBreakpointsStore((state) => state.isSm);\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return isSm;\n}\n\nexport function useIsMd({\n ssr = false,\n defaultSSRValue = false,\n}: UseMediaQueryOptions = {}) {\n const isFirstRender = useFirstRender();\n const isMd = useBreakpointsStore((state) => state.isMd);\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return isMd;\n}\n\nexport function useIsLg({\n ssr = false,\n defaultSSRValue = false,\n}: UseMediaQueryOptions = {}) {\n const isFirstRender = useFirstRender();\n const isLg = useBreakpointsStore((state) => state.isLg);\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return isLg;\n}\n\nexport function useIsXl({\n ssr = false,\n defaultSSRValue = false,\n}: UseMediaQueryOptions = {}) {\n const isFirstRender = useFirstRender();\n const isXl = useBreakpointsStore((state) => state.isXl);\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return isXl;\n}\n\nexport function useIs2xl({\n ssr = false,\n defaultSSRValue = false,\n}: UseMediaQueryOptions = {}) {\n const isFirstRender = useFirstRender();\n const is2xl = useBreakpointsStore((state) => state.is2xl);\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return is2xl;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/accordion.tsx","../src/components/ui/alert.tsx","../src/components/ui/alert-dialog.tsx","../src/components/theme-provider.tsx","../src/components/ui/animated-theme-toggler.tsx","../src/components/ui/app-store-buttons.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/aurora-orb.tsx","../src/components/ui/aurora-text.tsx","../src/components/ui/smooth-scroll.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/autocomplete.tsx","../src/components/ui/avatar.tsx","../src/components/ui/avatar-group.tsx","../src/components/ui/animated-counter.tsx","../src/components/ui/badge.tsx","../src/components/ui/badge-group.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/card.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/chat.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/combobox.tsx","../src/components/ui/command.tsx","../src/components/ui/confetti.tsx","../src/components/ui/credit-card.tsx","../src/components/ui/pagination.tsx","../src/components/ui/pagination-controls.tsx","../src/components/ui/table.tsx","../src/components/ui/data-table-paged.tsx","../src/components/ui/drawer.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/dialog.tsx","../src/components/ui/empty.tsx","../src/components/ui/fab.tsx","../src/components/ui/featured-icon.tsx","../src/components/ui/fieldset.tsx","../src/components/ui/form.tsx","../src/components/ui/frame.tsx","../src/components/ui/generic-empty.tsx","../src/components/ui/separator.tsx","../src/components/ui/group.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/help-tip.tsx","../src/lib/hooks/use-callback-ref.ts","../src/lib/hooks/use-hover.ts","../src/components/ui/horizontal-scroll-fader.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/item.tsx","../src/components/ui/kbd.tsx","../src/components/ui/markdown.tsx","../src/components/ui/menu.tsx","../src/components/ui/menubar.tsx","../src/components/ui/meter.tsx","../src/components/ui/multi-select.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/preview-card.tsx","../src/components/ui/progress.tsx","../src/components/ui/qr-code.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/scroller.tsx","../src/components/ui/section-header.tsx","../src/components/ui/social-button.tsx","../src/components/ui/stepper.tsx","../src/components/ui/pipeline.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/segmented-control.tsx","../src/components/ui/sheet.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/slider.tsx","../src/components/ui/spinner.tsx","../src/components/ui/stat.tsx","../src/components/ui/switch.tsx","../src/components/ui/tabs.tsx","../src/components/ui/tag.tsx","../src/lib/hooks/use-first-render.ts","../src/lib/hooks/use-is-tab-active.ts","../src/components/ui/target-countdown.tsx","../src/components/ui/timeline.tsx","../src/components/ui/text-editor.tsx","../src/components/ui/toast.tsx","../src/components/ui/toolbar.tsx","../src/components/ui/vertical-scroll-fader.tsx","../src/components/ui/video-player.tsx","../src/components/layout/dashboard-header.tsx","../src/components/layout/dashboard-panel.tsx","../src/components/layout/dashboard-topbar.tsx","../src/components/upload/avatar-upload-base.tsx","../src/components/upload/image-upload-base.tsx","../src/lib/hooks/use-media-query.ts"],"names":["AccordionPrimitive","jsx","AlertDialogPrimitive","jsxs","theme","value","getSystemTheme","useState","useEffect","useCallback","cva","useRef","DEFAULT_COLORS","memo","AuroraText","React","React2","ScrollAreaPrimitive","AutocompletePrimitive","AvatarPrimitive","Fragment","useRender","mergeProps","XIcon","React3","api","ArrowRightIcon","React4","React5","CollapsiblePrimitive","React6","ComboboxPrimitive","ChevronsUpDownIcon","CommandDialogPrimitive","createContext","useMemo","useContext","React7","SearchIcon","DrawerPrimitive","ContextMenuPrimitive","ChevronRightIcon","CheckIcon","DialogPrimitive","FieldsetPrimitive","FormPrimitive","SeparatorPrimitive","TooltipPrimitive","Tooltip","iconSize","forwardRef","React9","MenuPrimitive","MenubarPrimitive","MeterPrimitive","React10","SelectPrimitive","NavigationMenuPrimitive","ChevronDownIcon","PreviewCardPrimitive","ProgressPrimitive","React11","RadioGroupPrimitive","RadioPrimitive","Slot","AppleLogoIcon","React12","ChevronRight","TogglePrimitive","React13","ToggleGroupPrimitive","Toggle","SheetPrimitive","React14","open","React15","SliderPrimitive","SwitchPrimitive","TabsPrimitive","TriangleAlertIcon","ToolbarPrimitive","useResizeObserver","Transition","isValidElement","clsx","useDropzone","CloudUploadIcon","TrashIcon","useLayoutEffect","matchMedia","subscribe","getSnapshot","getServerSnapshot","useSyncExternalStore"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\n\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Accordion(props: AccordionPrimitive.Root.Props) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n <AccordionPrimitive.Item\n className={cn(\"border-b last:border-b-0\", className)}\n data-slot=\"accordion-item\"\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n className={cn(\n \"flex flex-1 cursor-pointer items-start justify-between gap-4 rounded-md py-4 text-left font-medium text-sm outline-none transition-all focus-visible:ring-[3px] focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-64 data-panel-open:*:data-[slot=accordion-indicator]:rotate-180\",\n className,\n )}\n data-slot=\"accordion-trigger\"\n {...props}\n >\n {children}\n <ChevronDownIcon\n className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 opacity-80 transition-transform duration-200 ease-in-out\"\n data-slot=\"accordion-indicator\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionPanel({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n <AccordionPrimitive.Panel\n className=\"h-(--accordion-panel-height) overflow-hidden text-muted-foreground text-sm transition-[height] duration-200 ease-in-out data-ending-style:h-0 data-starting-style:h-0\"\n data-slot=\"accordion-panel\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Panel>\n );\n}\n\nexport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionPanel,\n AccordionPanel as AccordionContent,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst alertVariants = cva(\n \"relative grid w-full items-start gap-x-2 gap-y-0.5 rounded-xl border px-3.5 py-3 text-card-foreground text-sm has-[>svg]:has-data-[slot=alert-action]:grid-cols-[calc(var(--spacing)*4)_1fr_auto] has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-data-[slot=alert-action]:grid-cols-[1fr_auto] has-[>svg]:gap-x-2 [&>svg]:h-lh [&>svg]:w-4\",\n {\n defaultVariants: {\n variant: \"default\",\n },\n variants: {\n variant: {\n default:\n \"bg-transparent dark:bg-input/32 [&>svg]:text-muted-foreground\",\n error:\n \"border-destructive/32 bg-destructive/4 [&>svg]:text-destructive\",\n info: \"border-info/32 bg-info/4 [&>svg]:text-info\",\n success: \"border-success/32 bg-success/4 [&>svg]:text-success\",\n warning: \"border-warning/32 bg-warning/4 [&>svg]:text-warning\",\n },\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n className={cn(alertVariants({ variant }), className)}\n data-slot=\"alert\"\n role=\"alert\"\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"font-medium [svg~&]:col-start-2\", className)}\n data-slot=\"alert-title\"\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-2.5 text-muted-foreground [svg~&]:col-start-2\",\n className,\n )}\n data-slot=\"alert-description\"\n {...props}\n />\n );\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex gap-1 max-sm:col-start-2 max-sm:mt-2 sm:row-start-1 sm:row-end-3 sm:self-center sm:[[data-slot=alert-description]~&]:col-start-2 sm:[[data-slot=alert-title]~&]:col-start-2 sm:[svg~&]:col-start-2 sm:[svg~[data-slot=alert-description]~&]:col-start-3 sm:[svg~[data-slot=alert-title]~&]:col-start-3\",\n className,\n )}\n data-slot=\"alert-action\"\n {...props}\n />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction };\n","\"use client\";\n\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst AlertDialogCreateHandle = AlertDialogPrimitive.createHandle;\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nfunction AlertDialogTrigger(props: AlertDialogPrimitive.Trigger.Props) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogBackdrop({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 ease-out data-ending-style:opacity-0 data-starting-style:opacity-0\",\n className,\n )}\n data-slot=\"alert-dialog-backdrop\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogViewport({\n className,\n ...props\n}: AlertDialogPrimitive.Viewport.Props) {\n return (\n <AlertDialogPrimitive.Viewport\n className={cn(\n \"fixed inset-0 z-50 grid grid-rows-[1fr_auto_3fr] justify-items-center p-4\",\n className,\n )}\n data-slot=\"alert-dialog-viewport\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogPopup({\n className,\n bottomStickOnMobile = true,\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n bottomStickOnMobile?: boolean;\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogBackdrop />\n <AlertDialogViewport\n className={cn(\n bottomStickOnMobile &&\n \"max-sm:grid-rows-[1fr_auto] max-sm:p-0 max-sm:pt-12\",\n )}\n >\n <AlertDialogPrimitive.Popup\n className={cn(\n \"-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover not-dark:bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg/5 transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n bottomStickOnMobile &&\n \"max-sm:max-w-none max-sm:rounded-none max-sm:border-x-0 max-sm:border-t max-sm:border-b-0 max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden max-sm:before:rounded-none\",\n className,\n )}\n data-slot=\"alert-dialog-popup\"\n {...props}\n />\n </AlertDialogViewport>\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-2 p-6 text-center max-sm:pb-4 sm:text-left\",\n className,\n )}\n data-slot=\"alert-dialog-header\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: \"default\" | \"bare\";\n}) {\n return (\n <div\n className={cn(\n \"flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end sm:rounded-b-[calc(var(--radius-2xl)-1px)]\",\n variant === \"default\" && \"border-t bg-muted/72 py-4\",\n variant === \"bare\" && \"pb-6\",\n className,\n )}\n data-slot=\"alert-dialog-footer\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: AlertDialogPrimitive.Title.Props) {\n return (\n <AlertDialogPrimitive.Title\n className={cn(\n \"font-heading font-semibold text-xl leading-none\",\n className,\n )}\n data-slot=\"alert-dialog-title\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: AlertDialogPrimitive.Description.Props) {\n return (\n <AlertDialogPrimitive.Description\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"alert-dialog-description\"\n {...props}\n />\n );\n}\n\nfunction AlertDialogClose(props: AlertDialogPrimitive.Close.Props) {\n return (\n <AlertDialogPrimitive.Close data-slot=\"alert-dialog-close\" {...props} />\n );\n}\n\nexport {\n AlertDialogCreateHandle,\n AlertDialog,\n AlertDialogPortal,\n AlertDialogBackdrop,\n AlertDialogBackdrop as AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogPopup,\n AlertDialogPopup as AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogClose,\n AlertDialogViewport,\n};\n","\"use client\";\n\n/*\n This file is adapted from next-themes to work with tanstack start.\n next-themes can be found at https://github.com/pacocoursey/next-themes under the MIT license.\n*/\n\nimport {\n createContext,\n memo,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\ninterface ValueObject {\n [themeName: string]: string;\n}\n\nexport interface UseThemeProps {\n /** List of all available theme names */\n themes: string[];\n /** Forced theme name for the current page */\n forcedTheme?: string | undefined;\n /** Update the theme */\n setTheme: React.Dispatch<React.SetStateAction<string>>;\n /** Active theme name */\n theme?: string | undefined;\n /** If `enableSystem` is true and the active theme is \"system\", this returns whether the system preference resolved to \"dark\" or \"light\". Otherwise, identical to `theme` */\n resolvedTheme?: string | undefined;\n /** If enableSystem is true, returns the System theme preference (\"dark\" or \"light\"), regardless what the active theme is */\n systemTheme?: \"dark\" | \"light\" | undefined;\n}\n\nexport type Attribute = `data-${string}` | \"class\";\n\nexport interface ThemeProviderProps extends React.PropsWithChildren {\n /** List of all available theme names */\n themes?: string[] | undefined;\n /** Forced theme name for the current page */\n forcedTheme?: string | undefined;\n /** Whether to switch between dark and light themes based on prefers-color-scheme */\n enableSystem?: boolean | undefined;\n /** Disable all CSS transitions when switching themes */\n disableTransitionOnChange?: boolean | undefined;\n /** Whether to indicate to browsers which color scheme is used (dark or light) for built-in UI like inputs and buttons */\n enableColorScheme?: boolean | undefined;\n /** Key used to store theme setting in localStorage */\n storageKey?: string | undefined;\n /** Default theme name (for v0.0.12 and lower the default was light). If `enableSystem` is false, the default theme is light */\n defaultTheme?: string | undefined;\n /** HTML attribute modified based on the active theme. Accepts `class`, `data-*` (meaning any data attribute, `data-mode`, `data-color`, etc.), or an array which could include both */\n attribute?: Attribute | Attribute[] | undefined;\n /** Mapping of theme name to HTML attribute value. Object where key is the theme name and value is the attribute value */\n value?: ValueObject | undefined;\n /** Nonce string to pass to the inline script for CSP headers */\n nonce?: string | undefined;\n}\n\nconst colorSchemes = [\"light\", \"dark\"];\nconst MEDIA = \"(prefers-color-scheme: dark)\";\nconst isServer = typeof window === \"undefined\";\nconst ThemeContext = createContext<UseThemeProps | undefined>(undefined);\nconst defaultContext: UseThemeProps = { setTheme: (_) => {}, themes: [] };\n\nexport const useTheme = () => useContext(ThemeContext) ?? defaultContext;\n\nexport const ThemeProvider = (props: ThemeProviderProps): React.ReactNode => {\n const context = useContext(ThemeContext);\n\n // Ignore nested context providers, just passthrough children\n if (context) return props.children;\n return <Theme {...props} />;\n};\n\nconst defaultThemes = [\"light\", \"dark\"];\n\nexport const ThemeContextOverride = ({\n children,\n value,\n}: {\n children: React.ReactNode;\n value: string;\n}) => {\n const context = useContext(ThemeContext);\n\n if (!context) return children;\n return (\n <ThemeContext.Provider\n value={{\n ...context,\n resolvedTheme: value,\n forcedTheme: value,\n theme: value,\n }}\n >\n {children}\n </ThemeContext.Provider>\n );\n};\n\nconst Theme = ({\n forcedTheme,\n disableTransitionOnChange = false,\n enableSystem = true,\n enableColorScheme = true,\n storageKey = \"theme\",\n themes = defaultThemes,\n defaultTheme = enableSystem ? \"system\" : \"light\",\n attribute = \"data-theme\",\n value,\n children,\n nonce,\n}: ThemeProviderProps) => {\n const [theme, setThemeState] = useState(() =>\n getTheme(storageKey, defaultTheme),\n );\n const [resolvedTheme, setResolvedTheme] = useState(() =>\n theme === \"system\" ? getSystemTheme() : theme,\n );\n const attrs = !value ? themes : Object.values(value);\n\n // apply selected theme function (light, dark, system)\n // biome-ignore lint/correctness/useExhaustiveDependencies: Code is copied from the library\n const applyTheme = useCallback((theme: string | undefined) => {\n let resolved = theme;\n if (!resolved) return;\n\n // If theme is system, resolve it before setting theme\n if (theme === \"system\" && enableSystem) {\n resolved = getSystemTheme();\n }\n\n const name = value ? value[resolved] : resolved;\n const enable = disableTransitionOnChange ? disableAnimation() : null;\n const d = document.documentElement;\n\n const handleAttribute = (attr: Attribute) => {\n if (attr === \"class\") {\n d.classList.remove(...attrs);\n if (name) d.classList.add(name);\n } else if (attr.startsWith(\"data-\")) {\n if (name) {\n d.setAttribute(attr, name);\n } else {\n d.removeAttribute(attr);\n }\n }\n };\n\n if (Array.isArray(attribute)) attribute.forEach(handleAttribute);\n else handleAttribute(attribute);\n\n if (enableColorScheme) {\n const fallback = colorSchemes.includes(defaultTheme)\n ? defaultTheme\n : null;\n const colorScheme = colorSchemes.includes(resolved) ? resolved : fallback;\n // @ts-expect-error\n d.style.colorScheme = colorScheme;\n }\n\n enable?.();\n }, []);\n\n // Set theme state and save to local storage\n // biome-ignore lint/correctness/useExhaustiveDependencies: Code is copied from the library\n const setTheme = useCallback(\n // biome-ignore lint/suspicious/noExplicitAny: Code is copied from the library\n (value: any) => {\n const newTheme = typeof value === \"function\" ? value(theme) : value;\n setThemeState(newTheme);\n\n // Save to storage\n try {\n localStorage.setItem(storageKey, newTheme);\n } catch {\n // Unsupported\n }\n },\n [theme],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: Code is copied from the library\n const handleMediaQuery = useCallback(\n (e: MediaQueryListEvent | MediaQueryList) => {\n const resolved = getSystemTheme(e);\n setResolvedTheme(resolved);\n\n if (theme === \"system\" && enableSystem && !forcedTheme) {\n applyTheme(\"system\");\n }\n },\n [theme, forcedTheme],\n );\n\n // Always listen to System preference\n useEffect(() => {\n const media = window.matchMedia(MEDIA);\n\n // Intentionally use deprecated listener methods to support iOS & old browsers\n media.addListener(handleMediaQuery);\n handleMediaQuery(media);\n\n return () => media.removeListener(handleMediaQuery);\n }, [handleMediaQuery]);\n\n // localStorage event handling, allow to sync theme changes between tabs\n // biome-ignore lint/correctness/useExhaustiveDependencies: The code is copied\n useEffect(() => {\n const handleStorage = (e: StorageEvent) => {\n if (e.key !== storageKey) {\n return;\n }\n\n // If default theme set, use it if localstorage === null (happens on local storage manual deletion)\n const theme = e.newValue || defaultTheme;\n setTheme(theme);\n };\n\n window.addEventListener(\"storage\", handleStorage);\n return () => window.removeEventListener(\"storage\", handleStorage);\n }, [setTheme]);\n\n // Whenever theme or forcedTheme changes, apply it\n // biome-ignore lint/correctness/useExhaustiveDependencies: The code is copied\n useEffect(() => {\n applyTheme(forcedTheme ?? theme);\n }, [forcedTheme, theme]);\n\n const providerValue = useMemo(\n () => ({\n theme,\n setTheme,\n forcedTheme,\n themes: enableSystem ? [...themes, \"system\"] : themes,\n resolvedTheme: theme === \"system\" ? resolvedTheme : theme,\n systemTheme: (enableSystem ? resolvedTheme : undefined) as\n | \"light\"\n | \"dark\"\n | undefined,\n }),\n [theme, setTheme, forcedTheme, enableSystem, themes, resolvedTheme],\n );\n\n return (\n <ThemeContext.Provider value={providerValue}>\n <ThemeScript\n {...{\n forcedTheme,\n storageKey,\n attribute,\n enableSystem,\n enableColorScheme,\n defaultTheme,\n value,\n themes,\n nonce,\n }}\n />\n {children}\n </ThemeContext.Provider>\n );\n};\n\nconst ThemeScript = memo(\n ({\n forcedTheme,\n storageKey,\n attribute,\n enableSystem,\n enableColorScheme,\n defaultTheme,\n value,\n themes,\n nonce,\n }: Omit<ThemeProviderProps, \"children\"> & { defaultTheme: string }) => {\n const scriptArgs = JSON.stringify([\n attribute,\n storageKey,\n defaultTheme,\n forcedTheme,\n themes,\n value,\n enableSystem,\n enableColorScheme,\n ]).slice(1, -1);\n\n return (\n <script\n suppressHydrationWarning\n nonce={typeof window === \"undefined\" ? nonce : \"\"}\n // biome-ignore lint/security/noDangerouslySetInnerHtml: Needed to inject script before hydration\n dangerouslySetInnerHTML={{\n __html: `(${script.toString()})(${scriptArgs})`,\n }}\n />\n // <></>\n );\n },\n);\n\n// Helpers\nconst getTheme = (key: string, fallback?: string) => {\n if (isServer) return undefined;\n let theme: string | undefined;\n try {\n theme = localStorage.getItem(key) || undefined;\n } catch {\n // Unsupported\n }\n return theme || fallback;\n};\n\nconst disableAnimation = () => {\n const css = document.createElement(\"style\");\n css.appendChild(\n document.createTextNode(\n \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\",\n ),\n );\n document.head.appendChild(css);\n\n return () => {\n // Force restyle\n (() => window.getComputedStyle(document.body))();\n\n // Wait for next tick before removing\n setTimeout(() => {\n document.head.removeChild(css);\n }, 1);\n };\n};\n\nconst getSystemTheme = (e?: MediaQueryList | MediaQueryListEvent) => {\n const event = e ?? window.matchMedia(MEDIA);\n const isDark = event.matches;\n const systemTheme = isDark ? \"dark\" : \"light\";\n return systemTheme;\n};\n\n/*\n This file is adapted from next-themes to work with tanstack start.\n next-themes can be found at https://github.com/pacocoursey/next-themes under the MIT license.\n*/\n\n// biome-ignore lint/suspicious/noExplicitAny: Code is copied from the library\nexport const script: (...args: any[]) => void = (\n attribute,\n storageKey,\n defaultTheme,\n forcedTheme,\n themes,\n value,\n enableSystem,\n enableColorScheme,\n) => {\n const el = document.documentElement;\n const systemThemes = [\"light\", \"dark\"];\n const isClass = attribute === \"class\";\n const classes =\n isClass && value\n ? themes.map((t: string | number) => value[t] || t)\n : themes;\n\n function updateDOM(theme: string) {\n if (isClass) {\n el.classList.remove(...classes);\n el.classList.add(theme);\n } else {\n el.setAttribute(attribute, theme);\n }\n\n setColorScheme(theme);\n }\n\n function setColorScheme(theme: string) {\n if (enableColorScheme && systemThemes.includes(theme)) {\n el.style.colorScheme = theme;\n }\n }\n\n function getSystemTheme() {\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n }\n\n if (forcedTheme) {\n updateDOM(forcedTheme);\n } else {\n try {\n const themeName = localStorage.getItem(storageKey) || defaultTheme;\n const isSystem = enableSystem && themeName === \"system\";\n const theme = isSystem ? getSystemTheme() : themeName;\n updateDOM(theme);\n } catch {\n //\n }\n }\n};\n","\"use client\";\n\nimport { MoonIcon, SunIcon } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { flushSync } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { useTheme } from \"../theme-provider\";\nimport { buttonVariants } from \"./button\";\n\nexport type ThemeTogglerVariant =\n | \"circle\"\n | \"square\"\n | \"triangle\"\n | \"diamond\"\n | \"hexagon\"\n | \"rectangle\"\n | \"star\";\n\ninterface AnimatedThemeTogglerProps\n extends React.ComponentPropsWithoutRef<\"button\"> {\n /** Duration of the reveal animation in milliseconds. */\n duration?: number;\n /** Clip-path shape used for the view-transition reveal. */\n variant?: ThemeTogglerVariant;\n /** Expand from the viewport center instead of the button center. */\n fromCenter?: boolean;\n}\n\nfunction polygonCollapsed(cx: number, cy: number, vertexCount: number): string {\n const pairs = Array.from(\n { length: vertexCount },\n () => `${cx}px ${cy}px`,\n ).join(\", \");\n return `polygon(${pairs})`;\n}\n\nfunction getThemeTransitionClipPaths(\n variant: ThemeTogglerVariant,\n cx: number,\n cy: number,\n maxRadius: number,\n viewportWidth: number,\n viewportHeight: number,\n): [string, string] {\n switch (variant) {\n case \"circle\":\n return [\n `circle(0px at ${cx}px ${cy}px)`,\n `circle(${maxRadius}px at ${cx}px ${cy}px)`,\n ];\n case \"square\": {\n const halfW = Math.max(cx, viewportWidth - cx);\n const halfH = Math.max(cy, viewportHeight - cy);\n const halfSide = Math.max(halfW, halfH) * 1.05;\n const end = [\n `${cx - halfSide}px ${cy - halfSide}px`,\n `${cx + halfSide}px ${cy - halfSide}px`,\n `${cx + halfSide}px ${cy + halfSide}px`,\n `${cx - halfSide}px ${cy + halfSide}px`,\n ].join(\", \");\n return [polygonCollapsed(cx, cy, 4), `polygon(${end})`];\n }\n case \"triangle\": {\n const scale = maxRadius * 2.2;\n const dx = (Math.sqrt(3) / 2) * scale;\n const verts = [\n `${cx}px ${cy - scale}px`,\n `${cx + dx}px ${cy + 0.5 * scale}px`,\n `${cx - dx}px ${cy + 0.5 * scale}px`,\n ].join(\", \");\n return [polygonCollapsed(cx, cy, 3), `polygon(${verts})`];\n }\n case \"diamond\": {\n // Slightly larger than the circle radius so axis-aligned coverage matches.\n const R = maxRadius * Math.SQRT2;\n const end = [\n `${cx}px ${cy - R}px`,\n `${cx + R}px ${cy}px`,\n `${cx}px ${cy + R}px`,\n `${cx - R}px ${cy}px`,\n ].join(\", \");\n return [polygonCollapsed(cx, cy, 4), `polygon(${end})`];\n }\n case \"hexagon\": {\n const R = maxRadius * Math.SQRT2;\n const verts: string[] = [];\n for (let i = 0; i < 6; i++) {\n const a = -Math.PI / 2 + (i * Math.PI) / 3;\n verts.push(`${cx + R * Math.cos(a)}px ${cy + R * Math.sin(a)}px`);\n }\n return [polygonCollapsed(cx, cy, 6), `polygon(${verts.join(\", \")})`];\n }\n case \"rectangle\": {\n const halfW = Math.max(cx, viewportWidth - cx);\n const halfH = Math.max(cy, viewportHeight - cy);\n const end = [\n `${cx - halfW}px ${cy - halfH}px`,\n `${cx + halfW}px ${cy - halfH}px`,\n `${cx + halfW}px ${cy + halfH}px`,\n `${cx - halfW}px ${cy + halfH}px`,\n ].join(\", \");\n return [polygonCollapsed(cx, cy, 4), `polygon(${end})`];\n }\n case \"star\": {\n // Small overscan so the last frames never leave a 1px seam.\n const R = maxRadius * Math.SQRT2 * 1.03;\n const innerRatio = 0.42;\n const starPolygon = (radius: number) => {\n const verts: string[] = [];\n for (let i = 0; i < 5; i++) {\n const outerA = -Math.PI / 2 + (i * 2 * Math.PI) / 5;\n verts.push(\n `${cx + radius * Math.cos(outerA)}px ${cy + radius * Math.sin(outerA)}px`,\n );\n const innerA = outerA + Math.PI / 5;\n verts.push(\n `${cx + radius * innerRatio * Math.cos(innerA)}px ${cy + radius * innerRatio * Math.sin(innerA)}px`,\n );\n }\n return `polygon(${verts.join(\", \")})`;\n };\n const startR = Math.max(2, R * 0.025);\n return [starPolygon(startR), starPolygon(R)];\n }\n default:\n return [\n `circle(0px at ${cx}px ${cy}px)`,\n `circle(${maxRadius}px at ${cx}px ${cy}px)`,\n ];\n }\n}\n\ntype DocumentWithViewTransition = Document & {\n startViewTransition?: (callback: () => void) => {\n finished: Promise<void>;\n ready: Promise<void>;\n };\n};\n\n/**\n * Animated light/dark toggle using the View Transitions API.\n *\n * Drives the kit's `ThemeProvider` (via `useTheme`), so persistence and the\n * `data-theme` attribute are handled for you. On browsers without the View\n * Transitions API it falls back to an instant toggle.\n *\n * Requires the kit stylesheet (`@countryclub/ui-react/styles.css`), which\n * defines the scoped `::view-transition` rules.\n */\nfunction AnimatedThemeToggler({\n className,\n duration = 400,\n variant,\n fromCenter = false,\n ...props\n}: AnimatedThemeTogglerProps) {\n const shape = variant ?? \"circle\";\n const { resolvedTheme, setTheme } = useTheme();\n const [mounted, setMounted] = useState(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n const isDark = resolvedTheme === \"dark\";\n\n const toggleTheme = useCallback(() => {\n const button = buttonRef.current;\n if (!button) return;\n\n const applyTheme = () => {\n setTheme(isDark ? \"light\" : \"dark\");\n };\n\n const doc = document as DocumentWithViewTransition;\n if (typeof doc.startViewTransition !== \"function\") {\n applyTheme();\n return;\n }\n\n const viewportWidth = window.visualViewport?.width ?? window.innerWidth;\n const viewportHeight = window.visualViewport?.height ?? window.innerHeight;\n\n let x: number;\n let y: number;\n if (fromCenter) {\n x = viewportWidth / 2;\n y = viewportHeight / 2;\n } else {\n const { top, left, width, height } = button.getBoundingClientRect();\n x = left + width / 2;\n y = top + height / 2;\n }\n\n const maxRadius = Math.hypot(\n Math.max(x, viewportWidth - x),\n Math.max(y, viewportHeight - y),\n );\n\n const clipPath = getThemeTransitionClipPaths(\n shape,\n x,\n y,\n maxRadius,\n viewportWidth,\n viewportHeight,\n );\n\n const root = document.documentElement;\n root.dataset.themeVt = \"active\";\n root.style.setProperty(\"--theme-toggle-vt-duration\", `${duration}ms`);\n // Origin for the CSS initial clip-path, so the new snapshot starts hidden\n // at the same point the JS animation expands from (prevents a pre-animation\n // flash of the new theme).\n root.style.setProperty(\"--theme-vt-x\", `${x}px`);\n root.style.setProperty(\"--theme-vt-y\", `${y}px`);\n const cleanup = () => {\n delete root.dataset.themeVt;\n root.style.removeProperty(\"--theme-toggle-vt-duration\");\n root.style.removeProperty(\"--theme-vt-x\");\n root.style.removeProperty(\"--theme-vt-y\");\n };\n\n const transition = doc.startViewTransition(() => {\n flushSync(applyTheme);\n });\n\n transition.finished.finally(cleanup);\n\n transition.ready.then(() => {\n document.documentElement.animate(\n { clipPath },\n {\n duration,\n // Star: linear avoids easing overshoot that fights polygon interpolation.\n easing: shape === \"star\" ? \"linear\" : \"ease-in-out\",\n fill: \"forwards\",\n pseudoElement: \"::view-transition-new(root)\",\n },\n );\n });\n }, [shape, fromCenter, duration, isDark, setTheme]);\n\n return (\n <button\n aria-label=\"Toggle theme\"\n className={cn(\n buttonVariants({ size: \"icon\", variant: \"ghost\" }),\n className,\n )}\n data-slot=\"animated-theme-toggler\"\n onClick={toggleTheme}\n ref={buttonRef}\n type=\"button\"\n {...props}\n >\n {mounted && isDark ? <SunIcon /> : <MoonIcon />}\n <span className=\"sr-only\">Toggle theme</span>\n </button>\n );\n}\n\nexport { AnimatedThemeToggler };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst appStoreButtonVariants = cva(\n \"relative inline-flex h-12 shrink-0 cursor-pointer items-center justify-center gap-2.5 whitespace-nowrap rounded-lg border px-[calc(--spacing(3.5)-1px)] text-start outline-none transition-[box-shadow,filter] duration-100 [:active:not(:disabled)]:brightness-95 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 [&_svg]:pointer-events-none [&_svg]:size-6 [&_svg]:shrink-0\",\n {\n defaultVariants: {\n variant: \"default\",\n },\n variants: {\n variant: {\n default:\n \"not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] border-primary bg-primary text-primary-foreground shadow-primary/24 shadow-xs [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-primary/90\",\n outline:\n \"border-input bg-popover not-dark:bg-clip-padding text-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-accent/50 dark:[:hover,[data-pressed]]:bg-input/64\",\n },\n },\n },\n);\n\nfunction GooglePlayLogoIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M1.337.924a1.486 1.486 0 0 0-.112.568v21.017c0 .217.045.419.124.6l11.155-11.087L1.337.924Z\"\n fill=\"#00AFFF\"\n />\n <path\n d=\"M13.544 10.989 16.802 7.75 3.45.195a1.466 1.466 0 0 0-.946-.179l11.04 10.973Z\"\n fill=\"#00DE76\"\n />\n <path\n d=\"m22.018 13.298-3.919 2.218-3.515-3.493 3.543-3.521 3.891 2.202a1.49 1.49 0 0 1 0 2.594Z\"\n fill=\"#FFBD00\"\n />\n <path\n d=\"m13.544 13.056-11 10.933c.298.036.612-.016.906-.183l13.324-7.54-3.23-3.21Z\"\n fill=\"#E12653\"\n />\n </svg>\n );\n}\n\nfunction AppleLogoIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\" />\n </svg>\n );\n}\n\nfunction GalaxyStoreLogoIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M16.5 7.2v-.55a4.5 4.5 0 1 0-9 0v.55H5.1c-1 0-1.85.74-1.98 1.74l-1.05 8A2.9 2.9 0 0 0 4.95 20.2h14.1a2.9 2.9 0 0 0 2.88-3.28l-1.05-8A2 2 0 0 0 18.9 7.2h-2.4Zm-7.2-.55a2.7 2.7 0 1 1 5.4 0v.55H9.3v-.55Z\"\n fill=\"#4D7CFE\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n <path\n d=\"M12.34 9.74c.48 2.43 1.16 3.1 3.59 3.59.35.07.35.57 0 .64-2.43.48-3.1 1.16-3.59 3.59-.07.35-.57.35-.64 0-.48-2.43-1.16-3.1-3.59-3.59-.35-.07-.35-.57 0-.64 2.43-.48 3.1-1.16 3.59-3.59.07-.35.57-.35.64 0Z\"\n fill=\"#fff\"\n />\n </svg>\n );\n}\n\nfunction AppGalleryLogoIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <rect x=\"2.4\" y=\"2.4\" width=\"19.2\" height=\"19.2\" rx=\"4.8\" fill=\"#E2334D\" />\n <path\n d=\"M8.9 9V7.7a3.1 3.1 0 0 1 6.2 0V9\"\n stroke=\"#fff\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M6.55 9h10.9c.58 0 1.05.47 1.05 1.05v6.1c0 .58-.47 1.05-1.05 1.05H6.55a1.05 1.05 0 0 1-1.05-1.05v-6.1C5.5 9.47 5.97 9 6.55 9Z\"\n stroke=\"#fff\"\n strokeWidth=\"1.5\"\n />\n </svg>\n );\n}\n\ntype AppStoreButtonStore =\n | \"google-play\"\n | \"app-store\"\n | \"galaxy-store\"\n | \"app-gallery\";\n\nconst stores: Record<\n AppStoreButtonStore,\n {\n eyebrow: string;\n name: string;\n Icon: (props: React.ComponentProps<\"svg\">) => React.ReactElement;\n }\n> = {\n \"app-gallery\": {\n eyebrow: \"EXPLORE IT ON\",\n name: \"AppGallery\",\n Icon: AppGalleryLogoIcon,\n },\n \"app-store\": {\n eyebrow: \"Download on the\",\n name: \"App Store\",\n Icon: AppleLogoIcon,\n },\n \"galaxy-store\": {\n eyebrow: \"Available on\",\n name: \"Galaxy Store\",\n Icon: GalaxyStoreLogoIcon,\n },\n \"google-play\": {\n eyebrow: \"GET IT ON\",\n name: \"Google Play\",\n Icon: GooglePlayLogoIcon,\n },\n};\n\ninterface AppStoreButtonProps extends useRender.ComponentProps<\"button\"> {\n /** Which store badge to render: google-play, app-store, galaxy-store or app-gallery. */\n store: AppStoreButtonStore;\n variant?: VariantProps<typeof appStoreButtonVariants>[\"variant\"];\n}\n\nfunction AppStoreButton({\n className,\n store,\n variant = \"default\",\n render,\n ...props\n}: AppStoreButtonProps) {\n const { eyebrow, name, Icon } = stores[store];\n const typeValue: React.ButtonHTMLAttributes<HTMLButtonElement>[\"type\"] =\n render ? undefined : \"button\";\n\n const defaultProps = {\n className: cn(appStoreButtonVariants({ className, variant })),\n \"data-slot\": \"app-store-button\",\n \"data-store\": store,\n type: typeValue,\n children: (\n <>\n <Icon aria-hidden=\"true\" />\n <span className=\"flex flex-col\" data-slot=\"app-store-button-label\">\n <span className=\"font-medium text-[10px] leading-3.5 opacity-72\">\n {eyebrow}\n </span>\n <span className=\"font-semibold text-base leading-5 tracking-[-0.01em]\">\n {name}\n </span>\n </span>\n </>\n ),\n };\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(defaultProps, props),\n render,\n });\n}\n\nexport {\n AppStoreButton,\n appStoreButtonVariants,\n GooglePlayLogoIcon,\n AppleLogoIcon,\n GalaxyStoreLogoIcon,\n AppGalleryLogoIcon,\n type AppStoreButtonStore,\n};\n","import type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction AspectRatio({\n ratio = 1,\n className,\n style,\n ...props\n}: React.ComponentProps<\"div\"> & {\n ratio?: number;\n}) {\n return (\n <div\n className={cn(\"relative w-full overflow-hidden\", className)}\n data-slot=\"aspect-ratio\"\n style={{ aspectRatio: ratio, ...style }}\n {...props}\n />\n );\n}\n\nexport { AspectRatio };\n","\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport { MODE_DRAWS, resolvePreset, type OrbSize, type OrbState } from \"thinking-orbs\";\n\nimport { cn } from \"../../lib/utils/css\";\n\n// Re-exported so consumers can type their own props without depending on\n// thinking-orbs directly.\nexport type { OrbSize, OrbState } from \"thinking-orbs\";\n\n/** AuroraText's default RGB stops, so orb + text read as one piece. */\nconst DEFAULT_COLORS = [\"#FF0080\", \"#7928CA\", \"#0070F3\", \"#38bdf8\"];\n\nexport interface AuroraOrbProps {\n /**\n * Which thinking-orbs animation to show: \"working\" | \"searching\" |\n * \"solving\" | \"listening\" | \"composing\" | \"shaping\". Default \"working\".\n */\n state?: OrbState;\n /** Tuned size preset from thinking-orbs — 20 (inline) or 64 (avatar). Default 20. */\n size?: OrbSize;\n /** Animation speed multiplier on top of the preset's baked speed. Default 1. */\n speed?: number;\n /**\n * Gradient stops swept across the dots, matching AuroraText's default RGB\n * set (pink → purple → blue → sky). Vivid stops stay legible on both light\n * and dark backgrounds — the dots are painted with these colors directly.\n */\n colors?: string[];\n className?: string;\n}\n\n/**\n * A `thinking-orbs` orb recolored with the aurora gradient — the dotted-orb\n * counterpart to `AuroraText`.\n *\n * The stock `<ThinkingOrb>` has no color API (its canvas paints monochrome\n * theme ink only), but the package exports its frame painters (`MODE_DRAWS` +\n * `resolvePreset`) for custom rendering. So we run the same animation loop\n * and, after each frame, composite a slowly rotating aurora gradient onto the\n * dots via `source-in`: the dots' alpha (their depth shading) survives while\n * their ink color is replaced by the gradient. Theme detection becomes\n * unnecessary — the gradient works on light and dark backgrounds alike.\n * Respects prefers-reduced-motion (renders a single still frame).\n *\n * @example\n * <AuroraOrb state=\"solving\" speed={0.7} />\n * <AuroraOrb size={64} colors={[\"#22d3ee\", \"#a855f7\", \"#f43f5e\"]} />\n */\nexport function AuroraOrb({\n className,\n colors = DEFAULT_COLORS,\n size = 20,\n speed = 1,\n state = \"working\",\n}: AuroraOrbProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n // A joined key keeps the effect's deps primitive (an inline `colors` array\n // would otherwise retrigger every render). Joined on a control character so\n // comma-bearing stops like rgb(255, 0, 128) survive the round-trip.\n const colorsKey = colors.join(\"\\u001f\");\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const dpr = Math.min(2, (typeof devicePixelRatio !== \"undefined\" && devicePixelRatio) || 1);\n canvas.width = Math.round(size * dpr);\n canvas.height = Math.round(size * dpr);\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n // Guard colors={[]}: an empty array bypasses the default parameter.\n const stops = colorsKey ? colorsKey.split(\"\\u001f\") : DEFAULT_COLORS;\n const { mode, speed: baseSpeed, opts } = resolvePreset(state, size);\n const draw = MODE_DRAWS[mode];\n const rate = baseSpeed * speed;\n\n const paint = (t: number, wall: number) => {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.clearRect(0, 0, size, size);\n draw(ctx, size, t, false, opts);\n // Recolor the frame: a linear gradient across the orb, rotating so the\n // colors drift the way AuroraText's sweep does. Driven by wall-clock\n // (~5s per turn) rather than the preset-scaled t, so the drift stays\n // visible even for slow presets/speeds.\n const angle = wall * 1.2;\n const r = size / 2;\n const dx = Math.cos(angle) * r;\n const dy = Math.sin(angle) * r;\n const gradient = ctx.createLinearGradient(r - dx, r - dy, r + dx, r + dy);\n stops.forEach((color, i) => {\n gradient.addColorStop(stops.length === 1 ? 0 : i / (stops.length - 1), color);\n });\n ctx.globalCompositeOperation = \"source-in\";\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, size, size);\n ctx.globalCompositeOperation = \"source-over\";\n };\n\n // Reduced motion: a single still frame, matching the stock component.\n if (typeof matchMedia !== \"undefined\" && matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n paint(0.6, 0.6);\n return;\n }\n\n // Animation loop, paused while the orb is off-screen or the tab is\n // hidden — mirroring the stock ThinkingOrb's behavior.\n let frame = 0;\n let running = false;\n const loop = () => {\n const now = performance.now() / 1000;\n paint(now * rate, now);\n if (running) frame = requestAnimationFrame(loop);\n };\n const start = () => {\n if (running) return;\n running = true;\n frame = requestAnimationFrame(loop);\n };\n const stop = () => {\n running = false;\n cancelAnimationFrame(frame);\n };\n\n const first = performance.now() / 1000;\n paint(first * rate, first);\n let visible = true;\n const observer =\n typeof IntersectionObserver !== \"undefined\"\n ? new IntersectionObserver((entries) => {\n const entry = entries[0];\n if (!entry) return;\n visible = entry.isIntersecting;\n if (visible && document.visibilityState !== \"hidden\") start();\n else stop();\n })\n : null;\n observer?.observe(canvas);\n const onVisibilityChange = () => {\n if (document.visibilityState === \"hidden\") stop();\n else if (visible) start();\n };\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\n if (!observer) start();\n\n return () => {\n stop();\n observer?.disconnect();\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n };\n }, [colorsKey, size, speed, state]);\n\n return (\n <canvas\n aria-hidden=\"true\"\n className={cn(\"shrink-0\", className)}\n data-slot=\"aurora-orb\"\n ref={canvasRef}\n style={{ width: size, height: size, display: \"block\" }}\n />\n );\n}\n","\"use client\";\n\nimport { memo, type CSSProperties, type ReactNode } from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nexport interface AuroraTextProps {\n children: ReactNode;\n className?: string;\n /**\n * Gradient stops, cycled left→right and looped back to the first. The default\n * is a vivid RGB set (pink → purple → blue → sky) chosen to stay legible on\n * BOTH light and dark backgrounds — the text is painted with these colors\n * (transparent fill + clipped gradient), so it never depends on the page bg.\n */\n colors?: string[];\n /** Animation speed multiplier. 1 ≈ a 10s loop; 2 is twice as fast. */\n speed?: number;\n /** Add a soft, blurred RGB halo behind the text (a subtle aura). */\n glow?: boolean;\n}\n\nconst DEFAULT_COLORS = [\"#FF0080\", \"#7928CA\", \"#0070F3\", \"#38bdf8\"];\n\n/**\n * Animated RGB gradient text: the gradient slowly sweeps across the glyphs on a\n * loop (via `background-position`, so it's GPU-composited and cheap — safe on\n * mobile). Purely CSS; no JS ticking. The real text is kept in an `sr-only`\n * span so it stays selectable/announced while the visible layer is decorative.\n *\n * @example\n * <AuroraText>Thinking</AuroraText>\n * <AuroraText glow speed={1.4} colors={[\"#22d3ee\", \"#a855f7\", \"#f43f5e\"]}>Live</AuroraText>\n */\nexport const AuroraText = memo(function AuroraText({\n children,\n className,\n colors = DEFAULT_COLORS,\n speed = 1,\n glow = false,\n}: AuroraTextProps) {\n const gradientStyle: CSSProperties = {\n backgroundImage: `linear-gradient(135deg, ${colors.join(\", \")}, ${colors[0]})`,\n // Oversized so the sweep has room to travel before repeating.\n backgroundSize: \"200% auto\",\n WebkitBackgroundClip: \"text\",\n backgroundClip: \"text\",\n WebkitTextFillColor: \"transparent\",\n color: \"transparent\",\n animationDuration: `${10 / speed}s`,\n };\n\n return (\n <span className={cn(\"relative inline-block\", className)}>\n {/* Accessible, copyable text; the colored layers below are decorative. */}\n <span className=\"sr-only\">{children}</span>\n {glow ? (\n <span\n aria-hidden=\"true\"\n className=\"animate-aurora pointer-events-none absolute inset-0 select-none blur-[6px] opacity-60\"\n style={gradientStyle}\n >\n {children}\n </span>\n ) : null}\n <span aria-hidden=\"true\" className=\"animate-aurora relative\" style={gradientStyle}>\n {children}\n </span>\n </span>\n );\n});\n\nAuroraText.displayName = \"AuroraText\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nexport interface SmoothWheelOptions {\n /** Turn the behaviour on/off (so it can be called unconditionally). */\n enabled?: boolean;\n /** Translate vertical wheel movement into horizontal scrolling. */\n horizontal?: boolean;\n /** Scales the wheel delta — lower feels slower/heavier. Default 0.8. */\n multiplier?: number;\n /** Lerp factor toward the target each frame (0–1). Lower = smoother. */\n ease?: number;\n}\n\n/**\n * Eased, momentum-style wheel scrolling for any scrollable element. Instead of\n * jumping `scrollTop`/`scrollLeft` by the raw wheel delta (which feels fast and\n * abrupt), it animates toward an accumulated target with `requestAnimationFrame`.\n *\n * It only smooths genuine mouse wheels. Trackpads already scroll smoothly with\n * OS-level inertia, so layering our own easing on top makes it fight the native\n * momentum — the container sticks, or snaps back to where the animation was\n * still heading. In the default vertical mode a trackpad therefore keeps native\n * behaviour; in horizontal mode we still translate a vertical mouse wheel into\n * horizontal scrolling (the whole point of the mode) but let a real horizontal\n * trackpad swipe scroll natively. Every time control returns to native\n * scrolling — trackpad, or an edge — the in-flight animation is cancelled and\n * the target resynced so it can never pull the position back.\n */\nexport function useSmoothWheel(\n ref: React.RefObject<HTMLElement | null>,\n {\n enabled = true,\n horizontal = false,\n multiplier = 0.8,\n ease = 0.12,\n }: SmoothWheelOptions = {},\n) {\n React.useEffect(() => {\n if (!enabled) return;\n const el = ref.current;\n if (!el) return;\n\n // Respect users who prefer no motion — fall back to native scrolling.\n if (window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches) {\n return;\n }\n\n const axisProp = horizontal ? \"scrollLeft\" : \"scrollTop\";\n const sizeProp = horizontal ? \"scrollWidth\" : \"scrollHeight\";\n const clientProp = horizontal ? \"clientWidth\" : \"clientHeight\";\n\n let target = el[axisProp];\n let raf = 0;\n let animating = false;\n let kind: \"mouse\" | \"trackpad\" | null = null;\n let lastTs = 0;\n\n // Cancel the animation and resync the target to the real position, so any\n // native scrolling that follows is never yanked back to a stale target.\n const releaseToNative = () => {\n if (raf) cancelAnimationFrame(raf);\n raf = 0;\n animating = false;\n target = el[axisProp];\n };\n\n const tick = () => {\n const max = el[sizeProp] - el[clientProp];\n target = Math.max(0, Math.min(target, max));\n const current = el[axisProp];\n const diff = target - current;\n if (Math.abs(diff) < 0.5) {\n el[axisProp] = target;\n raf = 0;\n animating = false;\n return;\n }\n el[axisProp] = current + diff * ease;\n raf = requestAnimationFrame(tick);\n };\n\n // Strong per-event trackpad signals: fractional deltas, a horizontal\n // component (mice almost never emit deltaX), or small pixel steps.\n const looksLikeTrackpad = (e: WheelEvent) =>\n e.deltaMode === 0 &&\n (!Number.isInteger(e.deltaY) ||\n e.deltaX !== 0 ||\n Math.abs(e.deltaY) < 50);\n\n // Sticky, gesture-scoped classification: decide once per burst of events\n // (< 200ms apart) so a hard trackpad flick whose mid-gesture deltas look\n // mouse-like stays classified as a trackpad the whole way through.\n const classify = (e: WheelEvent, now: number): \"mouse\" | \"trackpad\" => {\n if (kind === null || now - lastTs > 200) {\n kind = looksLikeTrackpad(e) ? \"trackpad\" : \"mouse\";\n } else if (\n kind === \"mouse\" &&\n (e.deltaX !== 0 || !Number.isInteger(e.deltaY))\n ) {\n kind = \"trackpad\";\n }\n return kind;\n };\n\n const onWheel = (event: WheelEvent) => {\n if (event.ctrlKey) return; // pinch-zoom\n const max = el[sizeProp] - el[clientProp];\n if (max <= 0) return;\n\n const now = performance.now();\n const source = classify(event, now);\n lastTs = now;\n\n if (horizontal) {\n // Native handles a real horizontal swipe; we only translate the\n // vertical wheel (mouse, or a trackpad's vertical swipe) into\n // horizontal motion — that translation is the reason the mode exists.\n if (event.deltaX !== 0 && Math.abs(event.deltaX) >= Math.abs(event.deltaY)) {\n releaseToNative();\n return;\n }\n } else if (source === \"trackpad\") {\n // Vertical mode: let the OS scroll the trackpad natively.\n releaseToNative();\n return;\n }\n\n let delta =\n horizontal && event.deltaX !== 0 ? event.deltaX : event.deltaY;\n // deltaMode: 0 = pixel, 1 = line, 2 = page.\n if (event.deltaMode === 1) delta *= 16;\n else if (event.deltaMode === 2) delta *= el[clientProp];\n delta *= multiplier;\n if (delta === 0) return;\n\n if (!animating) target = el[axisProp];\n\n const atStart = target <= 0;\n const atEnd = target >= max;\n // Let the wheel bubble at the edges so the page keeps scrolling.\n if ((delta < 0 && atStart) || (delta > 0 && atEnd)) {\n releaseToNative();\n return;\n }\n\n event.preventDefault();\n target = Math.max(0, Math.min(target + delta, max));\n if (!animating) {\n animating = true;\n raf = requestAnimationFrame(tick);\n }\n };\n\n el.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => {\n el.removeEventListener(\"wheel\", onWheel);\n cancelAnimationFrame(raf);\n };\n }, [ref, enabled, horizontal, multiplier, ease]);\n}\n\nexport interface SmoothScrollProps extends React.ComponentProps<\"div\"> {\n /** Scroll horizontally (vertical wheel is translated to horizontal). */\n horizontal?: boolean;\n /** Scales the wheel delta — lower feels slower/heavier. Default 0.8. */\n multiplier?: number;\n /** Lerp factor toward the target each frame (0–1). Lower = smoother. */\n ease?: number;\n}\n\n/**\n * A scroll container with eased, momentum-style wheel scrolling. Drop any\n * overflowing content inside; pass `horizontal` for a row that scrolls\n * smoothly with a normal mouse wheel.\n */\nfunction SmoothScroll({\n className,\n children,\n horizontal = false,\n multiplier,\n ease,\n ...props\n}: SmoothScrollProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n useSmoothWheel(ref, { ease, horizontal, multiplier });\n\n return (\n <div\n className={cn(\n horizontal ? \"overflow-x-auto overflow-y-hidden\" : \"overflow-y-auto\",\n className,\n )}\n data-slot=\"smooth-scroll\"\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport { SmoothScroll };\n","\"use client\";\n\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { useSmoothWheel } from \"./smooth-scroll\";\n\nfunction ScrollArea({\n className,\n children,\n scrollFade = false,\n scrollbarGutter = false,\n wheelToHorizontal = false,\n smooth = false,\n viewportClassName,\n ...props\n}: ScrollAreaPrimitive.Root.Props & {\n scrollFade?: boolean;\n scrollbarGutter?: boolean;\n /**\n * Translate vertical mouse-wheel scrolling into (eased) horizontal scrolling\n * while the pointer is over the viewport. The page only scrolls once this\n * element reaches its horizontal start/end.\n */\n wheelToHorizontal?: boolean;\n /** Eased, momentum-style vertical wheel scrolling. */\n smooth?: boolean;\n viewportClassName?: string;\n}) {\n const viewportRef = React.useRef<HTMLDivElement>(null);\n\n // Eased horizontal scrolling (smooth + slower than a raw scrollLeft jump).\n useSmoothWheel(viewportRef, { enabled: wheelToHorizontal, horizontal: true });\n // Optional eased vertical scrolling.\n useSmoothWheel(viewportRef, {\n enabled: smooth && !wheelToHorizontal,\n horizontal: false,\n });\n\n return (\n <ScrollAreaPrimitive.Root\n className={cn(\"flex flex-col min-h-0\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n ref={viewportRef}\n className={cn(\n \"flex grow flex-col min-h-0 rounded-[inherit] outline-none transition-shadows focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-has-overflow-x:overscroll-x-contain data-has-overflow-y:overscroll-y-contain\",\n scrollFade &&\n \"mask-t-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-start)))] mask-b-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-end)))] mask-l-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-start)))] mask-r-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-end)))] [--fade-size:1.5rem]\",\n scrollbarGutter &&\n \"data-has-overflow-y:pe-2.5 data-has-overflow-x:pb-2.5\",\n viewportClassName,\n )}\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar orientation=\"vertical\" />\n <ScrollBar orientation=\"horizontal\" />\n <ScrollAreaPrimitive.Corner data-slot=\"scroll-area-corner\" />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n className={cn(\n \"m-1 flex opacity-0 transition-opacity delay-300 data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 data-[orientation=horizontal]:flex-col data-hovering:opacity-100 data-scrolling:opacity-100 data-hovering:delay-0 data-scrolling:delay-0 data-hovering:duration-100 data-scrolling:duration-100\",\n className,\n )}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n className=\"relative flex-1 rounded-full bg-foreground/20\"\n data-slot=\"scroll-area-thumb\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport { Autocomplete as AutocompletePrimitive } from \"@base-ui/react/autocomplete\";\nimport { ChevronsUpDownIcon, XIcon } from \"lucide-react\";\nimport { Input } from \"./input\";\nimport { ScrollArea } from \"./scroll-area\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst Autocomplete = AutocompletePrimitive.Root;\n\nfunction AutocompleteInput({\n className,\n showTrigger = false,\n showClear = false,\n startAddon,\n size,\n ...props\n}: Omit<AutocompletePrimitive.Input.Props, \"size\"> & {\n showTrigger?: boolean;\n showClear?: boolean;\n startAddon?: React.ReactNode;\n size?: \"sm\" | \"default\" | \"lg\" | number;\n ref?: React.Ref<HTMLInputElement>;\n}) {\n const sizeValue = (size ?? \"default\") as \"sm\" | \"default\" | \"lg\" | number;\n\n return (\n <div className=\"relative not-has-[>*.w-full]:w-fit w-full text-foreground has-disabled:opacity-64\">\n {startAddon && (\n <div\n aria-hidden=\"true\"\n className=\"[&_svg]:-mx-0.5 pointer-events-none absolute inset-y-0 start-px z-10 flex items-center ps-[calc(--spacing(3)-1px)] opacity-80 has-[+[data-size=sm]]:ps-[calc(--spacing(2.5)-1px)] [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\"\n data-slot=\"autocomplete-start-addon\"\n >\n {startAddon}\n </div>\n )}\n <AutocompletePrimitive.Input\n className={cn(\n startAddon &&\n \"data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7.5)-1px)] *:data-[slot=autocomplete-input]:ps-[calc(--spacing(8.5)-1px)] sm:data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7)-1px)] sm:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8)-1px)]\",\n sizeValue === \"sm\"\n ? \"has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-6.5\"\n : \"has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-7\",\n className,\n )}\n data-slot=\"autocomplete-input\"\n render={<Input nativeInput size={sizeValue} />}\n {...props}\n />\n {showTrigger && (\n <AutocompleteTrigger\n className={cn(\n \"-translate-y-1/2 absolute top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-colors pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n sizeValue === \"sm\" ? \"end-0\" : \"end-0.5\",\n )}\n >\n <ChevronsUpDownIcon />\n </AutocompleteTrigger>\n )}\n {showClear && (\n <AutocompleteClear\n className={cn(\n \"-translate-y-1/2 absolute top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-colors pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n sizeValue === \"sm\" ? \"end-0\" : \"end-0.5\",\n )}\n >\n <XIcon />\n </AutocompleteClear>\n )}\n </div>\n );\n}\n\nfunction AutocompletePopup({\n className,\n children,\n sideOffset = 4,\n ...props\n}: AutocompletePrimitive.Popup.Props & {\n sideOffset?: number;\n}) {\n return (\n <AutocompletePrimitive.Portal>\n <AutocompletePrimitive.Positioner\n className=\"z-50 select-none\"\n data-slot=\"autocomplete-positioner\"\n sideOffset={sideOffset}\n >\n <AutocompletePrimitive.Popup\n className={cn(\n \"relative flex max-h-[min(var(--available-height),23rem)] w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) flex-col rounded-lg border bg-popover not-dark:bg-clip-padding text-foreground shadow-lg/5 transition-opacity duration-150 ease-out before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"autocomplete-popup\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Popup>\n </AutocompletePrimitive.Positioner>\n </AutocompletePrimitive.Portal>\n );\n}\n\nfunction AutocompleteItem({\n className,\n children,\n ...props\n}: AutocompletePrimitive.Item.Props) {\n return (\n <AutocompletePrimitive.Item\n className={cn(\n \"flex min-h-8 cursor-default select-none items-center rounded-sm px-2 py-1 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm\",\n className,\n )}\n data-slot=\"autocomplete-item\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Item>\n );\n}\n\nfunction AutocompleteSeparator({\n className,\n ...props\n}: AutocompletePrimitive.Separator.Props) {\n return (\n <AutocompletePrimitive.Separator\n className={cn(\"mx-2 my-1 h-px bg-border last:hidden\", className)}\n data-slot=\"autocomplete-separator\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteGroup({\n className,\n ...props\n}: AutocompletePrimitive.Group.Props) {\n return (\n <AutocompletePrimitive.Group\n className={cn(\"[[role=group]+&]:mt-1.5\", className)}\n data-slot=\"autocomplete-group\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteGroupLabel({\n className,\n ...props\n}: AutocompletePrimitive.GroupLabel.Props) {\n return (\n <AutocompletePrimitive.GroupLabel\n className={cn(\n \"px-2 py-1.5 font-medium text-muted-foreground text-xs\",\n className,\n )}\n data-slot=\"autocomplete-group-label\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteEmpty({\n className,\n ...props\n}: AutocompletePrimitive.Empty.Props) {\n return (\n <AutocompletePrimitive.Empty\n className={cn(\n \"not-empty:p-2 text-center text-base text-muted-foreground sm:text-sm\",\n className,\n )}\n data-slot=\"autocomplete-empty\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteRow({\n className,\n ...props\n}: AutocompletePrimitive.Row.Props) {\n return (\n <AutocompletePrimitive.Row\n className={className}\n data-slot=\"autocomplete-row\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteValue({ ...props }: AutocompletePrimitive.Value.Props) {\n return (\n <AutocompletePrimitive.Value data-slot=\"autocomplete-value\" {...props} />\n );\n}\n\nfunction AutocompleteList({\n className,\n ...props\n}: AutocompletePrimitive.List.Props) {\n return (\n <ScrollArea scrollbarGutter scrollFade className=\"grow\">\n <AutocompletePrimitive.List\n className={cn(\n \"not-empty:scroll-py-1 not-empty:p-1 in-data-has-overflow-y:pe-3\",\n className,\n )}\n data-slot=\"autocomplete-list\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nfunction AutocompleteClear({\n className,\n ...props\n}: AutocompletePrimitive.Clear.Props) {\n return (\n <AutocompletePrimitive.Clear\n className={cn(\n \"-translate-y-1/2 absolute end-0.5 top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-[color,background-color,box-shadow,opacity] pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"autocomplete-clear\"\n {...props}\n >\n <XIcon />\n </AutocompletePrimitive.Clear>\n );\n}\n\nfunction AutocompleteStatus({\n className,\n ...props\n}: AutocompletePrimitive.Status.Props) {\n return (\n <AutocompletePrimitive.Status\n className={cn(\n \"px-3 py-2 font-medium text-muted-foreground text-xs empty:m-0 empty:p-0\",\n className,\n )}\n data-slot=\"autocomplete-status\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteCollection({\n ...props\n}: AutocompletePrimitive.Collection.Props) {\n return (\n <AutocompletePrimitive.Collection\n data-slot=\"autocomplete-collection\"\n {...props}\n />\n );\n}\n\nfunction AutocompleteTrigger({\n className,\n ...props\n}: AutocompletePrimitive.Trigger.Props) {\n return (\n <AutocompletePrimitive.Trigger\n className={className}\n data-slot=\"autocomplete-trigger\"\n {...props}\n />\n );\n}\n\nconst useAutocompleteFilter = AutocompletePrimitive.useFilter;\n\nexport {\n Autocomplete,\n AutocompleteInput,\n AutocompleteTrigger,\n AutocompletePopup,\n AutocompleteItem,\n AutocompleteSeparator,\n AutocompleteGroup,\n AutocompleteGroupLabel,\n AutocompleteEmpty,\n AutocompleteValue,\n AutocompleteList,\n AutocompleteClear,\n AutocompleteStatus,\n AutocompleteRow,\n AutocompleteCollection,\n useAutocompleteFilter,\n};\n","\"use client\";\n\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { CheckIcon, PlusIcon, UserRoundIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst avatarVariants = cva(\n \"relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-muted align-middle font-medium\",\n {\n defaultVariants: { size: \"sm\" },\n variants: {\n size: {\n xs: \"size-6 text-[0.625rem]\",\n sm: \"size-8 text-xs\",\n md: \"size-10 text-sm\",\n lg: \"size-12 text-base\",\n xl: \"size-14 text-lg\",\n \"2xl\": \"size-16 text-xl\",\n },\n },\n },\n);\n\ntype AvatarSize = NonNullable<VariantProps<typeof avatarVariants>[\"size\"]>;\n\ninterface AvatarProps\n extends AvatarPrimitive.Root.Props,\n VariantProps<typeof avatarVariants> {\n /** Image URL. When omitted or it fails to load, the fallback is shown. */\n src?: string;\n alt?: string;\n /** Initials shown when there is no image. */\n initials?: React.ReactNode;\n /** Custom fallback node (overrides initials and the placeholder icon). */\n placeholder?: React.ReactNode;\n /** Icon component used as the fallback when nothing else is provided. */\n placeholderIcon?: React.ElementType;\n /** A presence dot in the bottom-right corner. */\n status?: \"online\" | \"offline\";\n /** Shows a verified tick in the bottom-right corner. */\n verified?: boolean;\n /** A node (e.g. <AvatarCompanyIcon />) shown in the top-right corner. */\n badge?: React.ReactNode;\n}\n\nfunction Avatar({\n className,\n size,\n src,\n alt,\n initials,\n placeholder,\n placeholderIcon: PlaceholderIcon = UserRoundIcon,\n status,\n verified,\n badge,\n children,\n ...props\n}: AvatarProps) {\n const fallback = initials ? (\n initials\n ) : (\n (placeholder ?? <PlaceholderIcon className=\"size-[55%] text-muted-foreground\" />)\n );\n\n const root = (\n <AvatarPrimitive.Root\n className={cn(avatarVariants({ size }), className)}\n data-slot=\"avatar\"\n {...props}\n >\n {children ?? (\n <>\n {src ? <AvatarImage alt={alt} src={src} /> : null}\n <AvatarFallback>{fallback}</AvatarFallback>\n </>\n )}\n </AvatarPrimitive.Root>\n );\n\n if (!(status || verified || badge)) return root;\n\n // Overlays live in a non-clipping wrapper so the rounded avatar's\n // overflow-hidden doesn't cut them off at the corners.\n return (\n <span\n className=\"relative inline-flex shrink-0 align-middle\"\n data-slot=\"avatar-root\"\n >\n {root}\n {badge ? (\n <span className=\"absolute end-0 top-0 flex\" data-slot=\"avatar-badge\">\n {badge}\n </span>\n ) : null}\n {status ? (\n <span\n className=\"absolute end-[6%] bottom-[6%] h-1/4 w-1/4 rounded-full ring-2 ring-background data-[status=offline]:bg-muted-foreground/40 data-[status=online]:bg-success\"\n data-slot=\"avatar-status\"\n data-status={status}\n />\n ) : null}\n {verified ? (\n <span\n className=\"absolute end-0 bottom-0 flex h-1/3 w-1/3 items-center justify-center rounded-full bg-brand text-background ring-2 ring-background\"\n data-slot=\"avatar-verified\"\n >\n <CheckIcon className=\"size-2/3\" strokeWidth={3} />\n </span>\n ) : null}\n </span>\n );\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n <AvatarPrimitive.Image\n className={cn(\"size-full object-cover\", className)}\n data-slot=\"avatar-image\"\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n <AvatarPrimitive.Fallback\n className={cn(\n \"flex size-full items-center justify-center rounded-[inherit] bg-muted text-muted-foreground\",\n className,\n )}\n data-slot=\"avatar-fallback\"\n {...props}\n />\n );\n}\n\n/** A small company/brand logo badge, meant for the Avatar `badge` prop. */\nfunction AvatarCompanyIcon({\n className,\n size = \"md\",\n alt,\n ...props\n}: React.ComponentProps<\"img\"> & { size?: \"sm\" | \"md\" | \"lg\" }) {\n const sizes = { lg: \"size-5\", md: \"size-4\", sm: \"size-3.5\" } as const;\n return (\n // biome-ignore lint/a11y/useAltText: alt forwarded via props\n <img\n alt={alt}\n className={cn(\n \"rounded-[4px] object-cover ring-2 ring-background\",\n sizes[size],\n className,\n )}\n data-slot=\"avatar-company-icon\"\n {...props}\n />\n );\n}\n\n/** A dashed \"add\" button sized to match avatars — for avatar groups. */\nfunction AvatarAddButton({\n className,\n size = \"sm\",\n ...props\n}: React.ComponentProps<\"button\"> & { size?: AvatarSize }) {\n return (\n <button\n className={cn(\n avatarVariants({ size }),\n \"border border-input border-dashed bg-transparent text-muted-foreground outline-none transition-colors hover:border-transparent hover:bg-accent hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n className,\n )}\n data-slot=\"avatar-add-button\"\n type=\"button\"\n {...props}\n >\n <PlusIcon className=\"size-1/2\" />\n </button>\n );\n}\n\nconst labelGroupText = {\n lg: { subtitle: \"text-sm\", title: \"text-base\" },\n md: { subtitle: \"text-sm\", title: \"text-sm\" },\n sm: { subtitle: \"text-xs\", title: \"text-sm\" },\n} as const;\n\n/** An avatar paired with a title and subtitle. */\nfunction AvatarLabelGroup({\n className,\n size = \"md\",\n src,\n alt,\n initials,\n status,\n verified,\n title,\n subtitle,\n ...props\n}: React.ComponentProps<\"div\"> & {\n size?: \"sm\" | \"md\" | \"lg\";\n src?: string;\n alt?: string;\n initials?: string;\n status?: \"online\" | \"offline\";\n verified?: boolean;\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n}) {\n return (\n <div\n className={cn(\"flex items-center gap-3\", className)}\n data-slot=\"avatar-label-group\"\n {...props}\n >\n <Avatar\n alt={alt}\n initials={initials}\n size={size}\n src={src}\n status={status}\n verified={verified}\n />\n <div className=\"flex min-w-0 flex-col\">\n <span\n className={cn(\n \"truncate font-medium text-foreground leading-tight\",\n labelGroupText[size].title,\n )}\n >\n {title}\n </span>\n {subtitle ? (\n <span\n className={cn(\n \"truncate text-muted-foreground leading-tight\",\n labelGroupText[size].subtitle,\n )}\n >\n {subtitle}\n </span>\n ) : null}\n </div>\n </div>\n );\n}\n\nconst profilePhotoSizes = { lg: \"size-20\", md: \"size-16\", sm: \"size-14\" } as const;\n\n/** A larger, framed profile photo with optional verified tick. */\nfunction AvatarProfilePhoto({\n className,\n size = \"md\",\n ...props\n}: Omit<AvatarProps, \"size\"> & { size?: \"sm\" | \"md\" | \"lg\" }) {\n return (\n <Avatar\n className={cn(\n \"ring-1 ring-black/8 ring-inset dark:ring-white/12\",\n profilePhotoSizes[size],\n className,\n )}\n data-slot=\"avatar-profile-photo\"\n {...props}\n />\n );\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarCompanyIcon,\n AvatarAddButton,\n AvatarLabelGroup,\n AvatarProfilePhoto,\n avatarVariants,\n};\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Avatar, avatarVariants } from \"./avatar\";\n\ntype AvatarSize = NonNullable<VariantProps<typeof avatarVariants>[\"size\"]>;\n\nconst avatarGroupVariants = cva(\n // Each child gets a ring in the page color so overlapping avatars stay\n // visually separated; hover lifts one to the front.\n \"isolate flex items-center *:relative *:rounded-full *:ring-2 *:ring-background *:transition-transform hover:*:z-10\",\n {\n defaultVariants: { overlap: \"md\" },\n variants: {\n overlap: {\n sm: \"*:not-first:-ml-1.5\",\n md: \"*:not-first:-ml-2.5\",\n lg: \"*:not-first:-ml-3.5\",\n },\n },\n },\n);\n\ninterface AvatarGroupItem {\n src?: string;\n /** Initials shown when there is no image. */\n initials?: React.ReactNode;\n alt?: string;\n}\n\ninterface AvatarGroupProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof avatarGroupVariants> {\n /** Data-driven avatars. Omit to compose `<Avatar>` children yourself. */\n items?: AvatarGroupItem[];\n /** Cap the visible avatars; the rest collapse into a \"+N\" chip. */\n max?: number;\n size?: AvatarSize;\n}\n\n/**\n * A row of overlapping avatars with an overflow \"+N\" chip. Pass `items` for the\n * data-driven path, or compose `<Avatar>` children directly for full control.\n */\nfunction AvatarGroup({\n className,\n items,\n max,\n size = \"sm\",\n overlap,\n children,\n ...props\n}: AvatarGroupProps) {\n const shown = items && max ? items.slice(0, max) : items;\n const overflow = items && max ? items.length - max : 0;\n\n return (\n <div\n className={cn(avatarGroupVariants({ overlap }), className)}\n data-slot=\"avatar-group\"\n role=\"group\"\n {...props}\n >\n {items\n ? shown?.map((item, i) => (\n <Avatar\n alt={item.alt}\n // biome-ignore lint/suspicious/noArrayIndexKey: order is stable\n key={i}\n initials={item.initials}\n size={size}\n src={item.src}\n />\n ))\n : children}\n {overflow > 0 ? (\n <span\n aria-label={`${overflow} more`}\n className={cn(\n avatarVariants({ size }),\n // Solid neutral fill so the chip reads as a distinct surface in both\n // themes — the `bg-muted` token is only 4% opacity (near-transparent).\n \"bg-stone-200 font-medium text-stone-600 dark:bg-stone-700 dark:text-stone-200\",\n )}\n data-slot=\"avatar-group-overflow\"\n >\n +{overflow}\n </span>\n ) : null}\n </div>\n );\n}\n\nexport { AvatarGroup, avatarGroupVariants };\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ninterface AnimatedCounterProps extends Omit<React.ComponentProps<\"span\">, \"children\"> {\n /** The target value to animate to. */\n value: number;\n /** Tween duration in ms (default 650). */\n duration?: number;\n /** Decimal places to render (default 0). */\n decimals?: number;\n /** Prefix rendered before the number, e.g. \"$\". */\n prefix?: string;\n /** Suffix rendered after the number, e.g. \"%\". */\n suffix?: string;\n /** Group digits with thousands separators (default true). */\n separator?: boolean;\n}\n\n/**\n * A number that tweens smoothly from its previous value to the next whenever\n * `value` changes — e.g. dashboard stats re-counting when the time range\n * switches. Dependency-free (requestAnimationFrame), so it stays tiny and works\n * anywhere. Respects `prefers-reduced-motion` by snapping to the final value.\n *\n * The animation is purely visual; the accessible text is always the final\n * value (via `aria-label`) so screen readers never read the intermediate tween.\n */\nfunction AnimatedCounter({\n value,\n duration = 650,\n decimals = 0,\n prefix = \"\",\n suffix = \"\",\n separator = true,\n className,\n ...props\n}: AnimatedCounterProps) {\n const [display, setDisplay] = useState(value);\n const fromRef = useRef(value);\n const rafRef = useRef<number | null>(null);\n\n useEffect(() => {\n const from = fromRef.current;\n const to = value;\n if (from === to) return;\n\n const reduce =\n typeof window !== \"undefined\" &&\n window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n if (reduce || duration <= 0) {\n fromRef.current = to;\n setDisplay(to);\n return;\n }\n\n let start: number | null = null;\n const step = (ts: number) => {\n if (start === null) start = ts;\n const t = Math.min(1, (ts - start) / duration);\n // easeOutCubic — quick then settles, matching a \"count up\" feel.\n const eased = 1 - Math.pow(1 - t, 3);\n const current = from + (to - from) * eased;\n setDisplay(current);\n if (t < 1) {\n rafRef.current = requestAnimationFrame(step);\n } else {\n fromRef.current = to;\n }\n };\n rafRef.current = requestAnimationFrame(step);\n return () => {\n if (rafRef.current !== null) cancelAnimationFrame(rafRef.current);\n };\n }, [value, duration]);\n\n const rounded = Number(display.toFixed(decimals));\n const formatted = separator\n ? rounded.toLocaleString(undefined, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n : rounded.toFixed(decimals);\n\n const finalLabel = `${prefix}${value.toLocaleString(undefined, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })}${suffix}`;\n\n return (\n <span\n className={cn(\"tabular-nums\", className)}\n data-slot=\"animated-counter\"\n aria-label={finalLabel}\n {...props}\n >\n <span aria-hidden>\n {prefix}\n {formatted}\n {suffix}\n </span>\n </span>\n );\n}\n\nexport { AnimatedCounter, type AnimatedCounterProps };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { XIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst badgeVariants = cva(\n \"relative inline-flex shrink-0 items-center justify-center gap-1 whitespace-nowrap border border-transparent font-medium outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-3.5 sm:[&_svg:not([class*='size-'])]:size-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [button,a&]:cursor-pointer [button,a&]:pointer-coarse:after:absolute [button,a&]:pointer-coarse:after:size-full [button,a&]:pointer-coarse:after:min-h-11 [button,a&]:pointer-coarse:after:min-w-11\",\n {\n compoundVariants: [\n { className: \"rounded-sm\", shape: \"default\", size: [\"default\", \"lg\"] },\n {\n className: \"rounded-[calc(var(--radius-sm)-2px)]\",\n shape: \"default\",\n size: \"sm\",\n },\n ],\n defaultVariants: {\n shape: \"default\",\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n shape: {\n default: \"\",\n pill: \"rounded-full\",\n },\n size: {\n default:\n \"h-5.5 min-w-5.5 px-[calc(--spacing(2)-1px)] text-sm sm:h-4.5 sm:min-w-4.5 sm:text-xs\",\n lg: \"h-6.5 min-w-6.5 px-[calc(--spacing(2.5)-1px)] text-base sm:h-5.5 sm:min-w-5.5 sm:text-sm\",\n sm: \"h-5 min-w-5 px-[calc(--spacing(1.5)-1px)] text-xs sm:h-4 sm:min-w-4 sm:text-[.625rem]\",\n },\n variant: {\n default:\n \"bg-primary text-primary-foreground [button,a&]:hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white [button,a&]:hover:bg-destructive/90\",\n error:\n \"bg-destructive/8 text-destructive-foreground dark:bg-destructive/16\",\n info: \"bg-info/8 text-info-foreground dark:bg-info/16\",\n modern:\n \"border-input bg-background text-foreground shadow-xs dark:bg-input/32 [button,a&]:hover:bg-accent/50 dark:[button,a&]:hover:bg-input/48\",\n outline:\n \"border-input bg-background text-foreground dark:bg-input/32 [button,a&]:hover:bg-accent/50 dark:[button,a&]:hover:bg-input/48\",\n secondary:\n \"bg-secondary text-secondary-foreground [button,a&]:hover:bg-secondary/90\",\n success: \"bg-success/8 text-success-foreground dark:bg-success/16\",\n warning: \"bg-warning/8 text-warning-foreground dark:bg-warning/16\",\n },\n },\n },\n);\n\ninterface BadgeProps extends useRender.ComponentProps<\"span\"> {\n variant?: VariantProps<typeof badgeVariants>[\"variant\"];\n size?: VariantProps<typeof badgeVariants>[\"size\"];\n shape?: VariantProps<typeof badgeVariants>[\"shape\"];\n}\n\nfunction Badge({\n className,\n variant,\n size,\n shape,\n render,\n ...props\n}: BadgeProps) {\n const defaultProps = {\n className: cn(badgeVariants({ className, shape, size, variant })),\n \"data-slot\": \"badge\",\n };\n\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(defaultProps, props),\n render,\n });\n}\n\n/** A small status dot. Inherits the badge's text color; recolor via className. */\nfunction BadgeDot({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"size-1.5 shrink-0 rounded-full bg-current sm:size-[5px]\",\n className,\n )}\n data-slot=\"badge-dot\"\n {...props}\n />\n );\n}\n\n/** A tiny round avatar image sized to sit inside a badge. */\nfunction BadgeAvatar({ alt, className, ...props }: React.ComponentProps<\"img\">) {\n return (\n // biome-ignore lint/a11y/useAltText: alt forwarded via props\n <img\n alt={alt}\n className={cn(\n \"size-4 shrink-0 rounded-full object-cover sm:size-3.5\",\n className,\n )}\n data-slot=\"badge-avatar\"\n {...props}\n />\n );\n}\n\n/** A round country flag. `country` is an ISO 3166-1 alpha-2 code (e.g. \"AU\"). */\nfunction BadgeFlag({\n alt,\n className,\n country,\n src,\n ...props\n}: React.ComponentProps<\"img\"> & { country?: string }) {\n return (\n // biome-ignore lint/a11y/useAltText: alt forwarded via props\n <img\n alt={alt ?? country}\n className={cn(\n \"size-4 shrink-0 rounded-full object-cover sm:size-3.5\",\n className,\n )}\n data-slot=\"badge-flag\"\n src={\n src ??\n (country\n ? `https://hatscripts.github.io/circle-flags/flags/${country.toLowerCase()}.svg`\n : undefined)\n }\n {...props}\n />\n );\n}\n\n/** A small remove button for dismissible badges. Renders an X by default. */\nfunction BadgeCloseButton({\n children,\n className,\n ...props\n}: React.ComponentProps<\"button\">) {\n return (\n <button\n className={cn(\n \"-me-px inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full text-current opacity-64 outline-none transition-opacity hover:opacity-100 focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-ring\",\n className,\n )}\n data-slot=\"badge-close-button\"\n type=\"button\"\n {...props}\n >\n {children ?? <XIcon className=\"pointer-events-none\" />}\n </button>\n );\n}\n\nexport {\n Badge,\n BadgeDot,\n BadgeAvatar,\n BadgeFlag,\n BadgeCloseButton,\n badgeVariants,\n};\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ArrowRightIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst badgeGroupVariants = cva(\n \"relative inline-flex max-w-full shrink-0 items-center gap-2 whitespace-nowrap border border-transparent font-medium text-sm outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background sm:text-xs [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-3.5 sm:[&_svg:not([class*='size-'])]:size-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [button,a&]:cursor-pointer [button,a&]:pointer-coarse:after:absolute [button,a&]:pointer-coarse:after:size-full [button,a&]:pointer-coarse:after:min-h-11 [button,a&]:pointer-coarse:after:min-w-11\",\n {\n compoundVariants: [\n {\n className: \"bg-secondary text-secondary-foreground\",\n color: \"gray\",\n variant: \"pill\",\n },\n {\n className: \"bg-brand/12 text-sidebar-primary dark:bg-brand/20\",\n color: \"brand\",\n variant: \"pill\",\n },\n {\n className:\n \"bg-destructive/8 text-destructive-foreground dark:bg-destructive/16\",\n color: \"error\",\n variant: \"pill\",\n },\n {\n className: \"bg-warning/8 text-warning-foreground dark:bg-warning/16\",\n color: \"warning\",\n variant: \"pill\",\n },\n {\n className: \"bg-success/8 text-success-foreground dark:bg-success/16\",\n color: \"success\",\n variant: \"pill\",\n },\n ],\n defaultVariants: {\n align: \"leading\",\n color: \"gray\",\n variant: \"pill\",\n },\n variants: {\n align: {\n leading: \"p-1 pe-2.5\",\n trailing: \"p-1 ps-3\",\n },\n color: {\n brand: \"\",\n error: \"\",\n gray: \"\",\n success: \"\",\n warning: \"\",\n },\n variant: {\n modern:\n \"rounded-[10px] border-input bg-background text-foreground shadow-xs dark:bg-input/32\",\n pill: \"rounded-full\",\n },\n },\n },\n);\n\ntype BadgeGroupColor = NonNullable<\n VariantProps<typeof badgeGroupVariants>[\"color\"]\n>;\n\n/** Ring tint of the inner pill badge, per color. */\nconst pillBadgeRing: Record<BadgeGroupColor, string> = {\n brand: \"ring-brand/48\",\n error: \"ring-destructive/32\",\n gray: \"ring-border\",\n success: \"ring-success/32\",\n warning: \"ring-warning/40\",\n};\n\n/** Status dot of the inner modern badge, per color. */\nconst modernBadgeDot: Record<BadgeGroupColor, string> = {\n brand: \"bg-brand\",\n error: \"bg-destructive\",\n gray: \"bg-muted-foreground\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n};\n\ninterface BadgeGroupProps\n extends Omit<useRender.ComponentProps<\"span\">, \"color\"> {\n /** `pill` is a tonal, fully-rounded chip; `modern` is a bordered card-style chip with a status dot. */\n variant?: VariantProps<typeof badgeGroupVariants>[\"variant\"];\n color?: BadgeGroupColor;\n /** Which side of the message the inner badge sits on. */\n align?: VariantProps<typeof badgeGroupVariants>[\"align\"];\n /** Short label rendered inside the inner badge. */\n badge: React.ReactNode;\n /** Arrow shown after the message (leading) or inside the badge (trailing). Pass `null` to hide. */\n icon?: React.ReactNode;\n}\n\nfunction BadgeGroup({\n className,\n variant = \"pill\",\n color = \"gray\",\n align = \"leading\",\n badge,\n icon,\n children,\n render,\n ...props\n}: BadgeGroupProps) {\n const arrow =\n icon === null ? null : (icon ?? <ArrowRightIcon className=\"rtl:-scale-x-100\" />);\n\n const innerBadge = (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center gap-1.5 bg-background px-2.5 py-0.5\",\n variant === \"modern\"\n ? \"rounded-md border border-input shadow-xs dark:bg-input/32\"\n : cn(\"rounded-full ring-1 ring-inset\", pillBadgeRing[color]),\n align === \"trailing\" && \"pe-2\",\n )}\n data-slot=\"badge-group-badge\"\n >\n {variant === \"modern\" ? (\n <span\n className={cn(\"size-1.5 rounded-full\", modernBadgeDot[color])}\n data-slot=\"badge-group-dot\"\n />\n ) : null}\n {badge}\n {align === \"trailing\" ? arrow : null}\n </span>\n );\n\n const defaultProps = {\n className: cn(badgeGroupVariants({ align, className, color, variant })),\n \"data-slot\": \"badge-group\",\n children: (\n <>\n {align === \"leading\" ? innerBadge : null}\n <span className=\"truncate\" data-slot=\"badge-group-text\">\n {children}\n </span>\n {align === \"leading\" ? arrow : innerBadge}\n </>\n ),\n };\n\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(defaultProps, props),\n render,\n });\n}\n\nexport { BadgeGroup, badgeGroupVariants };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\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 className={cn(\n \"wrap-break-word flex flex-wrap items-center gap-1.5 text-muted-foreground text-sm sm:gap-2.5\",\n className,\n )}\n data-slot=\"breadcrumb-list\"\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n data-slot=\"breadcrumb-item\"\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n const defaultProps = {\n className: cn(\"transition-colors hover:text-foreground\", className),\n \"data-slot\": \"breadcrumb-link\",\n };\n\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(defaultProps, props),\n render,\n });\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n // biome-ignore lint(a11y/useFocusableInteractive): known\n <span\n aria-current=\"page\"\n aria-disabled=\"true\"\n className={cn(\"font-normal text-foreground\", className)}\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n aria-hidden=\"true\"\n className={cn(\"opacity-80 [&>svg]:size-4\", className)}\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\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 aria-hidden=\"true\"\n className={className}\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\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 { format } from \"date-fns\";\nimport { CalendarIcon } from \"lucide-react\";\nimport type { DateRange, Matcher } from \"react-day-picker\";\n\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { cn } from \"../../lib/utils/css\";\n\n/** Build react-day-picker `disabled` matchers from optional min/max bounds. */\nfunction boundsMatcher(fromDate?: Date, toDate?: Date): Matcher[] | undefined {\n const out: Matcher[] = [];\n if (fromDate) out.push({ before: fromDate });\n if (toDate) out.push({ after: toDate });\n return out.length ? out : undefined;\n}\n\ninterface DatePickerProps {\n /** The selected date (controlled). */\n value?: Date;\n onValueChange?: (date: Date | undefined) => void;\n placeholder?: string;\n /** Trigger button `disabled`. */\n disabled?: boolean;\n /** Restrict selectable days (passed straight to react-day-picker). */\n fromDate?: Date;\n toDate?: Date;\n /** date-fns format for the trigger label (default \"LLL dd, y\"). */\n displayFormat?: string;\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n id?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * A single-date picker: a button that opens a calendar in a popover. The\n * canonical way to take a date in this system — never a native `<input\n * type=\"date\">`. Controlled via `value` / `onValueChange`.\n */\nfunction DatePicker({\n value,\n onValueChange,\n placeholder = \"Pick a date\",\n disabled,\n fromDate,\n toDate,\n displayFormat = \"LLL dd, y\",\n align = \"start\",\n className,\n id,\n ...props\n}: DatePickerProps) {\n return (\n <Popover>\n <PopoverTrigger\n render={\n <Button\n className={cn(\"w-full justify-start font-normal\", !value && \"text-muted-foreground\", className)}\n disabled={disabled}\n id={id}\n variant=\"outline\"\n aria-label={props[\"aria-label\"]}\n />\n }\n >\n <CalendarIcon aria-hidden />\n {value ? format(value, displayFormat) : <span>{placeholder}</span>}\n </PopoverTrigger>\n <PopoverContent align={align} className=\"w-auto p-0\">\n <Calendar\n autoFocus\n disabled={boundsMatcher(fromDate, toDate)}\n mode=\"single\"\n onSelect={(d) => onValueChange?.(d)}\n selected={value}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\ninterface DateRangePickerProps {\n value?: DateRange;\n onValueChange?: (range: DateRange | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n fromDate?: Date;\n toDate?: Date;\n numberOfMonths?: number;\n displayFormat?: string;\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n id?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * A date-range picker: pick a start and (optionally) end date. Controlled via\n * `value` / `onValueChange` with react-day-picker's `{from, to}` shape.\n */\nfunction DateRangePicker({\n value,\n onValueChange,\n placeholder = \"Pick a date range\",\n disabled,\n fromDate,\n toDate,\n numberOfMonths = 2,\n displayFormat = \"LLL dd, y\",\n align = \"start\",\n className,\n id,\n ...props\n}: DateRangePickerProps) {\n const label = value?.from\n ? value.to\n ? `${format(value.from, displayFormat)} – ${format(value.to, displayFormat)}`\n : format(value.from, displayFormat)\n : null;\n\n return (\n <Popover>\n <PopoverTrigger\n render={\n <Button\n className={cn(\"w-full justify-start font-normal\", !label && \"text-muted-foreground\", className)}\n disabled={disabled}\n id={id}\n variant=\"outline\"\n aria-label={props[\"aria-label\"]}\n />\n }\n >\n <CalendarIcon aria-hidden />\n {label ?? <span>{placeholder}</span>}\n </PopoverTrigger>\n <PopoverContent align={align} className=\"w-auto p-0\">\n <Calendar\n autoFocus\n disabled={boundsMatcher(fromDate, toDate)}\n mode=\"range\"\n numberOfMonths={numberOfMonths}\n onSelect={(r) => onValueChange?.(r)}\n selected={value}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { DatePicker, DateRangePicker, type DatePickerProps, type DateRangePickerProps };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Card({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"relative flex flex-col gap-4 rounded-2xl border bg-card not-dark:bg-clip-padding text-card-foreground shadow-xs/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n ),\n \"data-slot\": \"card\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFrame({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"flex flex-col relative rounded-2xl border bg-background before:absolute before:inset-0 before:rounded-[inherit] before:bg-muted/72 before:pointer-events-none not-dark:bg-clip-padding text-card-foreground shadow-xs/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)] *:data-[slot=card]:-m-px *:not-last:data-[slot=card]:rounded-b-lg *:not-last:data-[slot=card]:before:rounded-b-[calc(var(--radius-lg)-1px)] *:not-first:data-[slot=card]:rounded-t-lg *:not-first:data-[slot=card]:before:rounded-t-[calc(var(--radius-lg)-1px)] *:data-[slot=card]:[clip-path:inset(-1rem_1px)] *:data-[slot=card]:first:[clip-path:inset(1px_1px_-1rem_1px_round_calc(var(--radius-2xl)-1px))] *:data-[slot=card]:last:[clip-path:inset(-1rem_1px_1px_1px_round_calc(var(--radius-2xl)-1px))] *:data-[slot=card]:shadow-none *:data-[slot=card]:before:hidden *:data-[slot=card]:bg-clip-padding\",\n className,\n ),\n \"data-slot\": \"card-frame\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFrameHeader({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"flex flex-col px-6 py-4\", className),\n \"data-slot\": \"card-frame-header\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFrameTitle({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"font-semibold text-sm\", className),\n \"data-slot\": \"card-frame-title\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFrameDescription({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"text-muted-foreground text-sm\", className),\n \"data-slot\": \"card-frame-description\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFrameFooter({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"px-6 py-4\", className),\n \"data-slot\": \"card-frame-footer\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardHeader({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 p-6 in-[[data-slot=card]:has(>[data-slot=card-panel])]:pb-4 has-data-[slot=card-action]:grid-cols-[1fr_auto]\",\n className,\n ),\n \"data-slot\": \"card-header\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardTitle({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"font-semibold text-lg leading-none\", className),\n \"data-slot\": \"card-title\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardDescription({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"text-muted-foreground text-sm\", className),\n \"data-slot\": \"card-description\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardAction({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end inline-flex\",\n className,\n ),\n \"data-slot\": \"card-action\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardPanel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"flex-1 p-6 in-[[data-slot=card]:has(>[data-slot=card-header]:not(.border-b))]:pt-0 in-[[data-slot=card]:has(>[data-slot=card-footer]:not(.border-t))]:pb-0\",\n className,\n ),\n \"data-slot\": \"card-panel\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nfunction CardFooter({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"flex items-center p-6 in-[[data-slot=card]:has(>[data-slot=card-panel])]:pt-4\",\n className,\n ),\n \"data-slot\": \"card-footer\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nexport {\n Card,\n CardFrame,\n CardFrameHeader,\n CardFrameTitle,\n CardFrameDescription,\n CardFrameFooter,\n CardAction,\n CardDescription,\n CardFooter,\n CardHeader,\n CardPanel,\n CardPanel as CardContent,\n CardTitle,\n};\n","\"use client\";\n\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\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 /** Fades the leading/trailing edges of the viewport for a soft overflow. */\n fade?: boolean;\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 fade = false,\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 fade,\n }}\n >\n {/* biome-ignore lint/a11y/useSemanticElements: carousel region with keyboard support */}\n <div\n aria-roledescription=\"carousel\"\n className={cn(\"relative\", className)}\n data-slot=\"carousel\"\n onKeyDownCapture={handleKeyDown}\n role=\"region\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation, fade } = useCarousel();\n\n const maskImage = fade\n ? orientation === \"horizontal\"\n ? \"linear-gradient(to right, transparent 0, #000 var(--carousel-fade), #000 calc(100% - var(--carousel-fade)), transparent 100%)\"\n : \"linear-gradient(to bottom, transparent 0, #000 var(--carousel-fade), #000 calc(100% - var(--carousel-fade)), transparent 100%)\"\n : undefined;\n\n return (\n <div\n className=\"overflow-hidden [--carousel-fade:--spacing(8)]\"\n data-slot=\"carousel-content\"\n ref={carouselRef}\n style={maskImage ? { maskImage, WebkitMaskImage: maskImage } : undefined}\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 // biome-ignore lint/a11y/useSemanticElements: embla slide\n <div\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n data-slot=\"carousel-item\"\n role=\"group\"\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n className={cn(\n \"absolute size-8 rounded-full before:rounded-full\",\n orientation === \"horizontal\"\n ? \"-left-12 -translate-y-1/2 top-1/2\"\n : \"-top-12 -translate-x-1/2 left-1/2 rotate-90\",\n className,\n )}\n data-slot=\"carousel-previous\"\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n size={size}\n variant={variant}\n {...props}\n >\n <ArrowLeftIcon />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n className={cn(\n \"absolute size-8 rounded-full before:rounded-full\",\n orientation === \"horizontal\"\n ? \"-right-12 -translate-y-1/2 top-1/2\"\n : \"-bottom-12 -translate-x-1/2 left-1/2 rotate-90\",\n className,\n )}\n data-slot=\"carousel-next\"\n disabled={!canScrollNext}\n onClick={scrollNext}\n size={size}\n variant={variant}\n {...props}\n >\n <ArrowRightIcon />\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 useCarousel,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"../../lib/utils/css\";\n\n// Theme selectors follow the design system's `data-theme` attribute.\nconst THEMES = { light: \"\", dark: '[data-theme=\"dark\"]' } 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 className={cn(\n \"flex aspect-video justify-center overflow-hidden 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-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-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n data-chart={chartId}\n data-slot=\"chart\"\n {...props}\n >\n <ChartStyle config={config} id={chartId} />\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 ([, itemConfig]) => itemConfig.theme || itemConfig.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n // biome-ignore lint/security/noDangerouslySetInnerHtml: CSS variables for chart series colors\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 .filter(Boolean)\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\ntype TooltipPayloadItem = {\n dataKey?: string | number;\n name?: string | number;\n value?: number | string;\n color?: string;\n fill?: string;\n payload?: Record<string, unknown> & { fill?: string };\n};\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<\"div\"> & {\n active?: boolean;\n payload?: TooltipPayloadItem[];\n indicator?: \"line\" | \"dot\" | \"dashed\";\n hideLabel?: boolean;\n hideIndicator?: boolean;\n label?: unknown;\n labelFormatter?: (\n value: React.ReactNode,\n payload: TooltipPayloadItem[],\n ) => React.ReactNode;\n labelClassName?: string;\n formatter?: (\n value: number | string,\n name: string | number,\n item: TooltipPayloadItem,\n index: number,\n payload: TooltipPayloadItem[\"payload\"],\n ) => React.ReactNode;\n color?: string;\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 if (!item) {\n return null;\n }\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n className={cn(\n \"grid min-w-32 items-start gap-1.5 rounded-lg border bg-popover px-2.5 py-1.5 text-popover-foreground text-xs shadow-lg/5\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.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 className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\",\n )}\n key={item.dataKey ?? index}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value !== undefined && (\n <span className=\"font-medium font-mono text-foreground tabular-nums\">\n {typeof item.value === \"number\"\n ? item.value.toLocaleString()\n : item.value}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\ntype LegendPayloadItem = {\n value?: string | number;\n dataKey?: string | number;\n color?: string;\n};\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n hideIcon?: boolean;\n payload?: LegendPayloadItem[];\n verticalAlign?: \"top\" | \"bottom\" | \"middle\";\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.map((item, index) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n className=\"flex items-center gap-1.5 [&>svg]:size-3 [&>svg]:text-muted-foreground\"\n key={item.value ?? index}\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 as Record<string, unknown>)[key] === \"string\"\n ) {\n configLabelKey = (payload as Record<string, unknown>)[key] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof (payloadPayload as Record<string, unknown>)[key] === \"string\"\n ) {\n configLabelKey = (payloadPayload as Record<string, unknown>)[key] 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 { cva, type VariantProps } from \"class-variance-authority\";\nimport { ArrowRightIcon, ArrowUpIcon, SparklesIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Button } from \"./button\";\n\n/**\n * Chat primitives for AI-assistant experiences: a column layout, an\n * auto-scrolling message viewport, role-styled message bubbles, header chrome,\n * an empty-state hero with suggestion prompts, tool activity chips/cards,\n * a typing indicator, and a submit-on-Enter composer. Purely presentational —\n * bring your own state.\n */\n\nfunction Chat({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex min-h-0 flex-1 flex-col\", className)}\n data-slot=\"chat\"\n {...props}\n />\n );\n}\n\n/**\n * Header chrome for a chat panel: avatar + title on the left, icon actions on\n * the right. Compose `ChatHeaderAvatar`, `ChatHeaderTitle` and\n * `ChatHeaderActions` inside.\n */\nfunction ChatHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex shrink-0 items-center gap-1 border-border/72 border-b bg-background/95 px-3 py-2.5 backdrop-blur supports-backdrop-filter:bg-background/80\",\n className,\n )}\n data-slot=\"chat-header\"\n {...props}\n />\n );\n}\n\nfunction ChatHeaderAvatar({\n className,\n children,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-linear-to-br from-primary to-primary/78 text-primary-foreground shadow-primary/24 shadow-xs after:absolute after:right-0 after:bottom-0 after:size-2 after:rounded-full after:bg-success after:ring-2 after:ring-background [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n data-slot=\"chat-header-avatar\"\n {...props}\n >\n {children ?? <SparklesIcon />}\n </span>\n );\n}\n\nfunction ChatHeaderTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"min-w-0 flex-1 leading-tight\", className)}\n data-slot=\"chat-header-title\"\n {...props}\n />\n );\n}\n\nfunction ChatHeaderActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex shrink-0 items-center gap-0.5\", className)}\n data-slot=\"chat-header-actions\"\n {...props}\n />\n );\n}\n\nfunction ChatMessages({\n autoScroll = true,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Keep the viewport pinned to the bottom while new messages stream in. */\n autoScroll?: boolean;\n}) {\n const viewportRef = React.useRef<HTMLDivElement>(null);\n const pinnedRef = React.useRef(true);\n\n const handleScroll = React.useCallback(() => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n const distanceFromBottom =\n viewport.scrollHeight - viewport.scrollTop - viewport.clientHeight;\n pinnedRef.current = distanceFromBottom < 48;\n }, []);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: children is the scroll trigger\n React.useEffect(() => {\n const viewport = viewportRef.current;\n if (!viewport || !autoScroll || !pinnedRef.current) return;\n viewport.scrollTop = viewport.scrollHeight;\n }, [children, autoScroll]);\n\n return (\n <div\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto scroll-smooth p-4\",\n className,\n )}\n data-slot=\"chat-messages\"\n onScroll={handleScroll}\n ref={viewportRef}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n/**\n * Centered hero shown when the conversation is empty. Compose\n * `ChatEmptyStateIcon`, `ChatEmptyStateTitle`, `ChatEmptyStateDescription`\n * and `ChatSuggestions` inside.\n */\nfunction ChatEmptyState({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-1 flex-col items-center justify-center gap-3 p-6 text-center\",\n className,\n )}\n data-slot=\"chat-empty-state\"\n {...props}\n />\n );\n}\n\nfunction ChatEmptyStateIcon({\n className,\n children,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"fade-in-0 zoom-in-90 relative flex size-13 shrink-0 animate-in items-center justify-center rounded-2xl bg-linear-to-br from-primary to-primary/78 text-primary-foreground shadow-lg shadow-primary/24 duration-500 before:absolute before:-inset-2.5 before:-z-10 before:rounded-3xl before:bg-primary/8 before:blur-lg [&_svg:not([class*='size-'])]:size-6\",\n className,\n )}\n data-slot=\"chat-empty-state-icon\"\n {...props}\n >\n {children ?? <SparklesIcon />}\n </span>\n );\n}\n\nfunction ChatEmptyStateTitle({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n className={cn(\"mt-1 font-semibold text-base text-foreground\", className)}\n data-slot=\"chat-empty-state-title\"\n {...props}\n />\n );\n}\n\nfunction ChatEmptyStateDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n className={cn(\n \"max-w-72 text-muted-foreground text-sm leading-relaxed\",\n className,\n )}\n data-slot=\"chat-empty-state-description\"\n {...props}\n />\n );\n}\n\n/** Vertical stack of `ChatSuggestion` prompts. */\nfunction ChatSuggestions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"mt-2 flex w-full max-w-sm flex-col gap-2\", className)}\n data-slot=\"chat-suggestions\"\n {...props}\n />\n );\n}\n\nexport interface ChatSuggestionProps extends React.ComponentProps<\"button\"> {\n /** Leading icon; defaults to a sparkle. */\n icon?: React.ReactNode;\n /** Position in the list — staggers the entrance animation. */\n index?: number;\n}\n\n/**\n * One tappable suggested prompt: icon chip + label, with an arrow that slides\n * in on hover and a staggered fade-in entrance (via `index`).\n */\nfunction ChatSuggestion({\n className,\n children,\n icon,\n index = 0,\n style,\n ...props\n}: ChatSuggestionProps) {\n return (\n <button\n className={cn(\n \"group fade-in-0 slide-in-from-bottom-2 flex w-full animate-in cursor-pointer items-center gap-2.5 fill-mode-both rounded-xl border border-border/72 bg-card px-3 py-2.5 text-left font-medium text-card-foreground text-sm shadow-xs outline-none transition-[border-color,background-color,box-shadow,transform] duration-200 hover:border-primary/24 hover:bg-accent/56 hover:shadow-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background active:scale-[0.985] disabled:pointer-events-none disabled:opacity-64\",\n className,\n )}\n data-slot=\"chat-suggestion\"\n style={{ animationDelay: `${index * 80}ms`, ...style }}\n type=\"button\"\n {...props}\n >\n <span className=\"flex size-6.5 shrink-0 items-center justify-center rounded-lg bg-primary/8 text-primary transition-colors duration-200 group-hover:bg-primary group-hover:text-primary-foreground [&_svg:not([class*='size-'])]:size-3.5\">\n {icon ?? <SparklesIcon />}\n </span>\n <span className=\"min-w-0 flex-1\">{children}</span>\n <ArrowRightIcon className=\"-translate-x-1 size-3.5 shrink-0 text-muted-foreground opacity-0 transition-[opacity,translate] duration-200 group-hover:translate-x-0 group-hover:opacity-100\" />\n </button>\n );\n}\n\nconst chatMessageVariants = cva(\n \"fade-in-0 slide-in-from-bottom-1 flex w-full animate-in flex-col gap-1 duration-200\",\n {\n defaultVariants: {\n from: \"assistant\",\n },\n variants: {\n from: {\n assistant: \"items-start\",\n user: \"items-end\",\n },\n },\n },\n);\n\nexport interface ChatMessageProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof chatMessageVariants> {}\n\nfunction ChatMessage({ className, from, ...props }: ChatMessageProps) {\n return (\n <div\n className={cn(chatMessageVariants({ className, from }))}\n data-from={from ?? \"assistant\"}\n data-slot=\"chat-message\"\n {...props}\n />\n );\n}\n\nconst chatMessageBubbleVariants = cva(\n \"max-w-[85%] rounded-2xl px-3.5 py-2 text-sm leading-relaxed break-words\",\n {\n defaultVariants: {\n from: \"assistant\",\n },\n variants: {\n from: {\n assistant: \"rounded-bl-md bg-muted text-foreground\",\n user: \"rounded-br-md bg-primary text-primary-foreground shadow-primary/16 shadow-xs\",\n },\n },\n },\n);\n\nexport interface ChatMessageBubbleProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof chatMessageBubbleVariants> {}\n\nfunction ChatMessageBubble({ className, from, ...props }: ChatMessageBubbleProps) {\n return (\n <div\n className={cn(chatMessageBubbleVariants({ className, from }))}\n data-from={from ?? \"assistant\"}\n data-slot=\"chat-message-bubble\"\n {...props}\n />\n );\n}\n\n/**\n * Small inline pill for tool activity (\"Using X…\", \"X finished\"). Pass the\n * status icon (wrench, spinner, check) as `icon`.\n */\nfunction ChatToolChip({\n className,\n children,\n icon,\n ...props\n}: React.ComponentProps<\"div\"> & { icon?: React.ReactNode }) {\n return (\n <div\n className={cn(\n \"fade-in-0 flex w-fit max-w-full animate-in items-center gap-1.5 rounded-full border border-border/72 bg-muted/48 py-1 pr-3 pl-1.5 text-muted-foreground text-xs duration-200\",\n className,\n )}\n data-slot=\"chat-tool-chip\"\n {...props}\n >\n {icon ? (\n <span className=\"flex size-4.5 shrink-0 items-center justify-center rounded-full bg-background text-foreground/72 shadow-xs [&_svg:not([class*='size-'])]:size-2.5\">\n {icon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">{children}</span>\n </div>\n );\n}\n\n/**\n * Framed card for tool activity inside a conversation: running/finished tool\n * calls, results, and write-action approval prompts. Compose with `Button`s\n * in the `actions` area for approve/decline flows.\n */\nfunction ChatToolCard({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"fade-in-0 slide-in-from-bottom-1 w-full max-w-[95%] animate-in rounded-xl border border-border bg-card p-3 text-card-foreground text-sm shadow-xs duration-200\",\n className,\n )}\n data-slot=\"chat-tool-card\"\n {...props}\n />\n );\n}\n\nfunction ChatToolCardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex items-center gap-2 font-medium\", className)}\n data-slot=\"chat-tool-card-header\"\n {...props}\n />\n );\n}\n\nfunction ChatToolCardActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"mt-3 flex items-center justify-end gap-2\", className)}\n data-slot=\"chat-tool-card-actions\"\n {...props}\n />\n );\n}\n\nfunction ChatTypingIndicator({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n aria-label=\"Assistant is typing\"\n className={cn(\n \"fade-in-0 flex w-fit animate-in items-center gap-1 rounded-2xl rounded-bl-md bg-muted px-3.5 py-2.5 duration-200\",\n className,\n )}\n data-slot=\"chat-typing-indicator\"\n role=\"status\"\n {...props}\n >\n <span className=\"size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:0ms]\" />\n <span className=\"size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:150ms]\" />\n <span className=\"size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:300ms]\" />\n </div>\n );\n}\n\nexport interface ChatInputProps\n extends Omit<React.ComponentProps<\"textarea\">, \"onSubmit\" | \"value\" | \"onChange\"> {\n value: string;\n onValueChange: (value: string) => void;\n /** Called with the trimmed message when the user submits (Enter or button). */\n onSubmit: (value: string) => void;\n /** Disables both the textarea and the send button (e.g. while sending). */\n disabled?: boolean;\n}\n\n/**\n * Composer: a rounded card wrapping an auto-growing textarea and a round send\n * button. Enter submits, Shift+Enter inserts a newline.\n */\nfunction ChatInput({\n className,\n disabled,\n onSubmit,\n onValueChange,\n placeholder = \"Ask anything…\",\n value,\n ...props\n}: ChatInputProps) {\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n\n const submit = React.useCallback(() => {\n const trimmed = value.trim();\n if (!trimmed || disabled) return;\n onSubmit(trimmed);\n }, [disabled, onSubmit, value]);\n\n // Auto-grow up to ~6 lines.\n React.useEffect(() => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n textarea.style.height = \"auto\";\n textarea.style.height = `${Math.min(textarea.scrollHeight, 144)}px`;\n }, [value]);\n\n return (\n <form\n className={cn(\"shrink-0 bg-background p-3 pt-1.5\", className)}\n data-slot=\"chat-input\"\n onSubmit={(event) => {\n event.preventDefault();\n submit();\n }}\n >\n <div\n className={cn(\n \"flex items-end gap-1.5 rounded-2xl border border-input bg-popover p-1.5 pl-3.5 shadow-xs transition-[border-color,box-shadow] duration-150 focus-within:border-ring/64 focus-within:ring-2 focus-within:ring-ring/24 dark:bg-input/32\",\n disabled && \"opacity-64\",\n )}\n >\n <textarea\n className=\"max-h-36 min-h-8 flex-1 resize-none self-center bg-transparent py-1.5 text-sm outline-none placeholder:text-muted-foreground\"\n disabled={disabled}\n onChange={(event) => onValueChange(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault();\n submit();\n }\n }}\n placeholder={placeholder}\n ref={textareaRef}\n rows={1}\n value={value}\n {...props}\n />\n <Button\n aria-label=\"Send message\"\n className=\"rounded-full before:rounded-full\"\n disabled={disabled || !value.trim()}\n size=\"icon-sm\"\n type=\"submit\"\n >\n <ArrowUpIcon />\n </Button>\n </div>\n </form>\n );\n}\n\nexport {\n Chat,\n ChatEmptyState,\n ChatEmptyStateDescription,\n ChatEmptyStateIcon,\n ChatEmptyStateTitle,\n ChatHeader,\n ChatHeaderActions,\n ChatHeaderAvatar,\n ChatHeaderTitle,\n ChatInput,\n ChatMessage,\n ChatMessageBubble,\n chatMessageBubbleVariants,\n chatMessageVariants,\n ChatMessages,\n ChatSuggestion,\n ChatSuggestions,\n ChatToolCard,\n ChatToolCardActions,\n ChatToolCardHeader,\n ChatToolChip,\n ChatTypingIndicator,\n};\n","\"use client\";\n\nimport { Collapsible as CollapsiblePrimitive } from \"@base-ui/react/collapsible\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n className,\n ...props\n}: CollapsiblePrimitive.Trigger.Props) {\n return (\n <CollapsiblePrimitive.Trigger\n className={cn(\"cursor-pointer\", className)}\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n );\n}\n\nfunction CollapsiblePanel({\n className,\n ...props\n}: CollapsiblePrimitive.Panel.Props) {\n return (\n <CollapsiblePrimitive.Panel\n className={cn(\n \"h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-200 data-ending-style:h-0 data-starting-style:h-0\",\n className,\n )}\n data-slot=\"collapsible-panel\"\n {...props}\n />\n );\n}\n\nexport {\n Collapsible,\n CollapsibleTrigger,\n CollapsiblePanel,\n CollapsiblePanel as CollapsibleContent,\n};\n","\"use client\";\n\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react/combobox\";\nimport { ChevronsUpDownIcon, XIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Input } from \"./input\";\nimport { ScrollArea } from \"./scroll-area\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst ComboboxContext = React.createContext<{\n chipsRef: React.RefObject<Element | null> | null;\n multiple: boolean;\n}>({\n chipsRef: null,\n multiple: false,\n});\n\ntype ComboboxRootProps<\n ItemValue,\n Multiple extends boolean | undefined,\n> = Parameters<typeof ComboboxPrimitive.Root<ItemValue, Multiple>>[0];\n\nfunction Combobox<ItemValue, Multiple extends boolean | undefined = false>(\n props: ComboboxPrimitive.Root.Props<ItemValue, Multiple>,\n) {\n const chipsRef = React.useRef<Element | null>(null);\n return (\n <ComboboxContext.Provider value={{ chipsRef, multiple: !!props.multiple }}>\n <ComboboxPrimitive.Root\n {...(props as ComboboxRootProps<ItemValue, Multiple>)}\n />\n </ComboboxContext.Provider>\n );\n}\n\nfunction ComboboxInput({\n className,\n showTrigger = true,\n showClear = false,\n startAddon,\n size,\n ...props\n}: Omit<ComboboxPrimitive.Input.Props, \"size\"> & {\n showTrigger?: boolean;\n showClear?: boolean;\n startAddon?: React.ReactNode;\n size?: \"sm\" | \"default\" | \"lg\" | number;\n ref?: React.Ref<HTMLInputElement>;\n}) {\n const { multiple } = React.useContext(ComboboxContext);\n const sizeValue = (size ?? \"default\") as \"sm\" | \"default\" | \"lg\" | number;\n\n // multiple mode\n if (multiple) {\n return (\n <ComboboxPrimitive.Input\n className={cn(\n \"min-w-12 flex-1 text-base outline-none sm:text-sm [[data-slot=combobox-chip]+&]:ps-0.5\",\n sizeValue === \"sm\" ? \"ps-1.5\" : \"ps-2\",\n className,\n )}\n data-size={typeof sizeValue === \"string\" ? sizeValue : undefined}\n data-slot=\"combobox-input\"\n size={typeof sizeValue === \"number\" ? sizeValue : undefined}\n {...props}\n />\n );\n }\n\n // single mode\n return (\n <div className=\"relative not-has-[>*.w-full]:w-fit w-full text-foreground has-disabled:opacity-64\">\n {startAddon && (\n <div\n aria-hidden=\"true\"\n className=\"[&_svg]:-mx-0.5 pointer-events-none absolute inset-y-0 start-px z-10 flex items-center ps-[calc(--spacing(3)-1px)] opacity-80 has-[+[data-size=sm]]:ps-[calc(--spacing(2.5)-1px)] [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\"\n data-slot=\"combobox-start-addon\"\n >\n {startAddon}\n </div>\n )}\n <ComboboxPrimitive.Input\n className={cn(\n startAddon &&\n \"data-[size=sm]:*:data-[slot=combobox-input]:ps-[calc(--spacing(7.5)-1px)] *:data-[slot=combobox-input]:ps-[calc(--spacing(8.5)-1px)] sm:data-[size=sm]:*:data-[slot=combobox-input]:ps-[calc(--spacing(7)-1px)] sm:*:data-[slot=combobox-input]:ps-[calc(--spacing(8)-1px)]\",\n sizeValue === \"sm\"\n ? \"has-[+[data-slot=combobox-trigger],+[data-slot=combobox-clear]]:*:data-[slot=combobox-input]:pe-6.5\"\n : \"has-[+[data-slot=combobox-trigger],+[data-slot=combobox-clear]]:*:data-[slot=combobox-input]:pe-7\",\n className,\n )}\n data-slot=\"combobox-input\"\n render={\n <Input\n className=\"has-disabled:opacity-100\"\n nativeInput\n size={sizeValue}\n />\n }\n {...props}\n />\n {showTrigger && (\n <ComboboxTrigger\n className={cn(\n \"-translate-y-1/2 absolute top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-opacity pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=combobox-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n sizeValue === \"sm\" ? \"end-0\" : \"end-0.5\",\n )}\n >\n <ChevronsUpDownIcon />\n </ComboboxTrigger>\n )}\n {showClear && (\n <ComboboxClear\n className={cn(\n \"-translate-y-1/2 absolute top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-opacity pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=combobox-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n sizeValue === \"sm\" ? \"end-0\" : \"end-0.5\",\n )}\n >\n <XIcon />\n </ComboboxClear>\n )}\n </div>\n );\n}\n\nfunction ComboboxTrigger({\n className,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n <ComboboxPrimitive.Trigger\n className={className}\n data-slot=\"combobox-trigger\"\n {...props}\n />\n );\n}\n\nfunction ComboboxPopup({\n className,\n children,\n sideOffset = 4,\n ...props\n}: ComboboxPrimitive.Popup.Props & {\n sideOffset?: number;\n}) {\n const { chipsRef } = React.useContext(ComboboxContext);\n\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n anchor={chipsRef}\n className=\"z-50 select-none\"\n data-slot=\"combobox-positioner\"\n sideOffset={sideOffset}\n >\n <ComboboxPrimitive.Popup\n className={cn(\n \"relative flex max-h-[min(var(--available-height),23rem)] w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) flex-col rounded-lg border bg-popover not-dark:bg-clip-padding text-foreground shadow-lg/5 transition-opacity duration-150 ease-out before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"combobox-popup\"\n {...props}\n >\n {children}\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n );\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n className={cn(\n \"grid min-h-8 in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] cursor-default grid-cols-[1rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"combobox-item\"\n {...props}\n >\n <ComboboxPrimitive.ItemIndicator className=\"col-start-1\">\n {/** biome-ignore lint/a11y/noSvgWithoutTitle: Imported from library */}\n <svg\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/1500/svg\"\n >\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n </ComboboxPrimitive.ItemIndicator>\n <div className=\"col-start-2\">{children}</div>\n </ComboboxPrimitive.Item>\n );\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n className={cn(\"mx-2 my-1 h-px bg-border last:hidden\", className)}\n data-slot=\"combobox-separator\"\n {...props}\n />\n );\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n className={cn(\"[[role=group]+&]:mt-1.5\", className)}\n data-slot=\"combobox-group\"\n {...props}\n />\n );\n}\n\nfunction ComboboxGroupLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n className={cn(\n \"px-2 py-1.5 font-medium text-muted-foreground text-xs\",\n className,\n )}\n data-slot=\"combobox-group-label\"\n {...props}\n />\n );\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n <ComboboxPrimitive.Empty\n className={cn(\n \"not-empty:p-2 text-center text-base text-muted-foreground sm:text-sm\",\n className,\n )}\n data-slot=\"combobox-empty\"\n {...props}\n />\n );\n}\n\nfunction ComboboxRow({ className, ...props }: ComboboxPrimitive.Row.Props) {\n return (\n <ComboboxPrimitive.Row\n className={className}\n data-slot=\"combobox-row\"\n {...props}\n />\n );\n}\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />;\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n <ScrollArea scrollbarGutter scrollFade>\n <ComboboxPrimitive.List\n className={cn(\n \"not-empty:scroll-py-1 not-empty:px-1 not-empty:py-1 in-data-has-overflow-y:pe-3\",\n className,\n )}\n data-slot=\"combobox-list\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n className={className}\n data-slot=\"combobox-clear\"\n {...props}\n />\n );\n}\n\nfunction ComboboxStatus({\n className,\n ...props\n}: ComboboxPrimitive.Status.Props) {\n return (\n <ComboboxPrimitive.Status\n className={cn(\n \"px-3 py-2 font-medium text-muted-foreground text-xs empty:m-0 empty:p-0\",\n className,\n )}\n data-slot=\"combobox-status\"\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 ComboboxChips({\n className,\n children,\n startAddon,\n ...props\n}: ComboboxPrimitive.Chips.Props & {\n startAddon?: React.ReactNode;\n}) {\n const { chipsRef } = React.useContext(ComboboxContext);\n\n return (\n <ComboboxPrimitive.Chips\n className={cn(\n \"relative inline-flex min-h-9 w-full flex-wrap gap-1 rounded-lg border border-input bg-background not-dark:bg-clip-padding p-[calc(--spacing(1)-1px)] text-base shadow-xs/5 outline-none ring-ring/24 transition-shadow *:min-h-7 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-has-disabled:not-focus-within:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/6%)] focus-within:border-ring focus-within:ring-[3px] has-disabled:pointer-events-none has-data-[size=lg]:min-h-10 has-data-[size=sm]:min-h-8 has-aria-invalid:border-destructive/36 has-disabled:opacity-64 has-[:disabled,:focus-within,[aria-invalid]]:shadow-none focus-within:has-aria-invalid:border-destructive/64 focus-within:has-aria-invalid:ring-destructive/16 has-data-[size=lg]:*:min-h-8 has-data-[size=sm]:*:min-h-6 sm:min-h-8 sm:text-sm sm:has-data-[size=lg]:min-h-9 sm:has-data-[size=sm]:min-h-7 sm:*:min-h-6 sm:has-data-[size=lg]:*:min-h-7 sm:has-data-[size=sm]:*:min-h-5 dark:not-has-disabled:bg-input/32 dark:has-aria-invalid:ring-destructive/24 dark:not-has-disabled:not-focus-within:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"combobox-chips\"\n onMouseDown={(e) => {\n const target = e.target as HTMLElement;\n const isChip = target.closest('[data-slot=\"combobox-chip\"]');\n if (isChip || !chipsRef?.current) return;\n e.preventDefault();\n const input: HTMLInputElement | null =\n chipsRef.current.querySelector(\"input\");\n if (input && !chipsRef.current.querySelector(\"input:focus\")) {\n input.focus();\n }\n }}\n ref={chipsRef as React.Ref<HTMLDivElement> | null}\n {...props}\n >\n {startAddon && (\n <div\n aria-hidden=\"true\"\n className=\"[&_svg]:-ms-0.5 [&_svg]:-me-1.5 flex shrink-0 items-center ps-2 opacity-80 has-[~[data-size=sm]]:has-[+[data-slot=combobox-chip]]:pe-1.5 has-[~[data-size=sm]]:ps-1.5 has-[+[data-slot=combobox-chip]]:pe-2 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\"\n data-slot=\"combobox-start-addon\"\n >\n {startAddon}\n </div>\n )}\n {children}\n </ComboboxPrimitive.Chips>\n );\n}\n\nfunction ComboboxChip({ children, ...props }: ComboboxPrimitive.Chip.Props) {\n return (\n <ComboboxPrimitive.Chip\n className=\"flex items-center rounded-[calc(var(--radius-md)-1px)] bg-accent ps-2 font-medium text-accent-foreground text-sm outline-none sm:text-xs/(--text-xs--line-height) [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5\"\n data-slot=\"combobox-chip\"\n {...props}\n >\n {children}\n <ComboboxChipRemove />\n </ComboboxPrimitive.Chip>\n );\n}\n\nfunction ComboboxChipRemove(props: ComboboxPrimitive.ChipRemove.Props) {\n return (\n <ComboboxPrimitive.ChipRemove\n aria-label=\"Remove\"\n className=\"h-full shrink-0 cursor-pointer px-1.5 opacity-80 hover:opacity-100 [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5\"\n data-slot=\"combobox-chip-remove\"\n {...props}\n >\n <XIcon />\n </ComboboxPrimitive.ChipRemove>\n );\n}\n\nconst useComboboxFilter = ComboboxPrimitive.useFilter;\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxTrigger,\n ComboboxPopup,\n ComboboxItem,\n ComboboxSeparator,\n ComboboxGroup,\n ComboboxGroupLabel,\n ComboboxEmpty,\n ComboboxValue,\n ComboboxList,\n ComboboxClear,\n ComboboxStatus,\n ComboboxRow,\n ComboboxCollection,\n ComboboxChips,\n ComboboxChip,\n useComboboxFilter,\n};\n","\"use client\";\n\nimport { Dialog as CommandDialogPrimitive } from \"@base-ui/react/dialog\";\nimport { SearchIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport {\n Autocomplete,\n AutocompleteCollection,\n AutocompleteEmpty,\n AutocompleteGroup,\n AutocompleteGroupLabel,\n AutocompleteInput,\n AutocompleteItem,\n AutocompleteList,\n AutocompleteSeparator,\n} from \"./autocomplete\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst CommandDialog = CommandDialogPrimitive.Root;\n\nconst CommandDialogPortal = CommandDialogPrimitive.Portal;\n\nconst CommandCreateHandle = CommandDialogPrimitive.createHandle;\n\nfunction CommandDialogTrigger(props: CommandDialogPrimitive.Trigger.Props) {\n return (\n <CommandDialogPrimitive.Trigger\n data-slot=\"command-dialog-trigger\"\n {...props}\n />\n );\n}\n\nfunction CommandDialogBackdrop({\n className,\n ...props\n}: CommandDialogPrimitive.Backdrop.Props) {\n return (\n <CommandDialogPrimitive.Backdrop\n className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n className,\n )}\n data-slot=\"command-dialog-backdrop\"\n {...props}\n />\n );\n}\n\nfunction CommandDialogViewport({\n className,\n ...props\n}: CommandDialogPrimitive.Viewport.Props) {\n return (\n <CommandDialogPrimitive.Viewport\n className={cn(\n \"fixed inset-0 z-50 flex flex-col items-center px-4 py-[max(--spacing(4),4vh)] sm:py-[10vh]\",\n className,\n )}\n data-slot=\"command-dialog-viewport\"\n {...props}\n />\n );\n}\n\nfunction CommandDialogPopup({\n className,\n children,\n ...props\n}: CommandDialogPrimitive.Popup.Props) {\n return (\n <CommandDialogPortal>\n <CommandDialogBackdrop />\n <CommandDialogViewport>\n <CommandDialogPrimitive.Popup\n className={cn(\n \"-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 flex max-h-105 min-h-0 w-full min-w-0 max-w-xl scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover not-dark:bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg/5 outline-none transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:bg-muted/72 before:shadow-[0_1px_--theme(--color-black/6%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 **:data-[slot=scroll-area-viewport]:data-has-overflow-y:pe-1 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"command-dialog-popup\"\n {...props}\n >\n {children}\n </CommandDialogPrimitive.Popup>\n </CommandDialogViewport>\n </CommandDialogPortal>\n );\n}\n\nfunction Command({\n autoHighlight = \"always\",\n keepHighlight = true,\n ...props\n}: React.ComponentProps<typeof Autocomplete>) {\n return (\n <Autocomplete\n autoHighlight={autoHighlight}\n inline\n keepHighlight={keepHighlight}\n open\n {...props}\n />\n );\n}\n\nfunction CommandInput({\n className,\n placeholder = undefined,\n ...props\n}: React.ComponentProps<typeof AutocompleteInput>) {\n return (\n <div className=\"px-2.5 py-1.5\">\n <AutocompleteInput\n autoFocus\n className={cn(\n \"border-transparent! bg-transparent! shadow-none before:hidden has-focus-visible:ring-0\",\n className,\n )}\n placeholder={placeholder}\n size=\"default\"\n startAddon={<SearchIcon />}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteList>) {\n return (\n <AutocompleteList\n className={cn(\"not-empty:scroll-py-2 not-empty:p-2\", className)}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteEmpty>) {\n return (\n <AutocompleteEmpty\n className={cn(\"not-empty:py-6\", className)}\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\nfunction CommandPanel({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className=\"-mx-px not-has-[+[data-slot=command-footer]]:-mb-px relative flex flex-col grow min-h-0 rounded-t-xl not-has-[+[data-slot=command-footer]]:rounded-b-2xl border border-b-0 bg-popover bg-clip-padding shadow-xs/5 [clip-path:inset(0_1px)] not-has-[+[data-slot=command-footer]]:[clip-path:inset(0_1px_1px_1px_round_0_0_calc(var(--radius-2xl)-1px)_calc(var(--radius-2xl)-1px))] before:pointer-events-none before:absolute before:inset-0 before:rounded-t-[calc(var(--radius-xl)-1px)] **:data-[slot=scroll-area-scrollbar]:mt-2\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteGroup>) {\n return (\n <AutocompleteGroup\n className={className}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\nfunction CommandGroupLabel({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteGroupLabel>) {\n return (\n <AutocompleteGroupLabel\n className={className}\n data-slot=\"command-group-label\"\n {...props}\n />\n );\n}\n\nfunction CommandCollection({\n ...props\n}: React.ComponentProps<typeof AutocompleteCollection>) {\n return <AutocompleteCollection data-slot=\"command-collection\" {...props} />;\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteItem>) {\n return (\n <AutocompleteItem\n className={cn(\"py-1.5\", className)}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteSeparator>) {\n return (\n <AutocompleteSeparator\n className={cn(\"my-2\", className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n className={cn(\n \"ms-auto font-medium font-sans text-muted-foreground/72 text-xs tracking-widest\",\n className,\n )}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\nfunction CommandFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex items-center justify-between gap-2 rounded-b-[calc(var(--radius-2xl)-1px)] border-t px-5 py-3 text-muted-foreground text-xs\",\n className,\n )}\n data-slot=\"command-footer\"\n {...props}\n />\n );\n}\n\nexport {\n CommandCreateHandle,\n Command,\n CommandCollection,\n CommandDialog,\n CommandDialogPopup,\n CommandDialogTrigger,\n CommandEmpty,\n CommandFooter,\n CommandGroup,\n CommandGroupLabel,\n CommandInput,\n CommandItem,\n CommandList,\n CommandPanel,\n CommandSeparator,\n CommandShortcut,\n};\n","\"use client\";\n\nimport confetti from \"canvas-confetti\";\nimport type {\n GlobalOptions as ConfettiGlobalOptions,\n CreateTypes as ConfettiInstance,\n Options as ConfettiOptions,\n} from \"canvas-confetti\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n type ReactNode,\n} from \"react\";\nimport type * as React from \"react\";\n\nimport { Button, type ButtonProps } from \"./button\";\n\n/** The brand celebration palette — soft violet / pink / peach / cream. */\nexport const CONFETTI_COLORS = [\"#a786ff\", \"#fd8bbc\", \"#eca184\", \"#f8deb1\"] as const;\n\nfunction prefersReducedMotion(): boolean {\n return (\n typeof window !== \"undefined\" &&\n !!window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches\n );\n}\n\nexport interface SideCannonsOptions {\n /** How long the cannons keep firing, in ms (default 3000). */\n durationMs?: number;\n /** Confetti colors (default {@link CONFETTI_COLORS}). */\n colors?: readonly string[];\n /** Particles emitted per side per frame (default 2). */\n particleCount?: number;\n /** z-index of the confetti canvas (default 100). */\n zIndex?: number;\n}\n\n/**\n * Fires confetti from the left and right edges of the viewport for a few\n * seconds — the \"side cannons\" celebration. Purely imperative, so it can be\n * triggered from an effect (e.g. the first time a page loads) without rendering\n * anything. No-ops on the server and when the user prefers reduced motion.\n *\n * @example\n * useEffect(() => { sideCannons(); }, []);\n */\nexport function sideCannons(options: SideCannonsOptions = {}): void {\n if (typeof window === \"undefined\" || prefersReducedMotion()) return;\n\n const {\n durationMs = 3000,\n colors = CONFETTI_COLORS,\n particleCount = 2,\n zIndex = 100,\n } = options;\n\n const end = performance.now() + durationMs;\n const shared = { particleCount, spread: 55, startVelocity: 60, colors: [...colors], zIndex };\n\n const frame = () => {\n if (performance.now() > end) return;\n void confetti({ ...shared, angle: 60, origin: { x: 0, y: 0.5 } });\n void confetti({ ...shared, angle: 120, origin: { x: 1, y: 0.5 } });\n requestAnimationFrame(frame);\n };\n\n frame();\n}\n\ntype ConfettiApi = {\n /** Fire the confetti instance, merging `options` over the component's. */\n fire: (options?: ConfettiOptions) => void;\n};\n\nexport type ConfettiRef = ConfettiApi | null;\n\nexport type ConfettiProps = React.ComponentPropsWithRef<\"canvas\"> & {\n /** Per-shot options merged into every `fire()` call. */\n options?: ConfettiOptions;\n /** Global options passed to `confetti.create` (resize / worker). */\n globalOptions?: ConfettiGlobalOptions;\n /** Skip the automatic fire on mount — drive it via the ref instead. */\n manualstart?: boolean;\n children?: ReactNode;\n};\n\nconst ConfettiContext = createContext<ConfettiApi>({} as ConfettiApi);\n\n/**\n * A canvas-bound confetti emitter. Renders its own `<canvas>` and exposes an\n * imperative `fire()` via ref (and to descendants through context). By default\n * it fires once on mount; pass `manualstart` to control it yourself.\n *\n * For a full-screen, no-render celebration prefer {@link sideCannons}.\n */\nconst ConfettiComponent = forwardRef<ConfettiRef, ConfettiProps>((props, ref) => {\n const {\n options,\n globalOptions = { resize: true, useWorker: true },\n manualstart = false,\n children,\n ...rest\n } = props;\n const instanceRef = useRef<ConfettiInstance | null>(null);\n\n const canvasRef = useCallback(\n (node: HTMLCanvasElement | null) => {\n if (node !== null) {\n if (instanceRef.current) return;\n instanceRef.current = confetti.create(node, { ...globalOptions, resize: true });\n } else if (instanceRef.current) {\n instanceRef.current.reset();\n instanceRef.current = null;\n }\n },\n [globalOptions],\n );\n\n const fire = useCallback(\n async (opts: ConfettiOptions = {}) => {\n if (prefersReducedMotion()) return;\n try {\n await instanceRef.current?.({ ...options, ...opts });\n } catch (error) {\n console.error(\"Confetti error:\", error);\n }\n },\n [options],\n );\n\n const api = useMemo<ConfettiApi>(() => ({ fire }), [fire]);\n\n useImperativeHandle(ref, () => api, [api]);\n\n useEffect(() => {\n if (!manualstart) void fire();\n }, [manualstart, fire]);\n\n return (\n <ConfettiContext.Provider value={api}>\n <canvas data-slot=\"confetti\" ref={canvasRef} {...rest} />\n {children}\n </ConfettiContext.Provider>\n );\n});\nConfettiComponent.displayName = \"Confetti\";\n\nexport const Confetti = ConfettiComponent;\n\n/** Access the nearest {@link Confetti}'s imperative `fire()` from a child. */\nexport function useConfetti(): ConfettiApi {\n return useContext(ConfettiContext);\n}\n\nexport interface ConfettiButtonProps extends ButtonProps {\n /** Confetti options; origin defaults to the button's center. */\n options?: ConfettiOptions & ConfettiGlobalOptions & { canvas?: HTMLCanvasElement };\n}\n\n/**\n * A {@link Button} that bursts confetti from its own center on click. Handy for\n * \"Claim\", \"Done\", or other one-off celebratory actions.\n */\nfunction ConfettiButtonComponent({ options, children, onClick, ...props }: ConfettiButtonProps) {\n const handleClick = async (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (prefersReducedMotion()) return;\n try {\n const rect = event.currentTarget.getBoundingClientRect();\n const x = rect.left + rect.width / 2;\n const y = rect.top + rect.height / 2;\n await confetti({\n ...options,\n origin: { x: x / window.innerWidth, y: y / window.innerHeight },\n });\n } catch (error) {\n console.error(\"Confetti button error:\", error);\n }\n };\n\n return (\n <Button data-slot=\"confetti-button\" onClick={handleClick} {...props}>\n {children}\n </Button>\n );\n}\nConfettiButtonComponent.displayName = \"ConfettiButton\";\n\nexport const ConfettiButton = ConfettiButtonComponent;\n","import { NfcIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\n// The card is laid out once at this design size, then transform-scaled to the\n// requested width — so every variant stays pixel-identical at any size.\nconst BASE_WIDTH = 316;\nconst BASE_HEIGHT = 190;\n\ntype CreditCardType =\n | \"transparent\"\n | \"transparent-gradient\"\n | \"brand-dark\"\n | \"brand-light\"\n | \"gray-dark\"\n | \"gray-light\"\n | \"transparent-strip\"\n | \"gray-strip\"\n | \"gradient-strip\"\n | \"salmon-strip\"\n | \"gray-strip-vertical\"\n | \"gradient-strip-vertical\"\n | \"salmon-strip-vertical\";\n\ninterface CreditCardVariantStyle {\n card: string;\n /** Decorative band rendered behind the content. */\n strip?: string;\n /** Light content on a dark or colorful face — switches the network logo. */\n onDark: boolean;\n}\n\nconst GLASS_FACE =\n \"border border-white/30 bg-white/10 text-white backdrop-blur-md\";\nconst LIGHT_FACE =\n \"bg-[#fffefc] text-[#1c1917] ring-1 ring-[#0c0a09]/10 ring-inset\";\nconst HORIZONTAL_STRIP = \"inset-x-0 top-16 h-9\";\nconst VERTICAL_STRIP = \"inset-y-0 right-12 w-9\";\n\nconst creditCardVariants: Record<CreditCardType, CreditCardVariantStyle> = {\n \"brand-dark\": {\n card: \"bg-gradient-to-br from-[#a8761c] via-[#92600a] to-[#5e3f08] text-[#faf3df]\",\n onDark: true,\n },\n \"brand-light\": {\n card: \"bg-gradient-to-br from-[#ecd9a8] via-[#dcb35e] to-[#c0922e] text-[#41290a]\",\n onDark: false,\n },\n \"gradient-strip\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(\n HORIZONTAL_STRIP,\n \"bg-gradient-to-r from-[#d4a84b] via-[#c48a1a] to-[#92600a]\",\n ),\n },\n \"gradient-strip-vertical\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(\n VERTICAL_STRIP,\n \"bg-gradient-to-b from-[#d4a84b] via-[#c48a1a] to-[#92600a]\",\n ),\n },\n \"gray-dark\": {\n card: \"bg-gradient-to-br from-[#3b3633] via-[#1c1917] to-[#0c0a09] text-[#faf9f6]\",\n onDark: true,\n },\n \"gray-light\": {\n card: \"bg-gradient-to-br from-[#faf9f6] to-[#e7e5e4] text-[#1c1917] ring-1 ring-[#0c0a09]/10 ring-inset\",\n onDark: false,\n },\n \"gray-strip\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(HORIZONTAL_STRIP, \"bg-[#292524]\"),\n },\n \"gray-strip-vertical\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(VERTICAL_STRIP, \"bg-[#292524]\"),\n },\n \"salmon-strip\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(HORIZONTAL_STRIP, \"bg-gradient-to-r from-[#e8a18f] to-[#d4644f]\"),\n },\n \"salmon-strip-vertical\": {\n card: LIGHT_FACE,\n onDark: false,\n strip: cn(VERTICAL_STRIP, \"bg-gradient-to-b from-[#e8a18f] to-[#d4644f]\"),\n },\n transparent: {\n card: GLASS_FACE,\n onDark: true,\n },\n \"transparent-gradient\": {\n card: \"border border-white/25 bg-gradient-to-br from-[#d4a84b]/60 via-white/10 to-white/5 text-white backdrop-blur-md\",\n onDark: true,\n },\n \"transparent-strip\": {\n card: GLASS_FACE,\n onDark: true,\n strip: cn(HORIZONTAL_STRIP, \"bg-white/25\"),\n },\n};\n\n/** The card-network mark — two overlapping circles in the kit's palette. */\nfunction CreditCardLogo({ onDark }: { onDark: boolean }) {\n return (\n <span aria-hidden className=\"flex items-center\" data-slot=\"credit-card-logo\">\n <span\n className={cn(\n \"size-6 rounded-full\",\n onDark ? \"bg-white/60\" : \"bg-[#d4a84b]\",\n )}\n />\n <span\n className={cn(\n \"-ml-2.5 size-6 rounded-full\",\n onDark ? \"bg-white/30\" : \"bg-[#92600a]/85\",\n )}\n />\n </span>\n );\n}\n\ninterface CreditCardProps extends React.ComponentProps<\"div\"> {\n type?: CreditCardType;\n company?: React.ReactNode;\n cardNumber?: string;\n cardHolder?: string;\n cardExpiration?: string;\n /** Rendered width in px — the height follows the 316 × 190 aspect ratio. */\n width?: number;\n}\n\nfunction CreditCard({\n className,\n style,\n type = \"brand-dark\",\n company = \"Country Club\",\n cardNumber = \"1234 5678 9012 3456\",\n cardHolder = \"OLIVIA RHYE\",\n cardExpiration = \"06/28\",\n width = BASE_WIDTH,\n ...props\n}: CreditCardProps) {\n const scale = width / BASE_WIDTH;\n const variant = creditCardVariants[type];\n\n return (\n <div\n className={cn(\"relative shrink-0 select-none font-sans\", className)}\n data-slot=\"credit-card\"\n data-type={type}\n style={{ height: Math.round(BASE_HEIGHT * scale), width, ...style }}\n {...props}\n >\n <div\n className={cn(\n \"absolute top-0 left-0 flex origin-top-left flex-col justify-between overflow-hidden rounded-[20px] p-5\",\n variant.card,\n )}\n style={{\n height: BASE_HEIGHT,\n transform: `scale(${scale})`,\n width: BASE_WIDTH,\n }}\n >\n {variant.strip ? (\n <span aria-hidden className={cn(\"absolute\", variant.strip)} />\n ) : null}\n <div className=\"relative flex items-start justify-between\">\n <span\n className=\"font-semibold text-base tracking-tight\"\n data-slot=\"credit-card-company\"\n >\n {company}\n </span>\n <NfcIcon aria-hidden className=\"size-5 opacity-70\" />\n </div>\n <div className=\"relative flex flex-col gap-2.5\">\n <span\n className=\"font-medium text-[0.9375rem] tabular-nums tracking-[0.12em]\"\n data-slot=\"credit-card-number\"\n >\n {cardNumber}\n </span>\n <div className=\"flex items-end justify-between\">\n <div className=\"flex items-baseline gap-4\">\n <span\n className=\"font-medium text-[0.6875rem] uppercase tracking-[0.14em]\"\n data-slot=\"credit-card-holder\"\n >\n {cardHolder}\n </span>\n <span\n className=\"font-medium text-[0.6875rem] tabular-nums tracking-[0.14em] opacity-80\"\n data-slot=\"credit-card-expiration\"\n >\n {cardExpiration}\n </span>\n </div>\n <CreditCardLogo onDark={variant.onDark} />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport { CreditCard, type CreditCardProps, type CreditCardType };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from \"lucide-react\";\nimport type * as React from \"react\";\nimport { type Button, buttonVariants } from \"./button\";\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n data-slot=\"pagination\"\n {...props}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n className={cn(\"flex flex-row items-center gap-1\", className)}\n data-slot=\"pagination-content\"\n {...props}\n />\n );\n}\n\nfunction PaginationItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n className={cn(\n \"animate-in fade-in-0 zoom-in-95 duration-200 ease-out\",\n className,\n )}\n data-slot=\"pagination-item\"\n {...props}\n />\n );\n}\n\nexport type PaginationLinkProps = {\n isActive?: boolean;\n disabled?: boolean;\n size?: React.ComponentProps<typeof Button>[\"size\"];\n} & useRender.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n disabled,\n size = \"icon\",\n render,\n ...props\n}: PaginationLinkProps) {\n const defaultProps = {\n \"aria-current\": isActive ? (\"page\" as const) : undefined,\n \"aria-disabled\": disabled || undefined,\n className: cn(\n buttonVariants({\n size,\n variant: isActive ? \"outline\" : \"ghost\",\n }),\n \"transition-[opacity,box-shadow,filter] duration-200 ease-out\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n ),\n \"data-active\": isActive,\n \"data-disabled\": disabled || undefined,\n \"data-slot\": \"pagination-link\",\n tabIndex: disabled ? -1 : undefined,\n };\n\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(defaultProps, props),\n render,\n });\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n className={cn(\"max-sm:aspect-square max-sm:p-0\", className)}\n size=\"default\"\n {...props}\n >\n <ChevronLeftIcon className=\"sm:-ms-1\" />\n <span className=\"max-sm:hidden\">Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n className={cn(\"max-sm:aspect-square max-sm:p-0\", className)}\n size=\"default\"\n {...props}\n >\n <span className=\"max-sm:hidden\">Next</span>\n <ChevronRightIcon className=\"sm:-me-1\" />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n className={cn(\"flex min-w-7 justify-center\", className)}\n data-slot=\"pagination-ellipsis\"\n {...props}\n >\n <MoreHorizontalIcon className=\"size-5 sm: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","import {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n type PaginationLinkProps,\n PaginationNext,\n PaginationPrevious,\n} from \"./pagination\";\n\nexport function PaginationControls(props: {\n page: number;\n pageCount: number;\n renderPageLink: (page: number) => PaginationLinkProps[\"render\"];\n}) {\n const { page, pageCount, renderPageLink } = props;\n\n if (pageCount <= 1) return null;\n\n return (\n <Pagination>\n <PaginationContent>\n {/* Prev/Next are always rendered (disabled at the bounds) so they fade\n between states instead of popping in and out. */}\n <PaginationItem>\n <PaginationPrevious\n disabled={page <= 1}\n render={page > 1 ? renderPageLink(page - 1) : <span />}\n />\n </PaginationItem>\n\n {page > 1 && (\n <PaginationItem>\n <PaginationLink render={renderPageLink(1)}>1</PaginationLink>\n </PaginationItem>\n )}\n\n {page > 2 && (\n <PaginationItem>\n <PaginationEllipsis />\n </PaginationItem>\n )}\n\n <PaginationItem>\n <PaginationLink render={renderPageLink(page)} isActive>\n {page}\n </PaginationLink>\n </PaginationItem>\n\n {pageCount > page + 1 && (\n <PaginationItem>\n <PaginationEllipsis />\n </PaginationItem>\n )}\n\n {pageCount > page && (\n <PaginationItem>\n <PaginationLink render={renderPageLink(pageCount)}>\n {pageCount}\n </PaginationLink>\n </PaginationItem>\n )}\n\n <PaginationItem>\n <PaginationNext\n disabled={page >= pageCount}\n render={page < pageCount ? renderPageLink(page + 1) : <span />}\n />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n );\n}\n","import type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n className=\"relative w-full overflow-x-auto\"\n data-slot=\"table-container\"\n >\n <table\n className={cn(\n \"w-full caption-bottom in-data-[slot=frame]:border-separate in-data-[slot=frame]:border-spacing-0 text-sm\",\n className,\n )}\n data-slot=\"table\"\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n className={cn(\n \"[&_tr]:border-b in-data-[slot=frame]:**:[th]:h-9 in-data-[slot=frame]:*:[tr]:border-none in-data-[slot=frame]:*:[tr]:hover:bg-transparent\",\n className,\n )}\n data-slot=\"table-header\"\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n className={cn(\n \"relative in-data-[slot=frame]:rounded-xl in-data-[slot=frame]:shadow-xs/5 before:pointer-events-none before:absolute before:inset-px not-in-data-[slot=frame]:before:hidden before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/8%)] [&_tr:last-child]:border-0 in-data-[slot=frame]:*:[tr]:border-0 in-data-[slot=frame]:*:[tr]:*:[td]:border-b in-data-[slot=frame]:*:[tr]:*:[td]:bg-background in-data-[slot=frame]:*:[tr]:*:[td]:bg-clip-padding in-data-[slot=frame]:*:[tr]:first:*:[td]:first:rounded-ss-xl in-data-[slot=frame]:*:[tr]:*:[td]:first:border-s in-data-[slot=frame]:*:[tr]:first:*:[td]:border-t in-data-[slot=frame]:*:[tr]:last:*:[td]:last:rounded-ee-xl in-data-[slot=frame]:*:[tr]:*:[td]:last:border-e in-data-[slot=frame]:*:[tr]:first:*:[td]:last:rounded-se-xl in-data-[slot=frame]:*:[tr]:last:*:[td]:first:rounded-es-xl in-data-[slot=frame]:*:[tr]:hover:*:[td]:bg-transparent in-data-[slot=frame]:*:[tr]:data-[state=selected]:*:[td]:bg-muted/72\",\n className,\n )}\n data-slot=\"table-body\"\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n className={cn(\n \"border-t in-data-[slot=frame]:border-none bg-muted/72 in-data-[slot=frame]:bg-transparent font-medium [&>tr]:last:border-b-0 in-data-[slot=frame]:*:[tr]:hover:bg-transparent\",\n className,\n )}\n data-slot=\"table-footer\"\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n className={cn(\n \"border-b transition-colors hover:bg-muted/72 in-data-[slot=frame]:hover:bg-transparent data-[state=selected]:bg-muted/72 in-data-[slot=frame]:data-[state=selected]:bg-transparent\",\n className,\n )}\n data-slot=\"table-row\"\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n className={cn(\n \"h-10 whitespace-nowrap px-2.5 text-left align-middle font-medium text-muted-foreground leading-none has-[[role=checkbox]]:w-px has-[[role=checkbox]]:pe-0\",\n className,\n )}\n data-slot=\"table-head\"\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n className={cn(\n \"whitespace-nowrap p-2.5 align-middle leading-none in-data-[slot=frame]:first:p-[calc(--spacing(2.5)-1px)] in-data-[slot=frame]:last:p-[calc(--spacing(2.5)-1px)] has-[[role=checkbox]]:pe-0\",\n className,\n )}\n data-slot=\"table-cell\"\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n className={cn(\n \"in-data-[slot=frame]:my-4 mt-4 text-muted-foreground text-sm\",\n className,\n )}\n data-slot=\"table-caption\"\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 { SearchIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Input } from \"./input\";\nimport { PaginationControls } from \"./pagination-controls\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./table\";\n\nexport interface DataTablePagedColumn {\n key: string;\n label?: string;\n}\n\nexport interface DataTablePagedProps {\n /** Columns to render. Pass `label` to override the header text. */\n columns: DataTablePagedColumn[];\n /** Row objects; values are rendered with `String(...)` unless a ReactNode. */\n rows: Record<string, unknown>[];\n pageSize?: number;\n /** Show the client-side search box (filters across all columns). */\n searchable?: boolean;\n searchPlaceholder?: string;\n emptyLabel?: string;\n /**\n * Total row count when `rows` is only one page of a larger server-side set —\n * shown as \"n of total\" in the footer.\n */\n totalCount?: number;\n className?: string;\n}\n\nfunction formatCell(value: unknown): React.ReactNode {\n if (value === null || value === undefined || value === \"\") return \"—\";\n if (typeof value === \"boolean\") return value ? \"Yes\" : \"No\";\n if (React.isValidElement(value)) return value;\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\n/**\n * Client-side paginated (and optionally searchable) data table. Designed for\n * result sets a chat agent or API returns: pass plain row objects and column\n * keys, get a themed table with pagination that never renders huge lists.\n */\nfunction DataTablePaged({\n className,\n columns,\n emptyLabel = \"No results\",\n pageSize = 10,\n rows,\n searchable = true,\n searchPlaceholder = \"Filter results…\",\n totalCount,\n}: DataTablePagedProps) {\n const [page, setPage] = React.useState(1);\n const [query, setQuery] = React.useState(\"\");\n\n const filteredRows = React.useMemo(() => {\n const trimmed = query.trim().toLowerCase();\n if (!trimmed) return rows;\n return rows.filter((row) =>\n columns.some((column) =>\n String(row[column.key] ?? \"\")\n .toLowerCase()\n .includes(trimmed),\n ),\n );\n }, [columns, query, rows]);\n\n const pageCount = Math.max(1, Math.ceil(filteredRows.length / pageSize));\n const safePage = Math.min(page, pageCount);\n const pageRows = filteredRows.slice((safePage - 1) * pageSize, safePage * pageSize);\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)} data-slot=\"data-table-paged\">\n {searchable && rows.length > pageSize && (\n <div className=\"relative\">\n <SearchIcon className=\"-translate-y-1/2 absolute top-1/2 left-2.5 size-4 text-muted-foreground\" />\n <Input\n className=\"h-8 pl-8 text-sm\"\n onChange={(event) => {\n setQuery(event.target.value);\n setPage(1);\n }}\n placeholder={searchPlaceholder}\n value={query}\n />\n </div>\n )}\n\n <div className=\"overflow-x-auto rounded-lg border border-border\">\n <Table>\n <TableHeader>\n <TableRow>\n {columns.map((column) => (\n <TableHead className=\"whitespace-nowrap\" key={column.key}>\n {column.label ?? column.key.replaceAll(\"_\", \" \")}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {pageRows.length === 0 ? (\n <TableRow>\n <TableCell\n className=\"py-6 text-center text-muted-foreground\"\n colSpan={columns.length}\n >\n {emptyLabel}\n </TableCell>\n </TableRow>\n ) : (\n pageRows.map((row, rowIndex) => (\n <TableRow key={`${safePage}-${rowIndex}`}>\n {columns.map((column) => (\n <TableCell className=\"max-w-56 truncate\" key={column.key}>\n {formatCell(row[column.key])}\n </TableCell>\n ))}\n </TableRow>\n ))\n )}\n </TableBody>\n </Table>\n </div>\n\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <span className=\"text-muted-foreground text-xs\">\n {filteredRows.length}\n {typeof totalCount === \"number\" && totalCount > rows.length\n ? ` of ${totalCount}`\n : \"\"}{\" \"}\n rows\n </span>\n <PaginationControls\n page={safePage}\n pageCount={pageCount}\n renderPageLink={(nextPage) => (\n // biome-ignore lint/a11y/useValidAnchor: client-side pagination\n <a\n href=\"#\"\n onClick={(event) => {\n event.preventDefault();\n setPage(nextPage);\n }}\n />\n )}\n />\n </div>\n </div>\n );\n}\n\nexport { DataTablePaged };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Drawer(props: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger(\n props: React.ComponentProps<typeof DrawerPrimitive.Trigger>,\n) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal(\n props: React.ComponentProps<typeof DrawerPrimitive.Portal>,\n) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose(props: 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 className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm data-[state=closed]:animate-out data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n data-slot=\"drawer-overlay\"\n {...props}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n return (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n className={cn(\n \"group/drawer-content fixed z-50 flex h-auto flex-col bg-popover not-dark:bg-clip-padding text-popover-foreground shadow-lg/5 outline-none\",\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-[82vh] data-[vaul-drawer-direction=bottom]:rounded-t-2xl data-[vaul-drawer-direction=bottom]:border-t\",\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-[82vh] data-[vaul-drawer-direction=top]:rounded-b-2xl data-[vaul-drawer-direction=top]:border-b\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-[calc(100%-(--spacing(12)))] data-[vaul-drawer-direction=right]:max-w-md data-[vaul-drawer-direction=right]:border-s\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-[calc(100%-(--spacing(12)))] data-[vaul-drawer-direction=left]:max-w-md data-[vaul-drawer-direction=left]:border-e\",\n className,\n )}\n data-slot=\"drawer-content\"\n {...props}\n >\n {/* Grab handle — shown for bottom/top drawers. */}\n <div className=\"mx-auto mt-3 hidden h-1.5 w-12 shrink-0 rounded-full bg-border group-data-[vaul-drawer-direction=bottom]/drawer-content:block group-data-[vaul-drawer-direction=top]/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 className={cn(\n \"flex flex-col gap-1.5 p-6 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center md:group-data-[vaul-drawer-direction=bottom]/drawer-content:text-left\",\n className,\n )}\n data-slot=\"drawer-header\"\n {...props}\n />\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"mt-auto flex flex-col gap-2 border-t bg-muted/72 px-6 py-4\",\n className,\n )}\n data-slot=\"drawer-footer\"\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n className={cn(\"font-semibold text-xl leading-none\", className)}\n data-slot=\"drawer-title\"\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"drawer-description\"\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 { ContextMenu as ContextMenuPrimitive } from \"@base-ui/react/context-menu\";\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"../../lib/utils/css\";\n\nfunction ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuTrigger({\n className,\n ...props\n}: ContextMenuPrimitive.Trigger.Props) {\n return (\n <ContextMenuPrimitive.Trigger\n data-slot=\"context-menu-trigger\"\n className={cn(\"select-none\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n align = \"start\",\n alignOffset = 4,\n side = \"right\",\n sideOffset = 0,\n ...props\n}: ContextMenuPrimitive.Popup.Props &\n Pick<\n ContextMenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <ContextMenuPrimitive.Popup\n data-slot=\"context-menu-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-lg p-1 shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 z-50 max-h-(--available-height) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Positioner>\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: ContextMenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.GroupLabel\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: ContextMenuPrimitive.Item.Props & {\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 \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 group/context-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\n return (\n <ContextMenuPrimitive.SubmenuRoot data-slot=\"context-menu-sub\" {...props} />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: ContextMenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubmenuTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n </ContextMenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n ...props\n}: React.ComponentProps<typeof ContextMenuContent>) {\n return (\n <ContextMenuContent\n data-slot=\"context-menu-sub-content\"\n className=\"shadow-lg\"\n side=\"right\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: ContextMenuPrimitive.CheckboxItem.Props & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute right-2 pointer-events-none\">\n <ContextMenuPrimitive.CheckboxItemIndicator>\n <CheckIcon />\n </ContextMenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: ContextMenuPrimitive.RadioGroup.Props) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: ContextMenuPrimitive.RadioItem.Props & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 pointer-events-none\">\n <ContextMenuPrimitive.RadioItemIndicator>\n <CheckIcon />\n </ContextMenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: ContextMenuPrimitive.Separator.Props) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", 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 \"text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\",\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 { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\";\nimport { XIcon } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport { ScrollArea } from \"./scroll-area\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst DialogCreateHandle = DialogPrimitive.createHandle;\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nfunction DialogTrigger(props: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogClose(props: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogBackdrop({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n className,\n )}\n data-slot=\"dialog-backdrop\"\n {...props}\n />\n );\n}\n\nfunction DialogViewport({\n className,\n ...props\n}: DialogPrimitive.Viewport.Props) {\n return (\n <DialogPrimitive.Viewport\n className={cn(\n \"fixed inset-0 z-50 grid grid-rows-[1fr_auto_3fr] justify-items-center p-4\",\n className,\n )}\n data-slot=\"dialog-viewport\"\n {...props}\n />\n );\n}\n\nfunction DialogPopup({\n className,\n children,\n showCloseButton = true,\n bottomStickOnMobile = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean;\n bottomStickOnMobile?: boolean;\n}) {\n return (\n <DialogPortal>\n <DialogBackdrop />\n <DialogViewport\n className={cn(\n bottomStickOnMobile &&\n \"max-sm:grid-rows-[1fr_auto] max-sm:p-0 max-sm:pt-12\",\n )}\n >\n <DialogPrimitive.Popup\n className={cn(\n \"-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover not-dark:bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg/5 transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n bottomStickOnMobile &&\n \"max-sm:max-w-none max-sm:rounded-none max-sm:border-x-0 max-sm:border-t max-sm:border-b-0 max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden max-sm:before:rounded-none\",\n className,\n )}\n data-slot=\"dialog-popup\"\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n aria-label=\"Close\"\n className=\"absolute end-2 top-2\"\n render={<Button size=\"icon\" variant=\"ghost\" />}\n >\n <XIcon />\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogViewport>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-2 p-6 in-[[data-slot=dialog-popup]:has([data-slot=dialog-panel])]:pb-3 max-sm:pb-4\",\n className,\n )}\n data-slot=\"dialog-header\"\n {...props}\n />\n );\n}\n\nfunction DialogFooter({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: \"default\" | \"bare\";\n}) {\n return (\n <div\n className={cn(\n \"flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end sm:rounded-b-[calc(var(--radius-2xl)-1px)]\",\n variant === \"default\" && \"border-t bg-muted/72 py-4\",\n variant === \"bare\" &&\n \"in-[[data-slot=dialog-popup]:has([data-slot=dialog-panel])]:pt-3 pt-4 pb-6\",\n className,\n )}\n data-slot=\"dialog-footer\"\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n className={cn(\n \"font-heading font-semibold text-xl leading-none\",\n className,\n )}\n data-slot=\"dialog-title\"\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"dialog-description\"\n {...props}\n />\n );\n}\n\nfunction DialogPanel({\n className,\n scrollFade = true,\n ...props\n}: React.ComponentProps<\"div\"> & { scrollFade?: boolean }) {\n return (\n <ScrollArea scrollFade={scrollFade}>\n <div\n className={cn(\n \"p-6 in-[[data-slot=dialog-popup]:has([data-slot=dialog-header])]:pt-1 in-[[data-slot=dialog-popup]:has([data-slot=dialog-footer]:not(.border-t))]:pb-1\",\n className,\n )}\n data-slot=\"dialog-panel\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nexport {\n DialogCreateHandle,\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogClose,\n DialogBackdrop,\n DialogBackdrop as DialogOverlay,\n DialogPopup,\n DialogPopup as DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogPanel,\n DialogViewport,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance p-6 text-center md:p-12\",\n className,\n )}\n data-slot=\"empty\"\n {...props}\n />\n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex max-w-sm flex-col items-center text-center\",\n className,\n )}\n data-slot=\"empty-header\"\n {...props}\n />\n );\n}\n\nconst emptyMediaVariants = cva(\n \"flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n defaultVariants: {\n variant: \"default\",\n },\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"relative flex size-9 shrink-0 items-center justify-center rounded-md border bg-card text-foreground shadow-sm/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-md)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)] [&_svg:not([class*='size-'])]:size-4.5\",\n },\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 className={cn(\"relative mb-6\", className)}\n data-slot=\"empty-media\"\n data-variant={variant}\n {...props}\n >\n {variant === \"icon\" && (\n <>\n <div\n aria-hidden=\"true\"\n className={cn(\n emptyMediaVariants({ className, variant }),\n \"-translate-x-0.5 -rotate-10 pointer-events-none absolute bottom-px origin-bottom-left scale-84 shadow-none\",\n )}\n />\n <div\n aria-hidden=\"true\"\n className={cn(\n emptyMediaVariants({ className, variant }),\n \"pointer-events-none absolute bottom-px origin-bottom-right translate-x-0.5 rotate-10 scale-84 shadow-none\",\n )}\n />\n </>\n )}\n <div\n className={cn(emptyMediaVariants({ className, variant }))}\n {...props}\n />\n </div>\n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"font-heading font-semibold text-xl\", className)}\n data-slot=\"empty-title\"\n {...props}\n />\n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n className={cn(\n \"text-muted-foreground text-sm [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4 [[data-slot=empty-title]+&]:mt-1\",\n className,\n )}\n data-slot=\"empty-description\"\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm\",\n className,\n )}\n data-slot=\"empty-content\"\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 { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Button, type ButtonProps } from \"./button\";\n\nconst fabVariants = cva(\n \"fixed z-50 rounded-full shadow-lg transition-transform duration-150 hover:scale-105 active:scale-95 before:rounded-full\",\n {\n defaultVariants: {\n position: \"bottom-right\",\n },\n variants: {\n position: {\n \"bottom-right\": \"right-4 bottom-4 sm:right-6 sm:bottom-6\",\n \"bottom-left\": \"bottom-4 left-4 sm:bottom-6 sm:left-6\",\n \"top-right\": \"top-4 right-4 sm:top-6 sm:right-6\",\n \"top-left\": \"top-4 left-4 sm:top-6 sm:left-6\",\n },\n },\n },\n);\n\nexport interface FabProps extends ButtonProps {\n position?: VariantProps<typeof fabVariants>[\"position\"];\n}\n\n/**\n * Floating action button — a fixed, round icon button used to summon overlays\n * such as chat widgets. Composes `Button`, so all button variants/sizes apply.\n */\nfunction Fab({ className, position, size = \"icon-xl\", ...props }: FabProps) {\n return (\n <Button\n className={cn(fabVariants({ className, position }))}\n data-slot=\"fab\"\n size={size}\n {...props}\n />\n );\n}\n\nexport { Fab, fabVariants };\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst featuredIconVariants = cva(\n \"relative inline-flex shrink-0 select-none items-center justify-center align-middle [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n compoundVariants: [\n // The bordered themes are squared, with corners that scale with the size.\n {\n className: \"rounded-md before:rounded-[calc(var(--radius-md)-3px)]\",\n size: \"sm\",\n theme: [\"modern\", \"modern-neue\"],\n },\n {\n className: \"rounded-lg before:rounded-[calc(var(--radius-lg)-3px)]\",\n size: \"md\",\n theme: [\"modern\", \"modern-neue\"],\n },\n {\n className: \"rounded-[10px] before:rounded-[7px]\",\n size: \"lg\",\n theme: [\"modern\", \"modern-neue\"],\n },\n {\n className: \"rounded-xl before:rounded-[calc(var(--radius-xl)-3px)]\",\n size: \"xl\",\n theme: [\"modern\", \"modern-neue\"],\n },\n ],\n defaultVariants: { color: \"brand\", size: \"md\", theme: \"light\" },\n variants: {\n // Colors are applied through the theme/color maps below — the variant\n // exists so cva carries the prop type.\n color: { brand: \"\", error: \"\", gray: \"\", success: \"\", warning: \"\" },\n size: {\n sm: \"size-8 [&_svg:not([class*='size-'])]:size-4\",\n md: \"size-10 [&_svg:not([class*='size-'])]:size-5\",\n lg: \"size-12 [&_svg:not([class*='size-'])]:size-6\",\n xl: \"size-14 [&_svg:not([class*='size-'])]:size-7\",\n },\n theme: {\n dark: \"rounded-full text-white shadow-xs not-dark:inset-shadow-[0_1px_--theme(--color-white/16%)]\",\n gradient:\n \"rounded-full bg-linear-to-b from-white/24 to-white/0 text-white shadow-xs inset-shadow-[0_1px_--theme(--color-white/24%)]\",\n light: \"rounded-full\",\n modern:\n \"border border-input bg-background shadow-xs not-dark:bg-clip-padding dark:bg-input/32\",\n \"modern-neue\":\n \"border border-input bg-background shadow-xs not-dark:bg-clip-padding dark:bg-input/32 before:pointer-events-none before:absolute before:inset-[3px] before:border before:border-border/72 before:shadow-xs\",\n outline:\n \"rounded-full before:pointer-events-none before:absolute before:inset-0 before:rounded-full before:border-2 before:border-current before:opacity-12 after:pointer-events-none after:absolute after:inset-[15%] after:rounded-full after:border-2 after:border-current after:opacity-32\",\n },\n },\n },\n);\n\ntype FeaturedIconTheme = NonNullable<\n VariantProps<typeof featuredIconVariants>[\"theme\"]\n>;\ntype FeaturedIconColor = NonNullable<\n VariantProps<typeof featuredIconVariants>[\"color\"]\n>;\n\n/** Per-theme color treatments, using the design-system tonal/solid tokens. */\nconst featuredIconColors: Record<\n FeaturedIconTheme,\n Record<FeaturedIconColor, string>\n> = {\n dark: {\n brand: \"bg-brand\",\n error: \"bg-destructive\",\n gray: \"bg-secondary-foreground text-background\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n },\n gradient: {\n brand: \"bg-brand\",\n error: \"bg-destructive\",\n gray: \"bg-secondary-foreground text-background\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n },\n light: {\n brand: \"bg-brand/12 text-sidebar-primary dark:bg-brand/20\",\n error: \"bg-destructive/8 text-destructive-foreground dark:bg-destructive/16\",\n gray: \"bg-secondary text-secondary-foreground\",\n success: \"bg-success/8 text-success-foreground dark:bg-success/16\",\n warning: \"bg-warning/8 text-warning-foreground dark:bg-warning/16\",\n },\n modern: {\n brand: \"text-sidebar-primary\",\n error: \"text-destructive-foreground\",\n gray: \"text-foreground\",\n success: \"text-success-foreground\",\n warning: \"text-warning-foreground\",\n },\n \"modern-neue\": {\n brand: \"text-sidebar-primary\",\n error: \"text-destructive-foreground\",\n gray: \"text-foreground\",\n success: \"text-success-foreground\",\n warning: \"text-warning-foreground\",\n },\n outline: {\n brand: \"text-sidebar-primary\",\n error: \"text-destructive-foreground\",\n gray: \"text-muted-foreground\",\n success: \"text-success-foreground\",\n warning: \"text-warning-foreground\",\n },\n};\n\ninterface FeaturedIconProps extends Omit<React.ComponentProps<\"span\">, \"color\"> {\n theme?: FeaturedIconTheme;\n color?: FeaturedIconColor;\n size?: VariantProps<typeof featuredIconVariants>[\"size\"];\n /** Icon component rendered inside (e.g. a lucide icon). Or pass children. */\n icon?: React.ElementType;\n}\n\nfunction FeaturedIcon({\n className,\n theme = \"light\",\n color = \"brand\",\n size,\n icon: Icon,\n children,\n ...props\n}: FeaturedIconProps) {\n return (\n <span\n className={cn(\n featuredIconVariants({ color, size, theme }),\n featuredIconColors[theme][color],\n className,\n )}\n data-slot=\"featured-icon\"\n {...props}\n >\n {children ?? (Icon ? <Icon /> : null)}\n </span>\n );\n}\n\nexport { FeaturedIcon, featuredIconVariants };\n","\"use client\";\n\nimport { Fieldset as FieldsetPrimitive } from \"@base-ui/react/fieldset\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Fieldset({ className, ...props }: FieldsetPrimitive.Root.Props) {\n return (\n <FieldsetPrimitive.Root\n className={cn(\"flex w-full max-w-64 flex-col gap-6\", className)}\n data-slot=\"fieldset\"\n {...props}\n />\n );\n}\nfunction FieldsetLegend({\n className,\n ...props\n}: FieldsetPrimitive.Legend.Props) {\n return (\n <FieldsetPrimitive.Legend\n className={cn(\"font-semibold text-foreground\", className)}\n data-slot=\"fieldset-legend\"\n {...props}\n />\n );\n}\n\nexport { Fieldset, FieldsetLegend };\n","\"use client\";\n\nimport { Form as FormPrimitive } from \"@base-ui/react/form\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Form({ className, ...props }: FormPrimitive.Props) {\n return (\n <FormPrimitive\n className={cn(\"flex w-full flex-col gap-4\", className)}\n data-slot=\"form\"\n {...props}\n />\n );\n}\n\nexport { Form };\n","import type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Frame({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"relative flex flex-col rounded-2xl bg-muted/72 p-1\",\n \"*:[[data-slot=frame-panel]+[data-slot=frame-panel]]:mt-1\",\n className,\n )}\n data-slot=\"frame\"\n {...props}\n />\n );\n}\n\nfunction FramePanel({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"relative rounded-xl border bg-background bg-clip-padding p-5 shadow-xs/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"frame-panel\"\n {...props}\n />\n );\n}\n\nfunction FrameHeader({ className, ...props }: React.ComponentProps<\"header\">) {\n return (\n <header\n className={cn(\"flex flex-col px-5 py-4\", className)}\n data-slot=\"frame-panel-header\"\n {...props}\n />\n );\n}\n\nfunction FrameTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"font-semibold text-sm\", className)}\n data-slot=\"frame-panel-title\"\n {...props}\n />\n );\n}\n\nfunction FrameDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"frame-panel-description\"\n {...props}\n />\n );\n}\n\nfunction FrameFooter({ className, ...props }: React.ComponentProps<\"footer\">) {\n return (\n <footer\n className={cn(\"px-5 py-4\", className)}\n data-slot=\"frame-panel-footer\"\n {...props}\n />\n );\n}\n\nexport {\n Frame,\n FramePanel,\n FrameHeader,\n FrameTitle,\n FrameDescription,\n FrameFooter,\n};\n","import {\n FileQuestionIcon,\n ShieldAlertIcon,\n ShieldXIcon,\n TriangleAlertIcon,\n} from \"lucide-react\";\nimport type React from \"react\";\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"./empty\";\n\ninterface ErrorOrEmptyStateProps\n extends Omit<React.ComponentProps<\"div\">, \"title\"> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n media?: React.ReactNode;\n mediaVariant?: \"icon\" | \"default\";\n compact?: boolean;\n}\n\nfunction ErrorOrEmptyState({\n title,\n description,\n actions,\n className,\n media,\n mediaVariant = \"default\",\n compact,\n ...props\n}: ErrorOrEmptyStateProps) {\n return (\n <Empty {...props}>\n <EmptyHeader>\n {!compact && <EmptyMedia variant={mediaVariant}>{media}</EmptyMedia>}\n <EmptyTitle>{title}</EmptyTitle>\n <EmptyDescription>{description}</EmptyDescription>\n </EmptyHeader>\n <EmptyContent>{actions}</EmptyContent>\n </Empty>\n );\n}\n\ntype ErrorTemplateProps = Omit<\n ErrorOrEmptyStateProps,\n \"image\" | \"title\" | \"description\"\n> & {\n mediaClassName?: string;\n};\n\nfunction NotFoundErrorState({ mediaClassName, ...props }: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<FileQuestionIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Not found\"\n description=\"The requested resource was not found.\"\n {...props}\n />\n );\n}\n\nfunction UnauthorizedErrorState({\n mediaClassName,\n ...props\n}: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<ShieldAlertIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Unauthorized\"\n description=\"You are not authorized to access this resource.\"\n {...props}\n />\n );\n}\n\nfunction ForbiddenErrorState({ mediaClassName, ...props }: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<ShieldXIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Forbidden\"\n description=\"You are not allowed to access this resource.\"\n {...props}\n />\n );\n}\n\nfunction InternalServerErrorState({\n mediaClassName,\n ...props\n}: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<ShieldXIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Internal server error\"\n description=\"An error occurred while processing your request.\"\n {...props}\n />\n );\n}\n\nfunction OfflineErrorState({ mediaClassName, ...props }: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<ShieldXIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Offline\"\n description=\"Please check your internet connection and try again.\"\n {...props}\n />\n );\n}\n\nfunction GeneralErrorState({ mediaClassName, ...props }: ErrorTemplateProps) {\n return (\n <ErrorOrEmptyState\n media={<TriangleAlertIcon className={mediaClassName} />}\n mediaVariant=\"icon\"\n title=\"Error\"\n description=\"An error occurred while processing your request.\"\n {...props}\n />\n );\n}\n\nexport {\n ErrorOrEmptyState,\n NotFoundErrorState,\n UnauthorizedErrorState,\n ForbiddenErrorState,\n InternalServerErrorState,\n OfflineErrorState,\n GeneralErrorState,\n};\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n className={cn(\n \"shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:not-[[class^='h-']]:not-[[class*='_h-']]:self-stretch\",\n className,\n )}\n data-slot=\"separator\"\n orientation={orientation}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { Separator } from \"./separator\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst groupVariants = cva(\n \"flex w-fit *:focus-visible:z-1 has-[>[data-slot=group]]:gap-2 *:has-focus-visible:z-1 dark:*:[[data-slot=button]:hover~[data-slot=separator]:not([data-slot]:hover~[data-slot=separator]~[data-slot=separator]),[data-slot][data-pressed]~[data-slot=separator]:not([data-slot][data-pressed]~[data-slot=separator]~[data-slot=separator])]:before:bg-input/64 dark:*:[[data-slot=separator]:has(~[data-slot=button]:hover):not(:has(~[data-slot=separator]~[data-slot]:hover)),[data-slot=separator]:has(~[data-slot][data-pressed]):not(:has(~[data-slot=separator]~[data-slot][data-pressed]))]:before:bg-input/64\",\n {\n defaultVariants: {\n orientation: \"horizontal\",\n },\n variants: {\n orientation: {\n horizontal:\n \"*:[[data-slot]~[data-slot]:not([data-slot=separator])]:before:-start-[0.5px] *:data-slot:not-data-[slot=separator]:has-[~[data-slot]]:before:-end-[0.5px] *:pointer-coarse:after:min-w-auto *:data-slot:has-[~[data-slot]]:rounded-e-none *:data-slot:has-[~[data-slot]]:border-e-0 *:data-slot:has-[~[data-slot]]:before:rounded-e-none *:[[data-slot]~[data-slot]]:rounded-s-none *:[[data-slot]~[data-slot]]:border-s-0 *:[[data-slot]~[data-slot]]:before:rounded-s-none\",\n vertical:\n \"*:[[data-slot]~[data-slot]:not([data-slot=separator])]:before:-top-[0.5px] *:data-slot:not-data-[slot=separator]:has-[~[data-slot]]:before:-bottom-[0.5px] flex-col *:pointer-coarse:after:min-h-auto *:data-slot:has-[~[data-slot]]:rounded-b-none *:data-slot:has-[~[data-slot]]:border-b-0 *:data-slot:not-data-[slot=separator]:has-[~[data-slot]]:before:hidden *:data-slot:has-[~[data-slot]]:before:rounded-b-none dark:*:last:before:hidden dark:*:first:before:block *:[[data-slot]~[data-slot]]:rounded-t-none *:[[data-slot]~[data-slot]]:border-t-0 *:[[data-slot]~[data-slot]]:before:rounded-t-none\",\n },\n },\n },\n);\n\nfunction Group({\n className,\n orientation,\n children,\n ...props\n}: {\n className?: string;\n orientation?: VariantProps<typeof groupVariants>[\"orientation\"];\n children: React.ReactNode;\n} & React.ComponentProps<\"div\">) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: Imported from library\n <div\n className={cn(groupVariants({ orientation }), className)}\n data-orientation={orientation}\n data-slot=\"group\"\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n );\n}\n\nfunction GroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"relative inline-flex items-center whitespace-nowrap gap-2 rounded-lg border border-input bg-muted not-dark:bg-clip-padding px-[calc(--spacing(3)-1px)] text-muted-foreground text-base sm:text-sm shadow-xs/5 outline-none transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:bg-input/64 dark:before:shadow-[0_-1px_--theme(--color-white/6%)] [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 [&_svg]:-mx-0.5\",\n className,\n ),\n \"data-slot\": \"group-text\",\n };\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps(defaultProps, props),\n render,\n });\n}\n\nfunction GroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: {\n className?: string;\n} & React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n className={cn(\n \"[[data-slot=input-control]:focus-within+&,[data-slot=input-group]:focus-within+&,[data-slot=select-trigger]:focus-visible+*+&,[data-slot=number-field]:focus-within+input+&]:-translate-x-px pointer-events-none relative z-2 bg-input before:absolute before:inset-0 has-[+[data-slot=input-control]:focus-within,+[data-slot=input-group]:focus-within,+[data-slot=select-trigger]:focus-visible+*,+[data-slot=number-field]:focus-within]:translate-x-px has-[+[data-slot=input-control]:focus-within,+[data-slot=input-group]:focus-within,+[data-slot=select-trigger]:focus-visible+*,+[data-slot=number-field]:focus-within]:bg-ring dark:before:bg-input/32 [[data-slot=input-control]:focus-within+&,[data-slot=input-group]:focus-within+&,[data-slot=select-trigger]:focus-visible+*+&,[data-slot=number-field]:focus-within+&,[data-slot=number-field]:focus-within+input+&]:bg-ring\",\n className,\n )}\n orientation={orientation}\n {...props}\n />\n );\n}\n\nexport {\n Group,\n Group as ButtonGroup,\n GroupText,\n GroupText as ButtonGroupText,\n GroupSeparator,\n GroupSeparator as ButtonGroupSeparator,\n groupVariants,\n};\n","\"use client\";\n\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst TooltipCreateHandle = TooltipPrimitive.createHandle;\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nfunction TooltipTrigger(props: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipTitle({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) {\n return (\n <p\n data-slot=\"tooltip-title\"\n className={cn(\"font-medium leading-snug\", className)}\n {...props}\n />\n );\n}\n\nfunction TooltipDescription({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) {\n return (\n <p\n data-slot=\"tooltip-description\"\n className={cn(\"text-muted-foreground leading-snug\", className)}\n {...props}\n />\n );\n}\n\nfunction TooltipPopup({\n className,\n align = \"center\",\n sideOffset = 4,\n side = \"top\",\n arrow = false,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props & {\n align?: TooltipPrimitive.Positioner.Props[\"align\"];\n side?: TooltipPrimitive.Positioner.Props[\"side\"];\n sideOffset?: TooltipPrimitive.Positioner.Props[\"sideOffset\"];\n arrow?: boolean;\n}) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n className=\"z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom,transform] data-instant:transition-none\"\n data-slot=\"tooltip-positioner\"\n side={side}\n sideOffset={arrow ? (sideOffset as number) + 5 : sideOffset}\n >\n <TooltipPrimitive.Popup\n className={cn(\n \"relative flex h-(--popup-height,auto) w-(--popup-width,auto) origin-(--transform-origin) text-balance rounded-md border bg-popover not-dark:bg-clip-padding text-popover-foreground text-xs shadow-md/5 transition-[width,height,scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-md)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 data-instant:duration-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"tooltip-popup\"\n {...props}\n >\n <TooltipPrimitive.Viewport\n className=\"relative size-full overflow-clip px-(--viewport-inline-padding) py-1 [--viewport-inline-padding:--spacing(2)] data-instant:transition-none **:data-current:data-ending-style:opacity-0 **:data-current:data-starting-style:opacity-0 **:data-previous:data-ending-style:opacity-0 **:data-previous:data-starting-style:opacity-0 **:data-current:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-previous:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-previous:truncate **:data-current:opacity-100 **:data-previous:opacity-100 **:data-current:transition-opacity **:data-previous:transition-opacity\"\n data-slot=\"tooltip-viewport\"\n >\n {children}\n </TooltipPrimitive.Viewport>\n {arrow && (\n <TooltipPrimitive.Arrow\n data-slot=\"tooltip-arrow\"\n className=\"absolute block size-2.5 bg-popover data-[side=top]:[clip-path:polygon(0%_0%,100%_0%,50%_100%)] data-[side=bottom]:[clip-path:polygon(50%_0%,0%_100%,100%_100%)] data-[side=left]:[clip-path:polygon(0%_0%,100%_50%,0%_100%)] data-[side=right]:[clip-path:polygon(100%_0%,0%_50%,100%_100%)]\"\n />\n )}\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport {\n TooltipCreateHandle,\n TooltipProvider,\n Tooltip,\n TooltipTrigger,\n TooltipPopup,\n TooltipPopup as TooltipContent,\n TooltipTitle,\n TooltipDescription,\n};\n","\"use client\";\n\nimport { CircleHelp } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport {\n Tooltip,\n TooltipDescription,\n TooltipPopup,\n TooltipProvider,\n TooltipTitle,\n TooltipTrigger,\n} from \"./tooltip\";\n\nexport interface HelpTipProps {\n /** The help text shown in the tooltip. */\n children?: React.ReactNode;\n /** Optional bold heading rendered above the description text. */\n title?: React.ReactNode;\n /** Which side of the trigger the tooltip opens on. Default \"top\". */\n side?: React.ComponentProps<typeof TooltipPopup>[\"side\"];\n /** Alignment of the tooltip along the trigger. Default \"center\". */\n align?: React.ComponentProps<typeof TooltipPopup>[\"align\"];\n /** Accessible label for the icon button. Default \"More information\". */\n label?: string;\n /** Hover / focus open delay in ms. Default 150. */\n delay?: number;\n /** Icon size in px. Default 16. */\n iconSize?: number;\n /** Extra classes for the trigger button. */\n className?: string;\n /** Extra classes for the tooltip popup. */\n popupClassName?: string;\n /** Render the little arrow pointing at the icon. Default false. */\n arrow?: boolean;\n}\n\n/**\n * A small \"?\" help affordance: an unobtrusive circular icon that reveals\n * supporting text in a tooltip on hover / focus. Use it next to a label,\n * heading, or field when a short explanation would help but shouldn't take up\n * permanent space.\n *\n * ```tsx\n * <span className=\"flex items-center gap-1.5\">\n * My Events\n * <HelpTip>Every event Country Club has surfaced for you…</HelpTip>\n * </span>\n * ```\n */\nexport function HelpTip({\n children,\n title,\n side = \"top\",\n align = \"center\",\n label = \"More information\",\n delay = 150,\n iconSize = 16,\n className,\n popupClassName,\n arrow = false,\n}: HelpTipProps) {\n return (\n <TooltipProvider delay={delay}>\n <Tooltip>\n <TooltipTrigger\n aria-label={label}\n className={cn(\n \"inline-flex shrink-0 cursor-help items-center justify-center rounded-full text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring\",\n className,\n )}\n >\n <CircleHelp aria-hidden size={iconSize} />\n </TooltipTrigger>\n <TooltipPopup\n align={align}\n arrow={arrow}\n className={cn(\"max-w-64 [--viewport-inline-padding:--spacing(3)]\", popupClassName)}\n side={side}\n >\n {title ? (\n <div className=\"flex flex-col gap-0.5 py-0.5\">\n <TooltipTitle>{title}</TooltipTitle>\n <TooltipDescription className=\"text-popover-foreground\">{children}</TooltipDescription>\n </div>\n ) : (\n <div className=\"py-0.5 leading-snug\">{children}</div>\n )}\n </TooltipPopup>\n </Tooltip>\n </TooltipProvider>\n );\n}\n","\"use client\";\n\nimport { useRef } from \"react\";\n\n// biome-ignore lint/suspicious/noExplicitAny: Generic shinanigans\nfunction useCallbackRef<T extends (...args: Array<any>) => any>(fn: T): T {\n const fnRef = useRef(fn);\n fnRef.current = fn;\n\n // biome-ignore lint/suspicious/noExplicitAny: Generic shinanigans\n const ref = useRef((...args: Array<any>) => fnRef.current(...args));\n return ref.current as T;\n}\n\nexport default useCallbackRef;\n","\"use client\";\n\nimport { useCallback, useRef, useState } from \"react\";\n\nexport function useHover<T extends Element>({\n mounted = true,\n}: {\n mounted?: boolean;\n} = {}): readonly [(node: T | null) => void, boolean] {\n const [hovering, setHovering] = useState(false);\n const previousNode = useRef<T | null>(null);\n\n const [prevMounted, setPrevMounted] = useState(mounted);\n if (mounted !== prevMounted) {\n setPrevMounted(mounted);\n if (!mounted) {\n setHovering(false);\n }\n }\n\n const handleMouseEnter = useCallback(() => {\n setHovering(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovering(false);\n }, []);\n\n const customRef = useCallback<React.RefCallback<T>>(\n (node) => {\n if (previousNode.current?.nodeType === Node.ELEMENT_NODE) {\n previousNode.current.removeEventListener(\n \"mouseenter\",\n handleMouseEnter,\n );\n previousNode.current.removeEventListener(\n \"mouseleave\",\n handleMouseLeave,\n );\n }\n\n if (node?.nodeType === Node.ELEMENT_NODE) {\n node.addEventListener(\"mouseenter\", handleMouseEnter);\n node.addEventListener(\"mouseleave\", handleMouseLeave);\n }\n\n previousNode.current = node;\n },\n [handleMouseEnter, handleMouseLeave],\n );\n\n return [customRef, hovering] as const;\n}\n","\"use client\";\n\nimport { Transition } from \"@headlessui/react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport type React from \"react\";\nimport {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport useResizeObserver from \"use-resize-observer\";\nimport useCallbackRef from \"../../lib/hooks/use-callback-ref\";\nimport { useHover } from \"../../lib/hooks/use-hover\";\nimport { cn } from \"../../lib/utils/css\";\nimport type { AsChildProps } from \"../../types/helpers\";\n\ninterface HorizontalScrollFaderContextValue {\n isLeftOverflowing: boolean;\n isRightOverflowing: boolean;\n containerRef: React.RefObject<HTMLElement | null>;\n onScroll: () => void;\n}\n\nconst HorizontalScrollFaderContext =\n createContext<HorizontalScrollFaderContextValue>({\n isLeftOverflowing: false,\n isRightOverflowing: false,\n containerRef: { current: null },\n onScroll: () => {},\n });\n\nfunction HorizontalScrollFaderInner(\n { asChild, ...props }: AsChildProps<\"div\">,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const containerRef = useRef<HTMLElement>(null);\n\n const [isLeftOverflowing, setIsLeftOverflowing] = useState(false);\n const [isRightOverflowing, setIsRightOverflowing] = useState(false);\n\n const onScroll = useCallbackRef(() => {\n if (!containerRef.current) return;\n\n const { scrollLeft, scrollWidth, clientWidth } = containerRef.current;\n setIsLeftOverflowing(scrollLeft > 0);\n setIsRightOverflowing(scrollLeft + clientWidth < scrollWidth);\n });\n\n const contextValue = useMemo(\n () => ({ isLeftOverflowing, isRightOverflowing, containerRef, onScroll }),\n [isLeftOverflowing, isRightOverflowing, onScroll],\n );\n\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <HorizontalScrollFaderContext.Provider value={contextValue}>\n <Slot className=\"relative\" onScroll={onScroll}>\n <Comp ref={ref} {...props} />\n </Slot>\n </HorizontalScrollFaderContext.Provider>\n );\n}\n\nconst HorizontalScrollFader = forwardRef(HorizontalScrollFaderInner);\n\nfunction HorizontalScrollFaderContentInner(\n { asChild, ...props }: AsChildProps<\"div\">,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const Comp = asChild ? Slot : \"div\";\n const { isLeftOverflowing, isRightOverflowing, containerRef, onScroll } =\n useContext(HorizontalScrollFaderContext);\n\n useResizeObserver({\n ref: containerRef as React.RefObject<HTMLElement>,\n onResize: onScroll,\n });\n\n // A single horizontal mask gradient fades each edge over its fader size.\n // When an edge isn't overflowing its fader size is 0, so no fade shows.\n // Inline styles (with the -webkit- prefix for Safari) keep this independent\n // of Tailwind mask-utility emission.\n const maskImage = `linear-gradient(to right, transparent 0, #000 var(--left-fader-size), #000 calc(100% - var(--right-fader-size)), transparent 100%)`;\n\n return (\n <Slot\n onScroll={onScroll}\n className={cn(\n \"overflow-auto [transition:--left-fader-size_150ms,--right-fader-size_150ms] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n )}\n style={{\n \"--left-fader-size\": isLeftOverflowing ? \"3rem\" : \"0rem\",\n \"--right-fader-size\": isRightOverflowing ? \"3rem\" : \"0rem\",\n maskImage,\n WebkitMaskImage: maskImage,\n }}\n ref={containerRef}\n >\n <Comp ref={ref} {...props} />\n </Slot>\n );\n}\n\nconst HorizontalScrollFaderContent = forwardRef(\n HorizontalScrollFaderContentInner,\n);\n\nfunction HorizontalScrollFaderLeftScrollerInner(\n { asChild, ...props }: AsChildProps<\"button\">,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const Comp = asChild ? Slot : \"button\";\n const { containerRef, isLeftOverflowing } = useContext(\n HorizontalScrollFaderContext,\n );\n const onClick = useCallbackRef(() => {\n if (!containerRef.current) return;\n containerRef.current.scrollBy({\n left: -containerRef.current.clientWidth,\n behavior: \"smooth\",\n });\n });\n\n const [hoverRef, hovered] = useHover<HTMLElement>({\n mounted: isLeftOverflowing,\n });\n useEffect(() => {\n if (!hovered || !isLeftOverflowing) return;\n let stopped = false;\n let animationFrameId: number;\n let startTime: DOMHighResTimeStamp;\n\n const animate = (timestamp: DOMHighResTimeStamp) => {\n if (stopped) return;\n if (!startTime) startTime = timestamp;\n const elapsed = Math.min(timestamp - startTime, 2000);\n containerRef.current?.scrollBy({\n left: -Math.log2(elapsed + 1),\n });\n animationFrameId = requestAnimationFrame(animate);\n };\n animationFrameId = requestAnimationFrame(animate);\n\n return () => {\n stopped = true;\n cancelAnimationFrame(animationFrameId);\n };\n }, [hovered, isLeftOverflowing, containerRef.current?.scrollBy]);\n\n return (\n <Transition show={isLeftOverflowing}>\n <Slot onClick={onClick} ref={hoverRef}>\n <Comp {...(asChild ? {} : { type: \"button\" })} ref={ref} {...props} />\n </Slot>\n </Transition>\n );\n}\n\nconst HorizontalScrollFaderLeftScroller = forwardRef(\n HorizontalScrollFaderLeftScrollerInner,\n);\n\nfunction HorizontalScrollFaderRightScrollerInner(\n { asChild, ...props }: AsChildProps<\"button\">,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const Comp = asChild ? Slot : \"button\";\n const { containerRef, isRightOverflowing } = useContext(\n HorizontalScrollFaderContext,\n );\n const onClick = useCallbackRef(() => {\n if (!containerRef.current) return;\n containerRef.current.scrollBy({\n left: containerRef.current.clientWidth,\n behavior: \"smooth\",\n });\n });\n\n const [hoverRef, hovered] = useHover({\n mounted: isRightOverflowing,\n });\n useEffect(() => {\n if (!hovered || !isRightOverflowing) return;\n let stopped = false;\n let animationFrameId: number;\n let startTime: DOMHighResTimeStamp;\n\n const animate = (timestamp: DOMHighResTimeStamp) => {\n if (stopped) return;\n if (!startTime) startTime = timestamp;\n const elapsed = Math.min(timestamp - startTime, 2000);\n containerRef.current?.scrollBy({\n left: Math.log2(elapsed + 1),\n });\n animationFrameId = requestAnimationFrame(animate);\n };\n animationFrameId = requestAnimationFrame(animate);\n\n return () => {\n stopped = true;\n cancelAnimationFrame(animationFrameId);\n };\n }, [hovered, isRightOverflowing, containerRef.current?.scrollBy]);\n\n return (\n <Transition show={isRightOverflowing}>\n <Slot onClick={onClick} ref={hoverRef}>\n <Comp {...(asChild ? {} : { type: \"button\" })} ref={ref} {...props} />\n </Slot>\n </Transition>\n );\n}\n\nconst HorizontalScrollFaderRightScroller = forwardRef(\n HorizontalScrollFaderRightScrollerInner,\n);\n\nexport {\n HorizontalScrollFader,\n HorizontalScrollFaderContent,\n HorizontalScrollFaderLeftScroller,\n HorizontalScrollFaderRightScroller,\n};\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { OTPInput, OTPInputContext, REGEXP_ONLY_DIGITS } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ntype InputOTPProps = React.ComponentProps<typeof OTPInput>;\n\nfunction InputOTP({\n className,\n containerClassName,\n // Digits-only by default. Override `pattern`/`inputMode` to allow letters.\n inputMode = \"numeric\",\n pattern = REGEXP_ONLY_DIGITS,\n ...props\n}: InputOTPProps) {\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 inputMode={inputMode}\n pattern={pattern}\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\nconst inputOTPSlotVariants = cva(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex items-center justify-center border-y border-r shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n {\n variants: {\n size: {\n sm: \"h-8 w-8 text-xs\",\n default: \"h-9 w-9 text-sm\",\n lg: \"h-11 w-11 text-base\",\n },\n },\n defaultVariants: { size: \"default\" },\n },\n);\n\nfunction InputOTPSlot({\n index,\n className,\n size,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n} & VariantProps<typeof inputOTPSlotVariants>) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(inputOTPSlotVariants({ size }), className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n // biome-ignore lint/a11y/useFocusableInteractive lint/a11y/useSemanticElements lint/a11y/useAriaPropsForRole: Installed from shadcn\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Separator } from \"./separator\";\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"group/item-group flex flex-col\", className)}\n data-slot=\"item-group\"\n role=\"list\"\n {...props}\n />\n );\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n className={cn(\"my-0\", className)}\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n \"group/item flex flex-wrap items-center rounded-lg border border-transparent text-base outline-none transition-colors duration-100 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background sm:text-sm [a]:transition-colors [a]:hover:bg-accent/50\",\n {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n size: {\n default: \"gap-4 p-4\",\n sm: \"gap-2.5 px-4 py-3\",\n },\n variant: {\n default: \"bg-transparent\",\n muted: \"bg-muted/50\",\n outline:\n \"border-border bg-card not-dark:bg-clip-padding shadow-xs/5 dark:bg-input/32\",\n },\n },\n },\n);\n\ninterface ItemProps extends useRender.ComponentProps<\"div\"> {\n variant?: VariantProps<typeof itemVariants>[\"variant\"];\n size?: VariantProps<typeof itemVariants>[\"size\"];\n}\n\nfunction Item({ className, variant, size, render, ...props }: ItemProps) {\n const defaultProps = {\n className: cn(itemVariants({ className, size, variant })),\n \"data-size\": size ?? \"default\",\n \"data-slot\": \"item\",\n \"data-variant\": variant ?? \"default\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\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 defaultVariants: {\n variant: \"default\",\n },\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\",\n },\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 className={cn(itemMediaVariants({ className, variant }))}\n data-slot=\"item-media\"\n data-variant={variant}\n {...props}\n />\n );\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\",\n className,\n )}\n data-slot=\"item-content\"\n {...props}\n />\n );\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex w-fit items-center gap-2 font-medium leading-snug\",\n className,\n )}\n data-slot=\"item-title\"\n {...props}\n />\n );\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n className={cn(\n \"line-clamp-2 text-balance font-normal text-muted-foreground text-sm leading-normal sm:text-xs\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className,\n )}\n data-slot=\"item-description\"\n {...props}\n />\n );\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n data-slot=\"item-actions\"\n {...props}\n />\n );\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className,\n )}\n data-slot=\"item-header\"\n {...props}\n />\n );\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className,\n )}\n data-slot=\"item-footer\"\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 itemVariants,\n};\n","\"use client\";\n\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n className={cn(\n \"pointer-events-none inline-flex h-5 min-w-5 select-none items-center justify-center gap-1 rounded bg-muted px-1 font-medium font-sans text-muted-foreground text-xs [&_svg:not([class*='size-'])]:size-3\",\n className,\n )}\n data-slot=\"kbd\"\n {...props}\n />\n );\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n className={cn(\"inline-flex items-center gap-1\", className)}\n data-slot=\"kbd-group\"\n {...props}\n />\n );\n}\n\nexport { Kbd, KbdGroup };\n","\"use client\";\n\nimport type * as React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\nimport { cn } from \"../../lib/utils/css\";\n\n/** Common LaTeX command → readable-text replacements. */\nconst LATEX_SYMBOLS: Record<string, string> = {\n times: \"×\",\n cdot: \"·\",\n div: \"÷\",\n approx: \"≈\",\n neq: \"≠\",\n ne: \"≠\",\n leq: \"≤\",\n le: \"≤\",\n geq: \"≥\",\n ge: \"≥\",\n pm: \"±\",\n to: \"→\",\n rightarrow: \"→\",\n Rightarrow: \"⇒\",\n infty: \"∞\",\n cdots: \"⋯\",\n ldots: \"…\",\n deg: \"°\",\n};\n\n/** Wrap a fraction side in parens only when it holds an operator, so\n * `\\frac{116}{22}` → `116/22` but `\\frac{a+b}{2}` → `(a+b)/2`. */\nconst wrapFracSide = (x: string): string => {\n const t = x.trim();\n return /[+\\-*/×÷·\\s]/.test(t) ? `(${t})` : t;\n};\n\n/**\n * LLMs sometimes emit LaTeX math (`\\( \\frac{116}{22} \\times 100 \\approx 527\\% \\)`),\n * which react-markdown renders as raw gibberish. We don't ship a full math\n * engine (KaTeX + fonts) — assistant chat rarely needs typeset math — so this\n * downgrades the common LaTeX constructs to readable plain text instead. Plain\n * text with no backslash / `$` is returned untouched (fast path), and lone `$`\n * amounts like \"$100\" are left alone (only `$…$` containing a command unwraps).\n */\nfunction normalizeLatex(src: string): string {\n if (!src.includes(\"\\\\\") && !src.includes(\"$\")) return src;\n\n let s = src;\n\n // Unwrap math delimiters. `$$…$$` display + `\\(…\\)`/`\\[…\\]` inline always;\n // single `$…$` only when the body looks like math (has a backslash).\n s = s.replace(/\\$\\$([\\s\\S]*?)\\$\\$/g, \" $1 \");\n s = s.replace(/\\$([^$\\n]*\\\\[^$\\n]*)\\$/g, \" $1 \");\n s = s.replace(/\\\\[()[\\]]/g, \" \");\n\n // \\frac{a}{b} → a/b (a few passes for nesting), \\sqrt{x} → √(x).\n for (let i = 0; i < 3; i++) {\n const next = s.replace(\n /\\\\[dt]?frac\\s*\\{([^{}]*)\\}\\s*\\{([^{}]*)\\}/g,\n (_m, a: string, b: string) => `${wrapFracSide(a)}/${wrapFracSide(b)}`,\n );\n if (next === s) break;\n s = next;\n }\n s = s.replace(/\\\\sqrt\\s*\\{([^{}]*)\\}/g, \"√($1)\");\n s = s.replace(/\\\\(?:text|mathrm|mathbf|mathit|operatorname)\\s*\\{([^{}]*)\\}/g, \"$1\");\n\n // Known symbols → unicode; \\left/\\right dropped.\n s = s.replace(/\\\\([a-zA-Z]+)/g, (m, name: string) => LATEX_SYMBOLS[name] ?? m);\n s = s.replace(/\\\\(left|right)\\b/g, \"\");\n\n // Escaped chars (\\% \\$ \\_ \\{ …) and thin spaces (\\, \\; \\!).\n s = s.replace(/\\\\([%$&#_{}])/g, \"$1\");\n s = s.replace(/\\\\[,;:!]/g, \"\");\n s = s.replace(/\\\\ /g, \" \");\n\n // Any leftover unknown \\command → keep the word, drop the backslash.\n s = s.replace(/\\\\([a-zA-Z]+)/g, \"$1\");\n\n // Collapse grouping braces ({x} → x) and runs of spaces.\n for (let i = 0; i < 3; i++) {\n const next = s.replace(/\\{([^{}]*)\\}/g, \"$1\");\n if (next === s) break;\n s = next;\n }\n return s.replace(/[ \\t]{2,}/g, \" \");\n}\n\nexport interface MarkdownProps {\n /** The markdown source to render. */\n children: string;\n className?: string;\n}\n\n/**\n * Markdown renderer for assistant/chat content (GitHub-flavored markdown).\n * Raw HTML in the source is NOT rendered — output is limited to markdown\n * elements, which keeps untrusted model output safe to display.\n */\nfunction Markdown({ children, className }: MarkdownProps) {\n return (\n <div\n className={cn(\n \"space-y-2 break-words text-foreground text-sm leading-relaxed\",\n className,\n )}\n data-slot=\"markdown\"\n >\n <ReactMarkdown\n components={{\n a: ({ node: _node, ...props }) => (\n <a\n className=\"font-medium text-primary underline underline-offset-2 hover:opacity-80\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n {...props}\n />\n ),\n blockquote: ({ node: _node, ...props }) => (\n <blockquote\n className=\"border-border border-l-2 pl-3 text-muted-foreground italic\"\n {...props}\n />\n ),\n code: ({ node: _node, className: codeClassName, ...props }) => {\n const isBlock = /language-/.test(codeClassName ?? \"\");\n return (\n <code\n className={cn(\n \"rounded bg-muted font-mono text-[0.85em]\",\n isBlock ? \"block overflow-x-auto p-3\" : \"px-1 py-0.5\",\n codeClassName,\n )}\n {...props}\n />\n );\n },\n h1: ({ node: _node, ...props }) => (\n <h1 className=\"font-semibold text-base\" {...props} />\n ),\n h2: ({ node: _node, ...props }) => (\n <h2 className=\"font-semibold text-base\" {...props} />\n ),\n h3: ({ node: _node, ...props }) => (\n <h3 className=\"font-semibold text-sm\" {...props} />\n ),\n hr: ({ node: _node, ...props }) => (\n <hr className=\"border-border\" {...props} />\n ),\n li: ({ node: _node, ...props }) => <li className=\"my-0.5\" {...props} />,\n ol: ({ node: _node, ...props }) => (\n <ol className=\"list-decimal space-y-1 pl-5\" {...props} />\n ),\n pre: ({ node: _node, ...props }) => (\n <pre\n className=\"overflow-x-auto rounded-lg bg-muted p-0 text-[0.85em]\"\n {...props}\n />\n ),\n table: ({ node: _node, ...props }) => (\n <div className=\"overflow-x-auto rounded-lg border border-border\">\n <table className=\"w-full text-left text-sm\" {...props} />\n </div>\n ),\n td: ({ node: _node, ...props }) => (\n <td className=\"border-border border-t px-3 py-1.5 align-top\" {...props} />\n ),\n th: ({ node: _node, ...props }) => (\n <th\n className=\"bg-muted px-3 py-1.5 font-medium text-muted-foreground\"\n {...props}\n />\n ),\n ul: ({ node: _node, ...props }) => (\n <ul className=\"list-disc space-y-1 pl-5\" {...props} />\n ),\n }}\n remarkPlugins={[remarkGfm]}\n skipHtml\n >\n {normalizeLatex(children)}\n </ReactMarkdown>\n </div>\n );\n}\n\nexport { Markdown };\n","\"use client\";\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst MenuCreateHandle = MenuPrimitive.createHandle;\n\nconst Menu = MenuPrimitive.Root;\n\nconst MenuPortal = MenuPrimitive.Portal;\n\nfunction MenuTrigger(props: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"menu-trigger\" {...props} />;\n}\n\nfunction MenuPopup({\n children,\n className,\n sideOffset = 4,\n align = \"center\",\n alignOffset,\n side = \"bottom\",\n ...props\n}: MenuPrimitive.Popup.Props & {\n align?: MenuPrimitive.Positioner.Props[\"align\"];\n sideOffset?: MenuPrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: MenuPrimitive.Positioner.Props[\"alignOffset\"];\n side?: MenuPrimitive.Positioner.Props[\"side\"];\n}) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n className=\"z-50\"\n data-slot=\"menu-positioner\"\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n className={cn(\n \"relative flex not-[class*='w-']:min-w-32 origin-(--transform-origin) rounded-lg border bg-popover not-dark:bg-clip-padding shadow-lg/5 outline-none transition-[transform,scale,opacity] duration-150 ease-out before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] focus:outline-none data-ending-style:scale-95 data-ending-style:opacity-0 data-starting-style:scale-95 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"menu-popup\"\n {...props}\n >\n <div className=\"max-h-(--available-height) w-full overflow-y-auto p-1\">\n {children}\n </div>\n </MenuPrimitive.Popup>\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\n\nfunction MenuGroup(props: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"menu-group\" {...props} />;\n}\n\nfunction MenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenuPrimitive.Item\n className={cn(\n \"[&>svg]:-mx-0.5 flex min-h-8 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-base text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-inset:ps-8 data-[variant=destructive]:text-destructive-foreground data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&>svg:not([class*='opacity-'])]:opacity-80 [&>svg:not([class*='size-'])]:size-4.5 sm:[&>svg:not([class*='size-'])]:size-4 [&>svg]:pointer-events-none [&>svg]:shrink-0\",\n className,\n )}\n data-inset={inset}\n data-slot=\"menu-item\"\n data-variant={variant}\n {...props}\n />\n );\n}\n\nfunction MenuCheckboxItem({\n className,\n children,\n checked,\n variant = \"default\",\n ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n variant?: \"default\" | \"switch\";\n}) {\n return (\n <MenuPrimitive.CheckboxItem\n checked={checked}\n className={cn(\n \"grid min-h-8 in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] cursor-default items-center gap-2 rounded-sm py-1 ps-2 text-base text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n variant === \"switch\"\n ? \"grid-cols-[1fr_auto] gap-4 pe-1.5\"\n : \"grid-cols-[1rem_1fr] pe-4\",\n className,\n )}\n data-slot=\"menu-checkbox-item\"\n {...props}\n >\n {variant === \"switch\" ? (\n <>\n <span className=\"col-start-1\">{children}</span>\n <MenuPrimitive.CheckboxItemIndicator\n className=\"inset-shadow-[0_1px_--theme(--color-black/6%)] inline-flex h-[calc(var(--thumb-size)+2px)] w-[calc(var(--thumb-size)*2-2px)] shrink-0 items-center rounded-full p-px outline-none transition-[background-color,box-shadow] duration-200 [--thumb-size:--spacing(4)] focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-checked:bg-primary data-unchecked:bg-input data-disabled:opacity-64 sm:[--thumb-size:--spacing(3)]\"\n keepMounted\n >\n <span className=\"pointer-events-none block aspect-square h-full in-[[data-slot=menu-checkbox-item][data-checked]]:origin-[var(--thumb-size)_50%] origin-left in-[[data-slot=menu-checkbox-item][data-checked]]:translate-x-[calc(var(--thumb-size)-4px)] in-[[data-slot=menu-checkbox-item]:active]:not-data-disabled:scale-x-110 in-[[data-slot=menu-checkbox-item]:active]:rounded-[var(--thumb-size)/calc(var(--thumb-size)*1.10)] rounded-(--thumb-size) bg-background shadow-sm/5 will-change-transform [transition:translate_.15s,border-radius_.15s,scale_.1s_.1s,transform-origin_.15s]\" />\n </MenuPrimitive.CheckboxItemIndicator>\n </>\n ) : (\n <>\n <MenuPrimitive.CheckboxItemIndicator className=\"col-start-1\">\n <svg\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <title>Check</title>\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n </MenuPrimitive.CheckboxItemIndicator>\n <span className=\"col-start-2\">{children}</span>\n </>\n )}\n </MenuPrimitive.CheckboxItem>\n );\n}\n\nfunction MenuRadioGroup(props: MenuPrimitive.RadioGroup.Props) {\n return <MenuPrimitive.RadioGroup data-slot=\"menu-radio-group\" {...props} />;\n}\n\nfunction MenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n <MenuPrimitive.RadioItem\n className={cn(\n \"grid min-h-8 in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] cursor-default grid-cols-[1rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-base text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"menu-radio-item\"\n {...props}\n >\n <MenuPrimitive.RadioItemIndicator className=\"col-start-1\">\n <svg\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <title>Check</title>\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n </MenuPrimitive.RadioItemIndicator>\n <span className=\"col-start-2\">{children}</span>\n </MenuPrimitive.RadioItem>\n );\n}\n\nfunction MenuGroupLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.GroupLabel\n className={cn(\n \"px-2 py-1.5 font-medium text-muted-foreground text-xs data-inset:ps-9 sm:data-inset:ps-8\",\n className,\n )}\n data-inset={inset}\n data-slot=\"menu-label\"\n {...props}\n />\n );\n}\n\nfunction MenuSeparator({ className, ...props }: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n className={cn(\"mx-2 my-1 h-px bg-border\", className)}\n data-slot=\"menu-separator\"\n {...props}\n />\n );\n}\n\nfunction MenuShortcut({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n className={cn(\n \"ms-auto font-medium font-sans text-muted-foreground/72 text-xs tracking-widest\",\n className,\n )}\n data-slot=\"menu-shortcut\"\n {...props}\n />\n );\n}\n\nfunction MenuSub(props: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"menu-sub\" {...props} />;\n}\n\nfunction MenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n className={cn(\n \"flex min-h-8 items-center gap-2 rounded-sm px-2 py-1 text-base text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-popup-open:bg-accent data-inset:ps-8 data-highlighted:text-accent-foreground data-popup-open:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className,\n )}\n data-inset={inset}\n data-slot=\"menu-sub-trigger\"\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"-me-0.5 ms-auto opacity-80\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction MenuSubPopup({\n className,\n sideOffset = 0,\n alignOffset,\n align = \"start\",\n ...props\n}: MenuPrimitive.Popup.Props & {\n align?: MenuPrimitive.Positioner.Props[\"align\"];\n sideOffset?: MenuPrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: MenuPrimitive.Positioner.Props[\"alignOffset\"];\n}) {\n const defaultAlignOffset = align !== \"center\" ? -5 : undefined;\n\n return (\n <MenuPopup\n align={align}\n alignOffset={alignOffset ?? defaultAlignOffset}\n className={className}\n data-slot=\"menu-sub-content\"\n side=\"inline-end\"\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\n\nexport {\n MenuCreateHandle,\n MenuCreateHandle as DropdownMenuCreateHandle,\n Menu,\n Menu as DropdownMenu,\n MenuPortal,\n MenuPortal as DropdownMenuPortal,\n MenuTrigger,\n MenuTrigger as DropdownMenuTrigger,\n MenuPopup,\n MenuPopup as DropdownMenuContent,\n MenuGroup,\n MenuGroup as DropdownMenuGroup,\n MenuItem,\n MenuItem as DropdownMenuItem,\n MenuCheckboxItem,\n MenuCheckboxItem as DropdownMenuCheckboxItem,\n MenuRadioGroup,\n MenuRadioGroup as DropdownMenuRadioGroup,\n MenuRadioItem,\n MenuRadioItem as DropdownMenuRadioItem,\n MenuGroupLabel,\n MenuGroupLabel as DropdownMenuLabel,\n MenuSeparator,\n MenuSeparator as DropdownMenuSeparator,\n MenuShortcut,\n MenuShortcut as DropdownMenuShortcut,\n MenuSub,\n MenuSub as DropdownMenuSub,\n MenuSubTrigger,\n MenuSubTrigger as DropdownMenuSubTrigger,\n MenuSubPopup,\n MenuSubPopup as DropdownMenuSubContent,\n};\n","\"use client\";\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\nimport {\n Menubar as MenubarPrimitive,\n type MenubarProps,\n} from \"@base-ui/react/menubar\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport {\n Menu,\n MenuCheckboxItem,\n MenuGroup,\n MenuGroupLabel,\n MenuItem,\n MenuPopup,\n MenuPortal,\n MenuRadioGroup,\n MenuRadioItem,\n MenuSeparator,\n MenuShortcut,\n MenuSub,\n MenuSubPopup,\n MenuSubTrigger,\n} from \"./menu\";\n\nfunction Menubar({ className, ...props }: MenubarProps) {\n return (\n <MenubarPrimitive\n className={cn(\n \"flex h-9 w-fit items-center gap-1 rounded-lg border bg-background p-1 shadow-xs/5 sm:h-8 dark:bg-input/32\",\n className,\n )}\n data-slot=\"menubar\"\n {...props}\n />\n );\n}\n\nfunction MenubarMenu(props: MenuPrimitive.Root.Props) {\n return <Menu data-slot=\"menubar-menu\" {...props} />;\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: MenuPrimitive.Trigger.Props) {\n return (\n <MenuPrimitive.Trigger\n className={cn(\n \"flex select-none items-center rounded-md px-2 py-1 font-medium text-base outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-popup-open:bg-accent data-popup-open:text-accent-foreground sm:text-sm\",\n className,\n )}\n data-slot=\"menubar-trigger\"\n {...props}\n />\n );\n}\n\nfunction MenubarContent({\n align = \"start\",\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenuPopup>) {\n return (\n <MenuPopup\n align={align}\n data-slot=\"menubar-content\"\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenuPortal as MenubarPortal,\n MenuGroup as MenubarGroup,\n MenuItem as MenubarItem,\n MenuCheckboxItem as MenubarCheckboxItem,\n MenuRadioGroup as MenubarRadioGroup,\n MenuRadioItem as MenubarRadioItem,\n MenuGroupLabel as MenubarLabel,\n MenuSeparator as MenubarSeparator,\n MenuShortcut as MenubarShortcut,\n MenuSub as MenubarSub,\n MenuSubTrigger as MenubarSubTrigger,\n MenuSubPopup as MenubarSubContent,\n};\n","\"use client\";\n\nimport { Meter as MeterPrimitive } from \"@base-ui/react/meter\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Meter({ className, children, ...props }: MeterPrimitive.Root.Props) {\n return (\n <MeterPrimitive.Root\n className={cn(\"flex w-full flex-col gap-2\", className)}\n {...props}\n >\n {children ? (\n children\n ) : (\n <MeterTrack>\n <MeterIndicator />\n </MeterTrack>\n )}\n </MeterPrimitive.Root>\n );\n}\n\nfunction MeterLabel({ className, ...props }: MeterPrimitive.Label.Props) {\n return (\n <MeterPrimitive.Label\n className={cn(\"font-medium text-foreground text-sm\", className)}\n data-slot=\"meter-label\"\n {...props}\n />\n );\n}\n\nfunction MeterTrack({ className, ...props }: MeterPrimitive.Track.Props) {\n return (\n <MeterPrimitive.Track\n className={cn(\"block h-2 w-full overflow-hidden bg-input\", className)}\n data-slot=\"meter-track\"\n {...props}\n />\n );\n}\n\nfunction MeterIndicator({\n className,\n ...props\n}: MeterPrimitive.Indicator.Props) {\n return (\n <MeterPrimitive.Indicator\n className={cn(\"bg-primary transition-all duration-500\", className)}\n data-slot=\"meter-indicator\"\n {...props}\n />\n );\n}\n\nfunction MeterValue({ className, ...props }: MeterPrimitive.Value.Props) {\n return (\n <MeterPrimitive.Value\n className={cn(\"text-foreground text-sm tabular-nums\", className)}\n data-slot=\"meter-value\"\n {...props}\n />\n );\n}\n\nexport { Meter, MeterLabel, MeterTrack, MeterIndicator, MeterValue };\n","\"use client\";\n\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\nimport { ChevronsUpDownIcon, SearchIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { Button } from \"./button\";\n\ninterface MultiSelectItem {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\ninterface MultiSelectProps {\n items: MultiSelectItem[];\n /** Controlled selected values. */\n value?: string[];\n /** Uncontrolled initial selected values. */\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n size?: \"sm\" | \"default\" | \"lg\";\n placeholder?: React.ReactNode;\n /** Extra context rendered next to the selected count, e.g. \"of 12 users\". */\n supportingText?: React.ReactNode;\n /** Formats the trigger text from the selected count. Defaults to `${count} selected`. */\n selectedCountFormatter?: (count: number) => React.ReactNode;\n showSearch?: boolean;\n searchPlaceholder?: string;\n showFooter?: boolean;\n selectAllLabel?: React.ReactNode;\n resetLabel?: React.ReactNode;\n emptyStateTitle?: React.ReactNode;\n emptyStateDescription?: React.ReactNode;\n disabled?: boolean;\n name?: string;\n required?: boolean;\n id?: string;\n /** Trigger class name. */\n className?: string;\n popupClassName?: string;\n sideOffset?: SelectPrimitive.Positioner.Props[\"sideOffset\"];\n}\n\nfunction MultiSelect({\n items,\n value: valueProp,\n defaultValue,\n onValueChange,\n size = \"default\",\n placeholder = \"Select options\",\n supportingText,\n selectedCountFormatter = (count) => `${count} selected`,\n showSearch = true,\n searchPlaceholder = \"Search\",\n showFooter = true,\n selectAllLabel = \"Select all\",\n resetLabel = \"Reset\",\n emptyStateTitle = \"No results found\",\n emptyStateDescription,\n disabled,\n name,\n required,\n id,\n className,\n popupClassName,\n sideOffset = 4,\n}: MultiSelectProps) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string[]>(\n defaultValue ?? [],\n );\n const [search, setSearch] = React.useState(\"\");\n\n const isControlled = valueProp !== undefined;\n const value = isControlled ? valueProp : uncontrolledValue;\n\n const setValue = (next: string[]) => {\n if (!isControlled) {\n setUncontrolledValue(next);\n }\n onValueChange?.(next);\n };\n\n const query = search.trim().toLowerCase();\n const filteredItems = query\n ? items.filter((item) => item.label.toLowerCase().includes(query))\n : items;\n\n const count = value.length;\n\n return (\n <SelectPrimitive.Root\n disabled={disabled}\n multiple\n name={name}\n onOpenChange={(open) => {\n if (!open) {\n setSearch(\"\");\n }\n }}\n onValueChange={(next) => setValue(next as string[])}\n required={required}\n value={value}\n >\n <SelectPrimitive.Trigger\n className={cn(\n \"relative inline-flex min-h-9 w-full min-w-36 select-none items-center justify-center gap-2 rounded-lg border border-input bg-background not-dark:bg-clip-padding px-[calc(--spacing(3)-1px)] text-left text-base text-foreground shadow-xs/5 outline-none ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-data-disabled:not-focus-visible:not-aria-invalid:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 focus-visible:border-ring focus-visible:ring-[3px] aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/16 data-disabled:pointer-events-none data-disabled:opacity-64 sm:min-h-8 sm:text-sm dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-focus-visible:not-aria-invalid:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0 [[data-disabled],:focus-visible,[aria-invalid],[data-pressed]]:shadow-none\",\n size === \"sm\" &&\n \"min-h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:min-h-7\",\n size === \"lg\" && \"min-h-10 sm:min-h-9\",\n className,\n )}\n data-slot=\"multi-select-trigger\"\n id={id}\n >\n <span className=\"flex flex-1 items-baseline gap-1.5 truncate\">\n {count > 0 ? (\n <>\n <span className=\"truncate\">{selectedCountFormatter(count)}</span>\n {supportingText ? (\n <span className=\"truncate font-normal text-muted-foreground\">\n {supportingText}\n </span>\n ) : null}\n </>\n ) : (\n <span className=\"truncate text-muted-foreground\">\n {placeholder}\n </span>\n )}\n </span>\n <SelectPrimitive.Icon data-slot=\"multi-select-icon\">\n <ChevronsUpDownIcon className=\"-me-1 size-4.5 opacity-80 sm:size-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n alignItemWithTrigger={false}\n className=\"z-50 select-none\"\n data-slot=\"multi-select-positioner\"\n sideOffset={sideOffset}\n >\n <SelectPrimitive.Popup\n className={cn(\n \"relative flex max-h-[min(var(--available-height),20rem)] w-(--anchor-width) min-w-48 max-w-(--available-width) origin-(--transform-origin) flex-col overflow-hidden rounded-lg border bg-popover not-dark:bg-clip-padding text-foreground shadow-lg/5 transition-[transform,scale,opacity] duration-150 ease-out before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-95 data-ending-style:opacity-0 data-starting-style:scale-95 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n popupClassName,\n )}\n data-slot=\"multi-select-popup\"\n >\n {showSearch ? (\n <MultiSelectSearch\n onChange={setSearch}\n placeholder={searchPlaceholder}\n value={search}\n />\n ) : null}\n <SelectPrimitive.List\n className=\"min-h-0 flex-1 overflow-y-auto p-1\"\n data-slot=\"multi-select-list\"\n >\n {filteredItems.map((item) => (\n <MultiSelectOption\n disabled={item.disabled}\n key={item.value}\n label={item.label}\n value={item.value}\n />\n ))}\n {filteredItems.length === 0 ? (\n <div\n className=\"flex flex-col items-center justify-center gap-0.5 px-4 py-6 text-center\"\n data-slot=\"multi-select-empty\"\n >\n <p className=\"font-medium text-foreground text-sm\">\n {emptyStateTitle}\n </p>\n {emptyStateDescription ? (\n <p className=\"text-muted-foreground text-sm\">\n {emptyStateDescription}\n </p>\n ) : null}\n </div>\n ) : null}\n </SelectPrimitive.List>\n {showFooter ? (\n <div\n className=\"flex items-center justify-between gap-1 border-t p-1\"\n data-slot=\"multi-select-footer\"\n >\n <Button\n onClick={() =>\n setValue(\n items\n .filter((item) => !item.disabled)\n .map((item) => item.value),\n )\n }\n size=\"xs\"\n variant=\"ghost\"\n >\n {selectAllLabel}\n </Button>\n <Button\n className=\"text-muted-foreground\"\n onClick={() => setValue([])}\n size=\"xs\"\n variant=\"ghost\"\n >\n {resetLabel}\n </Button>\n </div>\n ) : null}\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n );\n}\n\nfunction MultiSelectSearch({\n value,\n onChange,\n placeholder,\n}: {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n}) {\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Focus after Base UI's own initial focus management has run.\n React.useEffect(() => {\n const frame = requestAnimationFrame(() => inputRef.current?.focus());\n return () => cancelAnimationFrame(frame);\n }, []);\n\n return (\n <div\n className=\"flex shrink-0 items-center gap-2 border-b px-2.5\"\n data-slot=\"multi-select-search\"\n >\n <SearchIcon className=\"size-4.5 shrink-0 opacity-64 sm:size-4\" />\n <input\n className=\"h-9 min-w-0 flex-1 bg-transparent text-base text-foreground outline-none placeholder:text-muted-foreground sm:h-8 sm:text-sm\"\n onChange={(event) => onChange(event.target.value)}\n onKeyDown={(event) => {\n // Let list navigation keys bubble to Base UI; keep everything else\n // (printable characters, Space, Backspace…) from triggering the\n // select's typeahead while typing in the search box.\n if (\n event.key !== \"ArrowDown\" &&\n event.key !== \"ArrowUp\" &&\n event.key !== \"Enter\" &&\n event.key !== \"Escape\"\n ) {\n event.stopPropagation();\n }\n }}\n placeholder={placeholder}\n ref={inputRef}\n value={value}\n />\n </div>\n );\n}\n\nfunction MultiSelectOption({\n label,\n value,\n disabled,\n}: {\n label: string;\n value: string;\n disabled?: boolean;\n}) {\n return (\n <SelectPrimitive.Item\n className=\"grid min-h-8 cursor-default grid-cols-[1rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n data-slot=\"multi-select-item\"\n disabled={disabled}\n value={value}\n >\n <SelectPrimitive.ItemIndicator className=\"col-start-1\">\n {/** biome-ignore lint/a11y/noSvgWithoutTitle: Imported from library */}\n <svg\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/1500/svg\"\n >\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n </SelectPrimitive.ItemIndicator>\n <SelectPrimitive.ItemText className=\"col-start-2 min-w-0 truncate\">\n {label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nexport { MultiSelect };\nexport type { MultiSelectItem, MultiSelectProps };\n","\"use client\";\n\nimport { NavigationMenu as NavigationMenuPrimitive } from \"@base-ui/react/navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction NavigationMenu({\n className,\n children,\n ...props\n}: NavigationMenuPrimitive.Root.Props) {\n return (\n <NavigationMenuPrimitive.Root\n className={cn(\n \"relative flex max-w-max flex-1 items-center justify-center\",\n className,\n )}\n data-slot=\"navigation-menu\"\n {...props}\n >\n {children}\n <NavigationMenuPrimitive.Portal>\n <NavigationMenuPrimitive.Positioner\n className=\"z-50 box-border h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] before:absolute before:content-['']\"\n collisionAvoidance={{ side: \"none\" }}\n collisionPadding={{ top: 5, bottom: 5, left: 20, right: 20 }}\n data-slot=\"navigation-menu-positioner\"\n sideOffset={8}\n >\n <NavigationMenuPrimitive.Popup\n className=\"relative h-(--popup-height) w-full min-w-32 origin-(--transform-origin) rounded-lg border bg-popover not-dark:bg-clip-padding text-popover-foreground shadow-lg/5 outline-none transition-[opacity,transform,width,height,scale,translate] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-95 data-ending-style:opacity-0 data-starting-style:scale-95 data-starting-style:opacity-0 sm:w-(--popup-width) dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\"\n data-slot=\"navigation-menu-popup\"\n >\n <NavigationMenuPrimitive.Viewport\n className=\"relative h-full w-full overflow-hidden\"\n data-slot=\"navigation-menu-viewport\"\n />\n </NavigationMenuPrimitive.Popup>\n </NavigationMenuPrimitive.Positioner>\n </NavigationMenuPrimitive.Portal>\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className,\n )}\n data-slot=\"navigation-menu-list\"\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n className={cn(\"relative\", className)}\n data-slot=\"navigation-menu-item\"\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max cursor-pointer select-none items-center justify-center gap-1 rounded-lg bg-transparent px-3 py-2 font-medium text-base outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-popup-open:bg-accent/50 data-popup-open:text-accent-foreground disabled:pointer-events-none disabled:opacity-64 sm:h-8 sm:text-sm\",\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: NavigationMenuPrimitive.Trigger.Props) {\n return (\n <NavigationMenuPrimitive.Trigger\n className={cn(navigationMenuTriggerStyle(), className)}\n data-slot=\"navigation-menu-trigger\"\n {...props}\n >\n {children}\n <NavigationMenuPrimitive.Icon\n className=\"relative top-px transition-transform duration-300 ease-in-out group-data-popup-open:rotate-180\"\n data-slot=\"navigation-menu-icon\"\n >\n <ChevronDownIcon className=\"size-3.5 opacity-80\" />\n </NavigationMenuPrimitive.Icon>\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: NavigationMenuPrimitive.Content.Props) {\n return (\n <NavigationMenuPrimitive.Content\n className={cn(\n \"h-full w-max p-2 transition-[opacity,translate,transform] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-ending-style:opacity-0 data-starting-style:opacity-0 data-[activation-direction=left]:data-ending-style:translate-x-[50%] data-[activation-direction=left]:data-starting-style:translate-x-[-50%] data-[activation-direction=right]:data-ending-style:translate-x-[-50%] data-[activation-direction=right]:data-starting-style:translate-x-[50%]\",\n className,\n )}\n data-slot=\"navigation-menu-content\"\n {...props}\n />\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: NavigationMenuPrimitive.Link.Props) {\n return (\n <NavigationMenuPrimitive.Link\n className={cn(\n \"flex cursor-pointer flex-col gap-1 rounded-md p-2 text-base no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background sm:text-sm [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n data-slot=\"navigation-menu-link\"\n {...props}\n />\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuTrigger,\n NavigationMenuContent,\n NavigationMenuLink,\n navigationMenuTriggerStyle,\n};\n","\"use client\";\n\nimport { PreviewCard as PreviewCardPrimitive } from \"@base-ui/react/preview-card\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst PreviewCard = PreviewCardPrimitive.Root;\n\nfunction PreviewCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\n return (\n <PreviewCardPrimitive.Trigger data-slot=\"preview-card-trigger\" {...props} />\n );\n}\n\nfunction PreviewCardPopup({\n className,\n children,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: PreviewCardPrimitive.Popup.Props & {\n align?: PreviewCardPrimitive.Positioner.Props[\"align\"];\n sideOffset?: PreviewCardPrimitive.Positioner.Props[\"sideOffset\"];\n}) {\n return (\n <PreviewCardPrimitive.Portal>\n <PreviewCardPrimitive.Positioner\n align={align}\n className=\"z-50\"\n data-slot=\"preview-card-positioner\"\n sideOffset={sideOffset}\n >\n <PreviewCardPrimitive.Popup\n className={cn(\n \"relative flex w-64 origin-(--transform-origin) text-balance rounded-lg border bg-popover not-dark:bg-clip-padding p-4 text-popover-foreground text-sm shadow-lg/5 transition-[scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"preview-card-content\"\n {...props}\n >\n {children}\n </PreviewCardPrimitive.Popup>\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n );\n}\n\nexport {\n PreviewCard,\n PreviewCard as HoverCard,\n PreviewCardTrigger,\n PreviewCardTrigger as HoverCardTrigger,\n PreviewCardPopup,\n PreviewCardPopup as HoverCardContent,\n};\n","\"use client\";\n\nimport { Progress as ProgressPrimitive } from \"@base-ui/react/progress\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Progress({\n className,\n children,\n ...props\n}: ProgressPrimitive.Root.Props) {\n return (\n <ProgressPrimitive.Root\n className={cn(\"flex w-full flex-col gap-2\", className)}\n data-slot=\"progress\"\n {...props}\n >\n {children ? (\n children\n ) : (\n <ProgressTrack>\n <ProgressIndicator />\n </ProgressTrack>\n )}\n </ProgressPrimitive.Root>\n );\n}\n\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\n return (\n <ProgressPrimitive.Label\n className={cn(\"font-medium text-sm\", className)}\n data-slot=\"progress-label\"\n {...props}\n />\n );\n}\n\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\n return (\n <ProgressPrimitive.Track\n className={cn(\n \"block h-1.5 w-full overflow-hidden rounded-full bg-input\",\n className,\n )}\n data-slot=\"progress-track\"\n {...props}\n />\n );\n}\n\nfunction ProgressIndicator({\n className,\n ...props\n}: ProgressPrimitive.Indicator.Props) {\n return (\n <ProgressPrimitive.Indicator\n className={cn(\"bg-primary transition-all duration-500\", className)}\n data-slot=\"progress-indicator\"\n {...props}\n />\n );\n}\n\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\n return (\n <ProgressPrimitive.Value\n className={cn(\"text-sm tabular-nums\", className)}\n data-slot=\"progress-value\"\n {...props}\n />\n );\n}\n\n/**\n * A tooltip-like value bubble that floats above or below the track,\n * following the progress percentage. Render it next to a ProgressTrack\n * inside a `relative` wrapper.\n */\nfunction ProgressFloatingValue({\n className,\n side = \"top\",\n value,\n max = 100,\n children,\n style,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"top\" | \"bottom\";\n value: number;\n max?: number;\n}) {\n const percent = Math.min(100, Math.max(0, (value / max) * 100));\n return (\n <div\n className={cn(\n \"absolute -translate-x-1/2 transition-[left] duration-500\",\n side === \"top\" ? \"bottom-full mb-2\" : \"top-full mt-2\",\n className,\n )}\n data-side={side}\n data-slot=\"progress-floating-value\"\n style={{\n left: `clamp(1.25rem, ${percent}%, calc(100% - 1.25rem))`,\n ...style,\n }}\n {...props}\n >\n <div className=\"rounded-md border bg-popover px-2 py-1 font-semibold text-popover-foreground text-xs tabular-nums shadow-md/5\">\n {children ?? `${Math.round(percent)}%`}\n </div>\n </div>\n );\n}\n\nconst progressCircleSizes = {\n sm: { label: \"text-[0.625rem]\", px: 64, stroke: 6, value: \"text-sm\" },\n md: { label: \"text-xs\", px: 120, stroke: 10, value: \"text-2xl\" },\n lg: { label: \"text-sm\", px: 160, stroke: 12, value: \"text-3xl\" },\n} as const;\n\ntype ProgressCircleSize = keyof typeof progressCircleSizes;\n\ninterface ProgressCircleProps extends ProgressPrimitive.Root.Props {\n size?: ProgressCircleSize;\n /** A short caption rendered above the value, inside the circle. */\n label?: React.ReactNode;\n /** Hide the centered percentage. */\n showValue?: boolean;\n}\n\n/** A circular progress ring with an optional centered value and label. */\nfunction ProgressCircle({\n className,\n size = \"md\",\n label,\n showValue = true,\n value,\n max = 100,\n ...props\n}: ProgressCircleProps) {\n const { px, stroke, value: valueClass, label: labelClass } =\n progressCircleSizes[size];\n const radius = (px - stroke) / 2;\n const percent = Math.min(100, Math.max(0, ((value ?? 0) / max) * 100));\n\n return (\n <ProgressPrimitive.Root\n className={cn(\n \"relative inline-flex items-center justify-center\",\n className,\n )}\n data-slot=\"progress-circle\"\n max={max}\n value={value}\n {...props}\n >\n <svg\n className=\"-rotate-90\"\n fill=\"none\"\n height={px}\n viewBox={`0 0 ${px} ${px}`}\n width={px}\n >\n <circle\n className=\"text-input\"\n cx={px / 2}\n cy={px / 2}\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={stroke}\n />\n <circle\n className=\"text-primary transition-[stroke-dashoffset] duration-500\"\n cx={px / 2}\n cy={px / 2}\n pathLength={100}\n r={radius}\n stroke=\"currentColor\"\n strokeDasharray={100}\n strokeDashoffset={100 - percent}\n strokeLinecap=\"round\"\n strokeWidth={stroke}\n />\n </svg>\n {showValue || label ? (\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\n {label ? (\n <span className={cn(\"text-muted-foreground\", labelClass)}>\n {label}\n </span>\n ) : null}\n {showValue ? (\n <ProgressPrimitive.Value\n className={cn(\n \"font-semibold text-foreground tabular-nums\",\n valueClass,\n )}\n data-slot=\"progress-circle-value\"\n />\n ) : null}\n </div>\n ) : null}\n </ProgressPrimitive.Root>\n );\n}\n\n/** A half-circle (gauge) progress arc with an optional value and label. */\nfunction ProgressHalfCircle({\n className,\n size = \"md\",\n label,\n showValue = true,\n value,\n max = 100,\n ...props\n}: ProgressCircleProps) {\n const { px, stroke, value: valueClass, label: labelClass } =\n progressCircleSizes[size];\n const radius = (px - stroke) / 2;\n const height = px / 2 + stroke / 2;\n const arc = `M ${stroke / 2} ${px / 2} A ${radius} ${radius} 0 0 1 ${px - stroke / 2} ${px / 2}`;\n const percent = Math.min(100, Math.max(0, ((value ?? 0) / max) * 100));\n\n return (\n <ProgressPrimitive.Root\n className={cn(\"relative inline-flex justify-center\", className)}\n data-slot=\"progress-half-circle\"\n max={max}\n value={value}\n {...props}\n >\n <svg\n fill=\"none\"\n height={height}\n viewBox={`0 0 ${px} ${height}`}\n width={px}\n >\n <path\n className=\"text-input\"\n d={arc}\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={stroke}\n />\n <path\n className=\"text-primary transition-[stroke-dashoffset] duration-500\"\n d={arc}\n pathLength={100}\n stroke=\"currentColor\"\n strokeDasharray={100}\n strokeDashoffset={100 - percent}\n strokeLinecap=\"round\"\n strokeWidth={stroke}\n />\n </svg>\n {showValue || label ? (\n <div className=\"absolute inset-x-0 bottom-0 flex flex-col items-center\">\n {label ? (\n <span className={cn(\"text-muted-foreground\", labelClass)}>\n {label}\n </span>\n ) : null}\n {showValue ? (\n <ProgressPrimitive.Value\n className={cn(\n \"font-semibold text-foreground tabular-nums\",\n valueClass,\n )}\n data-slot=\"progress-half-circle-value\"\n />\n ) : null}\n </div>\n ) : null}\n </ProgressPrimitive.Root>\n );\n}\n\nexport {\n Progress,\n ProgressLabel,\n ProgressTrack,\n ProgressIndicator,\n ProgressValue,\n ProgressFloatingValue,\n ProgressCircle,\n ProgressHalfCircle,\n};\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type { Options as QRCodeStylingOptions } from \"qr-code-styling\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst qrCodeVariants = cva(\n \"relative inline-flex shrink-0 items-center justify-center text-foreground [&_canvas]:size-full [&_svg]:size-full\",\n {\n defaultVariants: { size: \"md\" },\n variants: {\n size: {\n sm: \"size-24\",\n md: \"size-40\",\n lg: \"size-60\",\n },\n },\n },\n);\n\ninterface QRCodeProps\n extends Omit<React.ComponentProps<\"div\">, \"children\">,\n VariantProps<typeof qrCodeVariants> {\n /** The text or URL encoded in the QR code. */\n value: string;\n /**\n * Extra qr-code-styling options merged over the themed defaults — e.g. a\n * center image, custom dot colors or shapes. See the qr-code-styling docs.\n */\n options?: Partial<QRCodeStylingOptions>;\n}\n\n/**\n * A themeable QR code rendered with qr-code-styling. Dots follow the\n * foreground color (and re-tint when the theme flips) unless overridden\n * via `options`.\n */\nfunction QRCode({ className, size, value, options, ...props }: QRCodeProps) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n let disposed = false;\n let observer: MutationObserver | undefined;\n\n const {\n dotsOptions,\n cornersSquareOptions,\n cornersDotOptions,\n imageOptions,\n ...rest\n } = options ?? {};\n\n // The container's computed color is the resolved foreground token, so the\n // code stays on-theme without hard-coding hex values.\n const themedShapes = () => {\n const color = getComputedStyle(container).color;\n return {\n cornersDotOptions: { color, ...cornersDotOptions },\n cornersSquareOptions: {\n color,\n type: \"extra-rounded\" as const,\n ...cornersSquareOptions,\n },\n dotsOptions: { color, type: \"rounded\" as const, ...dotsOptions },\n };\n };\n\n // qr-code-styling touches the DOM at import time, so load it lazily to\n // keep the component SSR-safe.\n import(\"qr-code-styling\").then(({ default: QRCodeStyling }) => {\n if (disposed) return;\n const edge = container.clientWidth || 160;\n const qr = new QRCodeStyling({\n backgroundOptions: { color: \"transparent\" },\n data: value,\n height: edge,\n imageOptions: {\n crossOrigin: \"anonymous\",\n imageSize: 0.4,\n margin: 4,\n ...imageOptions,\n },\n margin: 0,\n qrOptions: { errorCorrectionLevel: \"Q\" },\n type: \"svg\",\n width: edge,\n ...themedShapes(),\n ...rest,\n });\n container.replaceChildren();\n qr.append(container);\n\n observer = new MutationObserver(() => qr.update(themedShapes()));\n observer.observe(document.documentElement, {\n attributeFilter: [\"data-theme\", \"class\"],\n attributes: true,\n });\n });\n\n return () => {\n disposed = true;\n observer?.disconnect();\n container.replaceChildren();\n };\n }, [value, size, options]);\n\n return (\n <div\n aria-label={`QR code for ${value}`}\n className={cn(qrCodeVariants({ size }), className)}\n data-slot=\"qr-code\"\n ref={containerRef}\n role=\"img\"\n {...props}\n />\n );\n}\n\n/**\n * An animated scan-line overlay for a QR code. Render it inside a `relative`\n * wrapper around the `<QRCode />`.\n */\nfunction QRCodeGradientScan({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\n \"pointer-events-none absolute inset-0 overflow-hidden rounded-lg\",\n className,\n )}\n data-slot=\"qr-code-gradient-scan\"\n {...props}\n >\n <div className=\"absolute inset-x-0 top-0 h-1/2 animate-qr-scan will-change-transform\">\n <div className=\"absolute inset-0 bg-gradient-to-b from-transparent via-brand/20 to-transparent\" />\n <div className=\"absolute inset-x-0 top-1/2 h-px bg-brand/80 shadow-[0_0_10px_1px_var(--brand)]\" />\n </div>\n </div>\n );\n}\n\nexport { QRCode, QRCodeGradientScan, qrCodeVariants };\n","\"use client\";\n\nimport { Radio as RadioPrimitive } from \"@base-ui/react/radio\";\nimport { RadioGroup as RadioGroupPrimitive } from \"@base-ui/react/radio-group\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\n return (\n <RadioGroupPrimitive\n className={cn(\"flex flex-col gap-3\", className)}\n data-slot=\"radio-group\"\n {...props}\n />\n );\n}\n\nconst radioSizes = {\n sm: {\n box: \"size-4.5 sm:size-4\",\n indicator: \"size-4.5 sm:size-4\",\n dot: \"before:size-2 sm:before:size-1.5\",\n check: \"size-3.5 sm:size-3\",\n },\n md: {\n box: \"size-5\",\n indicator: \"size-5\",\n dot: \"before:size-2\",\n check: \"size-4\",\n },\n} as const;\n\ninterface RadioProps extends RadioPrimitive.Root.Props {\n /** Visual size of the radio. Defaults to \"sm\". */\n size?: keyof typeof radioSizes;\n /** Indicator style: the classic dot or a checkbox-style tick. Defaults to \"dot\". */\n variant?: \"dot\" | \"check\";\n}\n\nfunction Radio({\n className,\n size = \"sm\",\n variant = \"dot\",\n ...props\n}: RadioProps) {\n const sizes = radioSizes[size];\n return (\n <RadioPrimitive.Root\n className={cn(\n \"relative inline-flex shrink-0 items-center justify-center border border-input bg-background not-dark:bg-clip-padding shadow-xs/5 outline-none transition-shadow before:pointer-events-none before:absolute before:inset-0 not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/6%)] focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/48 data-disabled:opacity-64 dark:not-data-checked:bg-input/32 dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)] [[data-disabled],[data-checked],[aria-invalid]]:shadow-none\",\n variant === \"check\"\n ? \"rounded-[4px] before:rounded-[3px]\"\n : \"rounded-full before:rounded-full\",\n sizes.box,\n className,\n )}\n data-slot=\"radio\"\n {...props}\n >\n {variant === \"check\" ? (\n <RadioPrimitive.Indicator\n className=\"-inset-px absolute flex items-center justify-center rounded-[4px] text-primary-foreground transition-opacity duration-150 ease-out data-checked:bg-primary data-checked:opacity-100 data-unchecked:opacity-0\"\n data-slot=\"radio-indicator\"\n keepMounted\n >\n {/* biome-ignore lint/a11y/noSvgWithoutTitle: decorative indicator */}\n <svg\n className={sizes.check}\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Same draw-in motion as the Checkbox: the tick strokes itself in\n a beat after the fill fades in. */}\n <path\n className=\"[stroke-dasharray:1] [stroke-dashoffset:1] [transition:stroke-dashoffset_250ms_cubic-bezier(0.65,0,0.35,1)_110ms] in-[[data-checked]]:[stroke-dashoffset:0]\"\n d=\"M5.252 12.7 10.2 18.63 18.748 5.37\"\n pathLength={1}\n />\n </svg>\n </RadioPrimitive.Indicator>\n ) : (\n <RadioPrimitive.Indicator\n className={cn(\n \"-inset-px absolute flex origin-center items-center justify-center rounded-full transition-[background-color,box-shadow] duration-150 ease-out before:rounded-full before:bg-primary-foreground before:transition-[transform,opacity] before:duration-200 before:ease-[cubic-bezier(0.34,1.56,0.64,1)] data-checked:bg-primary data-checked:before:scale-100 data-checked:before:opacity-100 data-unchecked:before:scale-0 data-unchecked:before:opacity-0\",\n sizes.indicator,\n sizes.dot,\n )}\n data-slot=\"radio-indicator\"\n keepMounted\n />\n )}\n </RadioPrimitive.Root>\n );\n}\n\nexport { RadioGroup, Radio, Radio as RadioGroupItem };\n","\"use client\";\n\nimport { GripVerticalIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className,\n )}\n data-slot=\"resizable-panel-group\"\n {...props}\n />\n );\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\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:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className,\n )}\n data-slot=\"resizable-handle\"\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.PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"../../lib/utils/css\";\nimport type { AsChildProps } from \"../../types/helpers\";\n\nconst scrollerClassName =\n \"absolute top-1/2 z-10 -translate-y-1/2 data-closed:opacity-0\";\n\nconst LeftScroller = ({\n className,\n asChild,\n ...props\n}: AsChildProps<\"button\">) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n {...(asChild ? {} : { type: \"button\" })}\n className={cn(scrollerClassName, \"left-0\", className)}\n {...props}\n />\n );\n};\n\nconst RightScroller = ({\n className,\n asChild,\n ...props\n}: AsChildProps<\"button\">) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n {...(asChild ? {} : { type: \"button\" })}\n className={cn(scrollerClassName, \"right-0\", className)}\n {...props}\n />\n );\n};\n\nexport { LeftScroller, RightScroller };\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst sectionHeaderTitleVariants = cva(\n \"min-w-0 font-semibold text-foreground tracking-tight\",\n {\n defaultVariants: { size: \"default\" },\n variants: {\n size: {\n sm: \"text-sm\",\n default: \"text-base\",\n lg: \"text-lg\",\n },\n },\n },\n);\n\nconst sectionHeaderDescriptionVariants = cva(\n \"text-muted-foreground leading-relaxed\",\n {\n defaultVariants: { size: \"default\" },\n variants: {\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n lg: \"text-sm\",\n },\n },\n },\n);\n\ninterface SectionHeaderProps\n extends Omit<React.ComponentProps<\"div\">, \"title\">,\n VariantProps<typeof sectionHeaderTitleVariants> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n /** Right-aligned actions (buttons, counts, menus). */\n actions?: React.ReactNode;\n /** A leading node — e.g. a `<FeaturedIcon />` or a count badge. */\n icon?: React.ReactNode;\n /** Adds a bottom hairline + padding, so the header sits above a list/grid. */\n border?: boolean;\n}\n\n/**\n * A titled section heading: title + optional description on the left, optional\n * actions on the right, with an optional leading icon. One altitude below the\n * page-level `DashboardHeader` — use it to introduce a card body, a list, or a\n * settings group.\n */\nfunction SectionHeader({\n className,\n title,\n description,\n actions,\n icon,\n size,\n border,\n children,\n ...props\n}: SectionHeaderProps) {\n return (\n <div\n className={cn(\n \"flex items-start justify-between gap-3\",\n border && \"border-b pb-4\",\n className,\n )}\n data-slot=\"section-header\"\n {...props}\n >\n <div className=\"flex min-w-0 items-start gap-3\">\n {icon ? (\n <div className=\"shrink-0\" data-slot=\"section-header-icon\">\n {icon}\n </div>\n ) : null}\n <div className=\"min-w-0 space-y-0.5\">\n {title ? (\n <div\n className={cn(sectionHeaderTitleVariants({ size }))}\n data-slot=\"section-header-title\"\n >\n {title}\n </div>\n ) : null}\n {description ? (\n <p\n className={cn(sectionHeaderDescriptionVariants({ size }))}\n data-slot=\"section-header-description\"\n >\n {description}\n </p>\n ) : null}\n {children}\n </div>\n </div>\n {actions ? (\n <div\n className=\"flex shrink-0 items-center gap-2\"\n data-slot=\"section-header-actions\"\n >\n {actions}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport {\n SectionHeader,\n sectionHeaderTitleVariants,\n sectionHeaderDescriptionVariants,\n};\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst socialButtonVariants = cva(\n \"relative inline-flex h-10 shrink-0 cursor-pointer items-center justify-center gap-2.5 whitespace-nowrap rounded-lg border font-medium text-base outline-none transition-[box-shadow,filter] duration-100 sm:h-9 sm:text-sm [:active:not(:disabled)]:brightness-95 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 [&_svg]:pointer-events-none [&_svg]:size-5 [&_svg]:shrink-0 sm:[&_svg]:size-4.5\",\n {\n defaultVariants: {\n iconOnly: false,\n theme: \"brand\",\n },\n variants: {\n iconOnly: {\n false: \"px-[calc(--spacing(4)-1px)]\",\n true: \"w-10 px-0 sm:w-9\",\n },\n theme: {\n // Filled with the provider's brand color (set per provider below).\n brand:\n \"not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] shadow-xs [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none\",\n // Outline surface with the provider's full-color logo.\n color:\n \"border-input bg-popover not-dark:bg-clip-padding text-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-accent/50 dark:[:hover,[data-pressed]]:bg-input/64\",\n // Neutral tonal surface with a monochrome logo.\n gray: \"border-transparent bg-secondary text-secondary-foreground [:active,[data-pressed]]:bg-secondary/80 [:hover,[data-pressed]]:bg-secondary/90\",\n },\n provider: {\n apple: \"\",\n dribbble: \"\",\n facebook: \"\",\n figma: \"\",\n google: \"\",\n twitter: \"\",\n },\n },\n compoundVariants: [\n {\n provider: \"google\",\n theme: \"brand\",\n className:\n \"border-[#4285F4] bg-[#4285F4] text-white shadow-[#4285F4]/24 [:hover,[data-pressed]]:bg-[#4285F4]/90\",\n },\n {\n provider: \"facebook\",\n theme: \"brand\",\n className:\n \"border-[#1877F2] bg-[#1877F2] text-white shadow-[#1877F2]/24 [:hover,[data-pressed]]:bg-[#1877F2]/90\",\n },\n {\n provider: \"dribbble\",\n theme: \"brand\",\n className:\n \"border-[#EA4C89] bg-[#EA4C89] text-white shadow-[#EA4C89]/24 [:hover,[data-pressed]]:bg-[#EA4C89]/90\",\n },\n // Black-brand providers invert in dark mode so they stay visible.\n ...[\"apple\", \"twitter\", \"figma\"].map((provider) => ({\n provider: provider as SocialButtonProvider,\n theme: \"brand\" as const,\n className:\n \"border-black bg-black text-white shadow-black/24 [:hover,[data-pressed]]:bg-black/90 dark:border-white dark:bg-white dark:text-black dark:shadow-white/8 dark:not-disabled:inset-shadow-none dark:[:hover,[data-pressed]]:bg-white/90\",\n })),\n ],\n },\n);\n\ninterface SocialLogoProps extends React.ComponentProps<\"svg\"> {\n /** Render the provider's full-color logo instead of currentColor. */\n colored?: boolean;\n}\n\nfunction GoogleLogoIcon({ colored, ...props }: SocialLogoProps) {\n return (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M23.52 12.273c0-.851-.076-1.67-.218-2.455H12v4.642h6.458a5.52 5.52 0 0 1-2.394 3.622v3.01h3.878c2.269-2.088 3.578-5.165 3.578-8.819Z\"\n fill={colored ? \"#4285F4\" : \"currentColor\"}\n />\n <path\n d=\"M12 24c3.24 0 5.957-1.075 7.942-2.907l-3.878-3.011c-1.075.72-2.45 1.145-4.064 1.145-3.125 0-5.77-2.11-6.715-4.947H1.276v3.11A11.995 11.995 0 0 0 12 24Z\"\n fill={colored ? \"#34A853\" : \"currentColor\"}\n />\n <path\n d=\"M5.285 14.28A7.213 7.213 0 0 1 4.91 12c0-.79.136-1.56.376-2.28V6.61H1.276a11.995 11.995 0 0 0 0 10.78l4.009-3.11Z\"\n fill={colored ? \"#FBBC05\" : \"currentColor\"}\n />\n <path\n d=\"M12 4.773c1.762 0 3.344.605 4.587 1.794l3.442-3.442C17.952 1.19 15.235 0 12 0A11.995 11.995 0 0 0 1.276 6.61l4.01 3.11C6.228 6.884 8.874 4.773 12 4.773Z\"\n fill={colored ? \"#EA4335\" : \"currentColor\"}\n />\n </svg>\n );\n}\n\nfunction FacebookLogoIcon({ colored, ...props }: SocialLogoProps) {\n return (\n <svg\n fill={colored ? \"#1877F2\" : \"currentColor\"}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M24 12c0-6.627-5.373-12-12-12S0 5.373 0 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078V12h3.047V9.356c0-3.007 1.792-4.668 4.533-4.668 1.312 0 2.686.234 2.686.234v2.953h-1.514c-1.491 0-1.955.926-1.955 1.875V12h3.328l-.532 3.469h-2.796v8.385C19.612 22.954 24 17.99 24 12Z\" />\n </svg>\n );\n}\n\nfunction AppleLogoIcon({ colored: _colored, ...props }: SocialLogoProps) {\n return (\n <svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\" />\n </svg>\n );\n}\n\nfunction XLogoIcon({ colored: _colored, ...props }: SocialLogoProps) {\n return (\n <svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231 5.45-6.231Zm-1.161 17.52h1.833L7.084 4.126H5.117l11.966 15.644Z\" />\n </svg>\n );\n}\n\nfunction FigmaLogoIcon({ colored, ...props }: SocialLogoProps) {\n return (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M8.167 24a3.834 3.834 0 0 0 3.833-3.833V16.333H8.167a3.834 3.834 0 0 0 0 7.667Z\"\n fill={colored ? \"#0ACF83\" : \"currentColor\"}\n />\n <path\n d=\"M4.333 12a3.834 3.834 0 0 1 3.834-3.833H12v7.666H8.167A3.834 3.834 0 0 1 4.333 12Z\"\n fill={colored ? \"#A259FF\" : \"currentColor\"}\n />\n <path\n d=\"M4.333 4.167A3.834 3.834 0 0 1 8.167.333H12V8H8.167a3.834 3.834 0 0 1-3.834-3.833Z\"\n fill={colored ? \"#F24E1E\" : \"currentColor\"}\n />\n <path\n d=\"M12 .333h3.833a3.834 3.834 0 0 1 0 7.667H12V.333Z\"\n fill={colored ? \"#FF7262\" : \"currentColor\"}\n />\n <path\n d=\"M19.667 12a3.834 3.834 0 1 1-7.667 0 3.834 3.834 0 0 1 7.667 0Z\"\n fill={colored ? \"#1ABCFE\" : \"currentColor\"}\n />\n </svg>\n );\n}\n\nfunction DribbbleLogoIcon({ colored, ...props }: SocialLogoProps) {\n return (\n <svg\n fill={colored ? \"#EA4C89\" : \"currentColor\"}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12-5.385 12-12 12Zm10.12-10.358c-.35-.11-3.17-.953-6.384-.438 1.34 3.684 1.887 6.684 1.992 7.308 2.3-1.555 3.936-4.02 4.395-6.87Zm-6.115 7.808c-.153-.9-.75-4.032-2.19-7.77l-.066.02c-5.79 2.015-7.86 6.025-8.04 6.4 1.73 1.358 3.92 2.166 6.29 2.166 1.42 0 2.77-.29 4-.814Zm-11.62-2.58c.232-.4 3.045-5.055 8.332-6.765.135-.045.27-.084.405-.12-.26-.585-.54-1.167-.832-1.74C7.17 11.775 2.206 11.71 1.756 11.7l-.004.312c0 2.633.998 5.037 2.634 6.855ZM1.96 9.92c.46.008 4.683.026 9.477-1.248-1.698-3.018-3.53-5.558-3.8-5.928-2.868 1.35-5.01 3.99-5.676 7.17ZM9.6 2.052c.282.38 2.145 2.914 3.822 6 3.645-1.365 5.19-3.44 5.373-3.702-1.81-1.61-4.19-2.586-6.795-2.586-.825 0-1.63.1-2.4.285Zm10.335 3.483c-.218.29-1.935 2.493-5.724 4.04.24.49.47.985.68 1.486.08.18.15.36.22.53 3.41-.43 6.8.26 7.14.33-.02-2.42-.88-4.64-2.31-6.38Z\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n}\n\ntype SocialButtonProvider =\n | \"google\"\n | \"facebook\"\n | \"apple\"\n | \"twitter\"\n | \"figma\"\n | \"dribbble\";\n\nconst providers: Record<\n SocialButtonProvider,\n {\n label: string;\n Icon: (props: SocialLogoProps) => React.ReactElement;\n }\n> = {\n apple: { Icon: AppleLogoIcon, label: \"Sign in with Apple\" },\n dribbble: { Icon: DribbbleLogoIcon, label: \"Sign in with Dribbble\" },\n facebook: { Icon: FacebookLogoIcon, label: \"Sign in with Facebook\" },\n figma: { Icon: FigmaLogoIcon, label: \"Sign in with Figma\" },\n google: { Icon: GoogleLogoIcon, label: \"Sign in with Google\" },\n twitter: { Icon: XLogoIcon, label: \"Sign in with X\" },\n};\n\ninterface SocialButtonProps extends useRender.ComponentProps<\"button\"> {\n /** Which provider to render: google, facebook, apple, twitter, figma or dribbble. */\n provider: SocialButtonProvider;\n /** brand (provider-filled), color (outline + full-color logo) or gray (tonal). */\n theme?: VariantProps<typeof socialButtonVariants>[\"theme\"];\n /** Render a square button with the logo only. */\n iconOnly?: boolean;\n}\n\nfunction SocialButton({\n className,\n provider,\n theme = \"brand\",\n iconOnly = false,\n render,\n children,\n ...props\n}: SocialButtonProps) {\n const { label, Icon } = providers[provider];\n const typeValue: React.ButtonHTMLAttributes<HTMLButtonElement>[\"type\"] =\n render ? undefined : \"button\";\n\n const defaultProps = {\n \"aria-label\": iconOnly ? label : undefined,\n className: cn(socialButtonVariants({ className, iconOnly, provider, theme })),\n \"data-provider\": provider,\n \"data-slot\": \"social-button\",\n type: typeValue,\n children: (\n <>\n <Icon aria-hidden=\"true\" colored={theme === \"color\"} />\n {!iconOnly && <span>{children ?? label}</span>}\n </>\n ),\n };\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(defaultProps, props),\n render,\n });\n}\n\nexport {\n SocialButton,\n socialButtonVariants,\n GoogleLogoIcon,\n FacebookLogoIcon,\n XLogoIcon,\n FigmaLogoIcon,\n DribbbleLogoIcon,\n type SocialButtonProvider,\n};\n","\"use client\";\n\nimport { CheckIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ntype Orientation = \"horizontal\" | \"vertical\";\ntype StepState = \"active\" | \"completed\" | \"inactive\";\n\nconst StepperContext = React.createContext<{\n value: number;\n orientation: Orientation;\n}>({ orientation: \"horizontal\", value: 1 });\n\nconst StepperItemContext = React.createContext<{\n step: number;\n state: StepState;\n}>({ state: \"inactive\", step: 1 });\n\nfunction Stepper({\n value = 1,\n orientation = \"horizontal\",\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** 1-based index of the active step. */\n value?: number;\n orientation?: Orientation;\n}) {\n return (\n <StepperContext.Provider value={{ orientation, value }}>\n <div\n className={cn(\n \"group/stepper flex w-full gap-2\",\n orientation === \"vertical\" ? \"flex-col\" : \"items-center\",\n className,\n )}\n data-orientation={orientation}\n data-slot=\"stepper\"\n {...props}\n />\n </StepperContext.Provider>\n );\n}\n\nfunction StepperItem({\n step,\n completed,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & { step: number; completed?: boolean }) {\n const { value } = React.useContext(StepperContext);\n const state: StepState =\n completed || value > step\n ? \"completed\"\n : value === step\n ? \"active\"\n : \"inactive\";\n\n return (\n <StepperItemContext.Provider value={{ state, step }}>\n <div\n className={cn(\n \"group/step flex gap-2.5\",\n \"group-data-[orientation=horizontal]/stepper:items-center group-data-[orientation=horizontal]/stepper:not-last:flex-1\",\n \"group-data-[orientation=vertical]/stepper:flex-col\",\n className,\n )}\n data-slot=\"stepper-item\"\n data-state={state}\n {...props}\n />\n </StepperItemContext.Provider>\n );\n}\n\nfunction StepperTrigger({\n className,\n ...props\n}: React.ComponentProps<\"button\">) {\n return (\n <button\n className={cn(\n \"flex items-center gap-2.5 rounded-lg text-left outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64\",\n className,\n )}\n data-slot=\"stepper-trigger\"\n type=\"button\"\n {...props}\n />\n );\n}\n\nfunction StepperIndicator({\n className,\n children,\n ...props\n}: React.ComponentProps<\"span\">) {\n const { step } = React.useContext(StepperItemContext);\n return (\n <span\n className={cn(\n \"relative flex size-8 shrink-0 items-center justify-center rounded-full border border-transparent bg-muted font-medium text-muted-foreground text-sm transition-colors group-data-[state=active]/step:bg-primary group-data-[state=active]/step:text-primary-foreground group-data-[state=completed]/step:bg-primary group-data-[state=completed]/step:text-primary-foreground\",\n className,\n )}\n data-slot=\"stepper-indicator\"\n {...props}\n >\n <span className=\"group-data-[state=completed]/step:hidden\">\n {children ?? step}\n </span>\n <CheckIcon className=\"hidden size-4 group-data-[state=completed]/step:block\" />\n </span>\n );\n}\n\nfunction StepperTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"font-medium text-sm transition-colors group-data-[state=inactive]/step:text-muted-foreground\",\n className,\n )}\n data-slot=\"stepper-title\"\n {...props}\n />\n );\n}\n\nfunction StepperDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"text-muted-foreground text-xs\", className)}\n data-slot=\"stepper-description\"\n {...props}\n />\n );\n}\n\nfunction StepperSeparator({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"rounded-full bg-border transition-colors group-data-[state=completed]/step:bg-primary\",\n \"group-data-[orientation=horizontal]/stepper:h-0.5 group-data-[orientation=horizontal]/stepper:flex-1\",\n \"group-data-[orientation=vertical]/stepper:ms-[calc(--spacing(4)-1px)] group-data-[orientation=vertical]/stepper:h-6 group-data-[orientation=vertical]/stepper:w-0.5\",\n className,\n )}\n data-slot=\"stepper-separator\"\n {...props}\n />\n );\n}\n\nexport {\n Stepper,\n StepperItem,\n StepperTrigger,\n StepperIndicator,\n StepperTitle,\n StepperDescription,\n StepperSeparator,\n};\n","\"use client\";\n\nimport { Fragment } from \"react\";\nimport type * as React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ninterface PipelineStage {\n /** The headline number for the stage. */\n value: React.ReactNode;\n /** The stage caption, e.g. \"Target accounts\". */\n label: React.ReactNode;\n /** Render the value in the brand/primary color (e.g. a final stage). */\n accent?: boolean;\n}\n\ninterface PipelineProps extends React.ComponentProps<\"div\"> {\n /** Ordered funnel stages, left to right. */\n stages: PipelineStage[];\n /**\n * Step-to-step conversion markers. `conversions[i]` is the share of stage `i`\n * that advances to stage `i + 1`, and is shown as a pill right beside stage\n * `i`'s number (length = `stages.length - 1`). Typically a percentage string.\n */\n conversions?: React.ReactNode[];\n}\n\n/**\n * A conversion funnel — equal-width stages laid left to right. Each stage\n * carries its own step-to-step conversion in a pill next to the number, and a\n * chevron points to the next stage, so the row reads as a flow rather than a\n * set of loose stats.\n *\n * The component is its own container query context: when it gets narrow (e.g.\n * beside a docked panel) the chevrons hide and the stages reflow into a\n * two-column grid, staying readable without squashing the numbers.\n */\nfunction Pipeline({ stages, conversions = [], className, ...props }: PipelineProps) {\n return (\n <div\n className={cn(\n \"@container flex items-stretch @max-[560px]:grid @max-[560px]:grid-cols-2 @max-[560px]:gap-x-6 @max-[560px]:gap-y-5\",\n className,\n )}\n data-slot=\"pipeline\"\n {...props}\n >\n {stages.map((stage, i) => {\n const conv = i < stages.length - 1 ? conversions[i] : undefined;\n return (\n <Fragment key={i}>\n <div className=\"min-w-0 flex-1 px-0.5\" data-slot=\"pipeline-stage\">\n <div className=\"flex items-center gap-2\">\n <span\n className={cn(\n \"font-sans font-bold text-3xl text-foreground leading-none tabular-nums tracking-tight\",\n stage.accent && \"text-success\",\n )}\n >\n {stage.value}\n </span>\n {conv != null ? <PipelineConversion>{conv}</PipelineConversion> : null}\n </div>\n <div className=\"mt-2 text-muted-foreground text-xs leading-snug\">\n {stage.label}\n </div>\n </div>\n {conv != null ? (\n <div\n className=\"flex flex-none items-center px-1 @max-[560px]:hidden\"\n data-slot=\"pipeline-arrow\"\n aria-hidden\n >\n <ChevronRight className=\"size-3.5 text-muted-foreground/40\" />\n </div>\n ) : null}\n </Fragment>\n );\n })}\n </div>\n );\n}\n\n/** The conversion pill sitting beside a stage number. */\nfunction PipelineConversion({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"inline-flex items-center rounded-full border border-success/20 bg-success/10 px-2 py-0.5 font-medium text-[11px] text-success tabular-nums dark:bg-success/16\",\n className,\n )}\n data-slot=\"pipeline-conversion\"\n {...props}\n />\n );\n}\n\nexport { Pipeline, PipelineConversion, type PipelineProps, type PipelineStage };\n","\"use client\";\n\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst toggleVariants = cva(\n \"[&_svg]:-mx-0.5 relative inline-flex shrink-0 cursor-pointer select-none items-center justify-center gap-2 whitespace-nowrap rounded-lg border font-medium text-base text-foreground outline-none transition-[box-shadow,background-color] duration-100 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 data-pressed:bg-input/64 data-pressed:text-accent-foreground sm:text-sm [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:transition-transform [&_svg]:duration-150 [&_svg]:ease-[cubic-bezier(0.34,1.56,0.64,1)] data-pressed:[&_svg]:scale-115\",\n {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n size: {\n default: \"h-9 min-w-9 px-[calc(--spacing(2)-1px)] sm:h-8 sm:min-w-8\",\n lg: \"h-10 min-w-10 px-[calc(--spacing(2.5)-1px)] sm:h-9 sm:min-w-9\",\n sm: \"h-8 min-w-8 px-[calc(--spacing(1.5)-1px)] sm:h-7 sm:min-w-7\",\n },\n variant: {\n default: \"border-transparent\",\n outline:\n \"border-input bg-background not-dark:bg-clip-padding shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/6%)] dark:bg-input/32 dark:data-pressed:bg-input dark:hover:bg-input/64 dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] dark:not-disabled:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/2%)] [:disabled,:active,[data-pressed]]:shadow-none\",\n },\n },\n },\n);\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n className={cn(toggleVariants({ className, size, variant }))}\n data-slot=\"toggle\"\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n","\"use client\";\n\nimport type { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { ToggleGroup as ToggleGroupPrimitive } from \"@base-ui/react/toggle-group\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { Separator } from \"./separator\";\nimport {\n Toggle as ToggleComponent,\n type toggleVariants,\n} from \"./toggle\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n});\n\nfunction ToggleGroup({\n className,\n variant = \"default\",\n size = \"default\",\n orientation = \"horizontal\",\n children,\n ...props\n}: ToggleGroupPrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive\n className={cn(\n \"flex w-fit *:focus-visible:z-10 dark:*:[[data-slot=separator]:has(+[data-slot=toggle]:hover)]:before:bg-input/64 dark:*:[[data-slot=separator]:has(+[data-slot=toggle][data-pressed])]:before:bg-input dark:*:[[data-slot=toggle]:hover+[data-slot=separator]]:before:bg-input/64 dark:*:[[data-slot=toggle][data-pressed]+[data-slot=separator]]:before:bg-input\",\n orientation === \"horizontal\"\n ? \"*:pointer-coarse:after:min-w-auto\"\n : \"*:pointer-coarse:after:min-h-auto\",\n variant === \"default\"\n ? \"gap-0.5\"\n : orientation === \"horizontal\"\n ? \"*:not-first:not-data-[slot=separator]:before:-start-[0.5px] *:not-last:not-data-[slot=separator]:before:-end-[0.5px] *:not-first:rounded-s-none *:not-last:rounded-e-none *:not-first:border-s-0 *:not-last:border-e-0 *:not-first:before:rounded-s-none *:not-last:before:rounded-e-none\"\n : \"*:not-first:not-data-[slot=separator]:before:-top-[0.5px] *:not-last:not-data-[slot=separator]:before:-bottom-[0.5px] flex-col *:not-first:rounded-t-none *:not-last:rounded-b-none *:not-first:border-t-0 *:not-last:border-b-0 *:not-first:before:rounded-t-none *:not-last:before:rounded-b-none *:data-[slot=toggle]:not-last:before:hidden dark:*:last:before:hidden dark:*:first:before:block\",\n className,\n )}\n data-size={size}\n data-slot=\"toggle-group\"\n data-variant={variant}\n orientation={orientation}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ size, variant }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive>\n );\n}\n\nfunction Toggle({\n className,\n children,\n variant,\n size,\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n const resolvedVariant = context.variant || variant;\n const resolvedSize = context.size || size;\n\n return (\n <ToggleComponent\n className={className}\n data-size={resolvedSize}\n data-variant={resolvedVariant}\n size={resolvedSize}\n variant={resolvedVariant}\n {...props}\n >\n {children}\n </ToggleComponent>\n );\n}\n\nfunction ToggleGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: {\n className?: string;\n} & React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n className={cn(\n \"pointer-events-none relative bg-input before:absolute before:inset-0 dark:before:bg-input/32\",\n className,\n )}\n orientation={orientation}\n {...props}\n />\n );\n}\n\nexport { ToggleGroup, Toggle, Toggle as ToggleGroupItem, ToggleGroupSeparator };\n","\"use client\";\n\nimport type * as React from \"react\";\n\nimport { ToggleGroup, ToggleGroupItem } from \"./toggle-group\";\nimport { cn } from \"../../lib/utils/css\";\n\ninterface SegmentedControlOption<T extends string> {\n value: T;\n label: React.ReactNode;\n}\n\ninterface SegmentedControlProps<T extends string> {\n /** The currently-selected option value. */\n value: T;\n /** Called with the newly-selected value (never with an empty selection). */\n onValueChange: (value: T) => void;\n /** The mutually-exclusive options, left to right. */\n options: SegmentedControlOption<T>[];\n size?: \"sm\" | \"default\" | \"lg\";\n variant?: \"default\" | \"outline\";\n className?: string;\n}\n\n/**\n * Per-size segment padding. The base toggle sizes are icon-button tight\n * (~5px), which crowds text labels like \"Past 3 months\"; a segmented control\n * reads as text tabs, so it wants room to breathe on both axes.\n */\nconst SEGMENT_SIZE: Record<NonNullable<SegmentedControlProps<string>[\"size\"]>, string> = {\n sm: \"h-8 px-3.5 sm:h-7\",\n default: \"h-9 px-4 sm:h-8\",\n lg: \"h-10 px-5 sm:h-9\",\n};\n\n/**\n * A single-select segmented control — a compact row of mutually-exclusive\n * options (e.g. a time-range switch: Past month / Past 3 months / Overall).\n *\n * A thin, typed wrapper over {@link ToggleGroup} that keeps exactly one option\n * selected — the active segment can't be toggled off into an empty state — and\n * hides Base UI's array-value plumbing. Pass `options`, `value`, and\n * `onValueChange`; the value is a string union you control.\n */\nfunction SegmentedControl<T extends string>({\n value,\n onValueChange,\n options,\n size = \"sm\",\n variant = \"outline\",\n className,\n}: SegmentedControlProps<T>) {\n return (\n <ToggleGroup\n className={cn(className)}\n data-slot=\"segmented-control\"\n value={[value]}\n onValueChange={(groupValue) => {\n const next = Array.isArray(groupValue) ? groupValue[0] : groupValue;\n // Ignore the empty-array case so a segment always stays selected.\n if (next != null) onValueChange(next as T);\n }}\n size={size}\n variant={variant}\n >\n {options.map((option) => (\n <ToggleGroupItem\n key={option.value}\n value={option.value}\n className={SEGMENT_SIZE[size]}\n >\n {option.label}\n </ToggleGroupItem>\n ))}\n </ToggleGroup>\n );\n}\n\nexport {\n SegmentedControl,\n type SegmentedControlOption,\n type SegmentedControlProps,\n};\n","\"use client\";\n\nimport { Dialog as SheetPrimitive } from \"@base-ui/react/dialog\";\nimport { cva } from \"class-variance-authority\";\nimport { XIcon } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport { ScrollArea } from \"./scroll-area\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst Sheet = SheetPrimitive.Root;\n\nconst SheetPortal = SheetPrimitive.Portal;\n\nfunction SheetTrigger(props: SheetPrimitive.Trigger.Props) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose(props: SheetPrimitive.Close.Props) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetBackdrop({ className, ...props }: SheetPrimitive.Backdrop.Props) {\n return (\n <SheetPrimitive.Backdrop\n className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n className,\n )}\n data-slot=\"sheet-backdrop\"\n {...props}\n />\n );\n}\n\nexport const sheetViewportVariants = cva(\"fixed inset-0 z-50 grid\", {\n variants: {\n side: {\n bottom: \"grid grid-rows-[1fr_auto] pt-12\",\n top: \"grid grid-rows-[auto_1fr] pb-12\",\n left: \"flex justify-start\",\n right: \"flex justify-end\",\n },\n variant: {\n default: \"\",\n inset: \"sm:p-4\",\n },\n },\n});\n\nfunction SheetViewport({\n className,\n side,\n variant = \"default\",\n ...props\n}: SheetPrimitive.Viewport.Props & {\n side?: \"right\" | \"left\" | \"top\" | \"bottom\";\n variant?: \"default\" | \"inset\";\n}) {\n return (\n <SheetPrimitive.Viewport\n className={cn(sheetViewportVariants({ side, variant }), className)}\n data-slot=\"sheet-viewport\"\n {...props}\n />\n );\n}\n\nexport const sheetPopupVariants = cva(\n \"relative flex max-h-full min-h-0 w-full min-w-0 flex-col bg-popover not-dark:bg-clip-padding text-popover-foreground shadow-lg/5 transition-[opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:opacity-0 data-starting-style:opacity-0 max-sm:before:hidden dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n {\n defaultVariants: {\n variant: \"default\",\n },\n variants: {\n side: {\n bottom:\n \"row-start-2 border-t data-ending-style:translate-y-8 data-starting-style:translate-y-8\",\n top: \"data-ending-style:-translate-y-8 data-starting-style:-translate-y-8 border-b\",\n left: \"data-ending-style:-translate-x-8 data-starting-style:-translate-x-8 w-[calc(100%-(--spacing(12)))] max-w-md border-e\",\n right:\n \"col-start-2 w-[calc(100%-(--spacing(12)))] max-w-md border-s data-ending-style:translate-x-8 data-starting-style:translate-x-8\",\n },\n variant: {\n default: \"\",\n inset:\n \"before:hidden sm:rounded-2xl sm:border sm:before:rounded-[calc(var(--radius-2xl)-1px)] sm:**:data-[slot=sheet-footer]:rounded-b-[calc(var(--radius-2xl)-1px)]\",\n },\n },\n },\n);\n\nfunction SheetPopup({\n className,\n children,\n showCloseButton = true,\n side = \"right\",\n variant = \"default\",\n ...props\n}: SheetPrimitive.Popup.Props & {\n showCloseButton?: boolean;\n side?: \"right\" | \"left\" | \"top\" | \"bottom\";\n variant?: \"default\" | \"inset\";\n}) {\n return (\n <SheetPortal>\n <SheetBackdrop />\n <SheetViewport side={side} variant={variant}>\n <SheetPrimitive.Popup\n className={cn(sheetPopupVariants({ side, variant }), className)}\n data-slot=\"sheet-popup\"\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close\n aria-label=\"Close\"\n className=\"absolute end-2 top-2\"\n render={<Button size=\"icon\" variant=\"ghost\" />}\n >\n <XIcon />\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Popup>\n </SheetViewport>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-2 p-6 in-[[data-slot=sheet-popup]:has([data-slot=sheet-panel])]:pb-3 max-sm:pb-4\",\n className,\n )}\n data-slot=\"sheet-header\"\n {...props}\n />\n );\n}\n\nfunction SheetFooter({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: \"default\" | \"bare\";\n}) {\n return (\n <div\n className={cn(\n \"flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end\",\n variant === \"default\" && \"border-t bg-muted/72 py-4\",\n variant === \"bare\" &&\n \"in-[[data-slot=sheet-popup]:has([data-slot=sheet-panel])]:pt-3 pt-4 pb-6\",\n className,\n )}\n data-slot=\"sheet-footer\"\n {...props}\n />\n );\n}\n\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\n return (\n <SheetPrimitive.Title\n className={cn(\n \"font-heading font-semibold text-xl leading-none\",\n className,\n )}\n data-slot=\"sheet-title\"\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: SheetPrimitive.Description.Props) {\n return (\n <SheetPrimitive.Description\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"sheet-description\"\n {...props}\n />\n );\n}\n\nfunction SheetPanel({\n className,\n scrollFade = true,\n ...props\n}: React.ComponentProps<\"div\"> & { scrollFade?: boolean }) {\n return (\n <ScrollArea scrollFade={scrollFade}>\n <div\n className={cn(\n \"p-6 in-[[data-slot=sheet-popup]:has([data-slot=sheet-header])]:pt-1 in-[[data-slot=sheet-popup]:has([data-slot=sheet-footer]:not(.border-t))]:pb-1\",\n className,\n )}\n data-slot=\"sheet-panel\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetPortal,\n SheetClose,\n SheetBackdrop,\n SheetViewport,\n SheetBackdrop as SheetOverlay,\n SheetPopup,\n SheetPopup as SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n SheetPanel,\n};\n","import { cn } from \"../../lib/utils/css\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"animate-skeleton rounded-sm [--skeleton-highlight:--alpha(var(--color-white)/64%)] [background:linear-gradient(120deg,transparent_40%,var(--skeleton-highlight),transparent_60%)_var(--color-muted)_0_0/200%_100%_fixed] dark:[--skeleton-highlight:--alpha(var(--color-white)/4%)]\",\n className,\n )}\n data-slot=\"skeleton\"\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { ScrollArea } from \"./scroll-area\";\nimport { Separator } from \"./separator\";\nimport {\n Sheet,\n SheetDescription,\n SheetHeader,\n SheetPopup,\n SheetTitle,\n} from \"./sheet\";\nimport { Skeleton } from \"./skeleton\";\nimport { Tooltip, TooltipPopup, TooltipTrigger } from \"./tooltip\";\nimport { cn } from \"../../lib/utils/css\";\n\n// Runs before paint on the client (so the mobile/desktop sidebar is correct on\n// the first frame — no pop-in), but degrades to useEffect during SSR.\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH_LG = \"18.5rem\";\nconst SIDEBAR_WIDTH_MD = \"14.5rem\";\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 persistKey,\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 * Remember the expanded/collapsed state in `localStorage` under this key and\n * restore it on the next load (desktop rail only; the mobile sheet is always\n * closed on load). Opt-in — omit to keep the sidebar un-persisted. Ignored in\n * controlled mode (when `open` is provided). The restore runs before first\n * paint, so there's no expand→collapse flash.\n */\n persistKey?: string;\n}) {\n // Self-contained breakpoint check (md = 48rem). Resolved in a layout effect\n // before the first paint so the sidebar never flashes from mobile to desktop.\n const [isMobile, setIsMobile] = React.useState(false);\n useIsomorphicLayoutEffect(() => {\n const mql = window.matchMedia(\"(max-width: 47.999rem)\");\n const onChange = () => setIsMobile(mql.matches);\n onChange();\n mql.addEventListener(\"change\", onChange);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\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 // Persist the sidebar state. document.cookie works in every browser\n // (cookieStore is Chromium-only and throws elsewhere). When `persistKey`\n // is set we also mirror it to localStorage so a client-only app (no SSR\n // cookie read) can restore it on load.\n try {\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n if (persistKey) {\n window.localStorage.setItem(persistKey, openState ? \"true\" : \"false\");\n }\n } catch {\n // Ignore — persistence is best-effort.\n }\n },\n [setOpenProp, open, persistKey],\n );\n\n // Restore the persisted (localStorage) open state on mount — uncontrolled use\n // only. Runs in a layout effect so the restore lands before first paint (no\n // expand→collapse flash). SSR renders `defaultOpen` and the client's first\n // render matches it, so this reconciles afterwards without a hydration\n // mismatch.\n useIsomorphicLayoutEffect(() => {\n if (!persistKey || openProp !== undefined) return;\n try {\n const stored = window.localStorage.getItem(persistKey);\n if (stored === \"true\" || stored === \"false\") {\n _setOpen(stored === \"true\");\n }\n } catch {\n // Ignore — restore is best-effort.\n }\n }, [persistKey, openProp]);\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen]);\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 isMobile,\n open,\n openMobile,\n setOpen,\n setOpenMobile,\n state,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n className={cn(\n \"group/sidebar-wrapper flex h-full w-full\",\n \"[--sidebar-width:var(--sidebar-width-md)] lg:[--sidebar-width:var(--sidebar-width-lg)]\",\n className,\n )}\n data-slot=\"sidebar-wrapper\"\n style={{\n \"--sidebar-width-lg\": SIDEBAR_WIDTH_LG,\n \"--sidebar-width-md\": SIDEBAR_WIDTH_MD,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\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 className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar md:bg-transparent text-sidebar-foreground\",\n className,\n )}\n data-slot=\"sidebar\"\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet onOpenChange={setOpenMobile} open={openMobile} {...props}>\n <SheetPopup\n className=\"w-(--sidebar-width) bg-sidebar md:bg-transparent p-0 text-sidebar-foreground [&>button]:hidden\"\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n style={{\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n }}\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 </SheetPopup>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-300 ease-[cubic-bezier(0.32,0.72,0,1)]\",\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 data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] 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 data-slot=\"sidebar-container\"\n {...props}\n >\n <div\n className=\"flex h-full w-full flex-col bg-sidebar md:bg-transparent group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm/5\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\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 className={cn(\"size-7\", className)}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n size=\"icon\"\n variant=\"ghost\"\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 aria-label=\"Toggle Sidebar\"\n className={cn(\n \"-translate-x-1/2 group-data-[side=left]:-right-4 absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=right]:left-0 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 hover:group-data-[collapsible=offcanvas]:bg-sidebar md:bg-transparent group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className,\n )}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n onClick={toggleSidebar}\n tabIndex={-1}\n title=\"Toggle Sidebar\"\n type=\"button\"\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n className={cn(\n \"relative flex w-full flex-1 flex-col bg-background\",\n \"md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm/5\",\n className,\n )}\n data-slot=\"sidebar-inset\"\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n className={cn(\"h-8 w-full bg-background shadow-none\", className)}\n data-sidebar=\"input\"\n data-slot=\"sidebar-input\"\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n data-sidebar=\"header\"\n data-slot=\"sidebar-header\"\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n data-sidebar=\"footer\"\n data-slot=\"sidebar-footer\"\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n data-sidebar=\"separator\"\n data-slot=\"sidebar-separator\"\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <ScrollArea className=\"pr-1.5 -mr-1.5\" scrollFade>\n <div\n className={cn(\n \"flex flex-1 flex-col group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n data-sidebar=\"content\"\n data-slot=\"sidebar-content\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n data-sidebar=\"group\"\n data-slot=\"sidebar-group\"\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"flex h-8 shrink-0 items-center rounded-lg px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] 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 \"data-sidebar\": \"group-label\",\n \"data-slot\": \"sidebar-group-label\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps(defaultProps, props),\n render,\n });\n}\n\nfunction SidebarGroupAction({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"button\">) {\n const defaultProps = {\n className: cn(\n \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-lg p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg:not([class*='size-'])]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:-inset-2 after:absolute md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n ),\n \"data-sidebar\": \"group-action\",\n \"data-slot\": \"sidebar-group-action\",\n };\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps(defaultProps, props),\n render,\n });\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"w-full text-sm\", className)}\n data-sidebar=\"group-content\"\n data-slot=\"sidebar-group-content\"\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n data-sidebar=\"menu\"\n data-slot=\"sidebar-menu\"\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n className={cn(\"group/menu-item relative\", className)}\n data-sidebar=\"menu-item\"\n data-slot=\"sidebar-menu-item\"\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-lg border border-transparent text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding,background-color] duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] hover:bg-secondary focus-visible:ring-2 active:bg-secondary disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pe-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[status=active]:bg-background data-[status=active]:font-medium data-[status=active]:text-sidebar-accent-foreground data-[active=true]:bg-background data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-background data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-3! [&>span:last-child]:truncate [&>span:last-child]:transition-opacity [&>span:last-child]:duration-200 [&>span:last-child]:ease-out group-data-[collapsible=icon]:[&>span:last-child]:opacity-0 [&>svg:not([class*='size-'])]:size-4 [&>svg]:shrink-0 data-[status=active]:border-border data-[status=active]:shadow-xs data-[status=active]:hover:bg-background data-[status=active]:hover:text-sidebar-accent-foreground\",\n {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n size: {\n default: \"h-9 font-normal p-2 text-sm\",\n lg: \"h-11 p-3 font-medium text-sm group-data-[collapsible=icon]:p-0!\",\n sm: \"h-7 p-2 font-normal text-xs\",\n },\n variant: {\n default: \"hover:bg-secondary\",\n outline: \"bg-sidebar-accent text-foreground shadow-xs border\",\n },\n },\n },\n);\n\nfunction SidebarMenuButton({\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"button\"> & {\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipPopup>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const { isMobile, state } = useSidebar();\n\n const defaultProps = {\n className: cn(sidebarMenuButtonVariants({ size, variant }), className),\n \"data-active\": isActive,\n \"data-sidebar\": \"menu-button\",\n \"data-size\": size,\n \"data-slot\": \"sidebar-menu-button\",\n };\n\n const buttonProps = mergeProps<\"button\">(defaultProps, props);\n\n const buttonElement = useRender({\n defaultTagName: \"button\",\n props: buttonProps,\n render,\n });\n\n if (!tooltip) {\n return buttonElement;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={buttonElement as React.ReactElement<Record<string, unknown>>}\n />\n <TooltipPopup\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n side=\"right\"\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n showOnHover = false,\n render,\n ...props\n}: useRender.ComponentProps<\"button\"> & {\n showOnHover?: boolean;\n}) {\n const defaultProps = {\n className: cn(\n \"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-lg p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg:not([class*='size-'])]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:-inset-2 after:absolute 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 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground peer-data-[status=active]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className,\n ),\n \"data-sidebar\": \"menu-action\",\n \"data-slot\": \"sidebar-menu-action\",\n };\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(defaultProps, props),\n render,\n });\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n // Vertically centered against the menu button (size-agnostic) rather\n // than pinned to the top, so the count reads level with the label.\n \"pointer-events-none absolute right-1 top-1/2 flex h-5 min-w-5 -translate-y-1/2 select-none items-center justify-center rounded-lg px-1 font-medium text-sidebar-foreground text-xs tabular-nums\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground peer-data-[status=active]/menu-button:text-sidebar-accent-foreground\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n data-sidebar=\"menu-badge\"\n data-slot=\"sidebar-menu-badge\"\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n className={cn(\"flex h-8 items-center gap-2 rounded-lg px-2\", className)}\n data-sidebar=\"menu-skeleton\"\n data-slot=\"sidebar-menu-skeleton\"\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-lg\"\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 \"--skeleton-width\": width,\n }}\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-sidebar-border border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n data-sidebar=\"menu-sub\"\n data-slot=\"sidebar-menu-sub\"\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n className={cn(\"group/menu-sub-item relative\", className)}\n data-sidebar=\"menu-sub-item\"\n data-slot=\"sidebar-menu-sub-item\"\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n size = \"md\",\n isActive = false,\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\"> & {\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const defaultProps = {\n className: cn(\n \"-translate-x-px flex h-7 min-w-0 items-center gap-2 overflow-hidden rounded-lg px-2 text-sidebar-foreground outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-secondary active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg:not([class*='size-'])]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground data-[status=active]:bg-sidebar-accent data-[status=active]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n ),\n \"data-active\": isActive,\n \"data-sidebar\": \"menu-sub-button\",\n \"data-size\": size,\n \"data-slot\": \"sidebar-menu-sub-button\",\n };\n\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(defaultProps, props),\n render,\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","\"use client\";\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ntype SliderLabelPosition = \"bottom\" | \"floating\";\n\nfunction Slider({\n className,\n children,\n defaultValue,\n value,\n min = 0,\n max = 100,\n labelPosition,\n formatLabel = (labelValue) => String(labelValue),\n ...props\n}: SliderPrimitive.Root.Props & {\n /** Render each thumb's value beneath it, or in a floating bubble above it. */\n labelPosition?: SliderLabelPosition;\n formatLabel?: (value: number) => React.ReactNode;\n}) {\n const _values = React.useMemo(() => {\n if (value !== undefined) {\n return Array.isArray(value) ? value : [value];\n }\n if (defaultValue !== undefined) {\n return Array.isArray(defaultValue) ? defaultValue : [defaultValue];\n }\n return [min];\n }, [value, defaultValue, min]);\n\n return (\n <SliderPrimitive.Root\n className={cn(\"data-[orientation=horizontal]:w-full\", className)}\n defaultValue={defaultValue}\n max={max}\n min={min}\n thumbAlignment=\"edge\"\n value={value}\n {...props}\n >\n {children}\n <SliderPrimitive.Control\n className=\"flex touch-none select-none data-disabled:pointer-events-none data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=horizontal]:w-full data-[orientation=horizontal]:min-w-44 data-[orientation=vertical]:flex-col data-disabled:opacity-64\"\n data-slot=\"slider-control\"\n >\n <SliderPrimitive.Track\n className=\"relative grow select-none before:absolute before:rounded-full before:bg-input data-[orientation=horizontal]:h-1 data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-1 data-[orientation=horizontal]:before:inset-x-0.5 data-[orientation=vertical]:before:inset-x-0 data-[orientation=horizontal]:before:inset-y-0 data-[orientation=vertical]:before:inset-y-0.5\"\n data-slot=\"slider-track\"\n >\n <SliderPrimitive.Indicator\n className=\"select-none rounded-full bg-primary data-[orientation=horizontal]:ms-0.5 data-[orientation=vertical]:mb-0.5\"\n data-slot=\"slider-indicator\"\n />\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n className=\"block size-5 shrink-0 select-none rounded-full border border-input bg-white not-dark:bg-clip-padding shadow-xs/5 outline-none transition-[box-shadow,scale] duration-150 ease-out before:absolute before:inset-0 before:rounded-full before:shadow-[0_1px_--theme(--color-black/6%)] has-focus-visible:ring-[3px] has-focus-visible:ring-ring/24 data-dragging:data-[active]:scale-115 sm:size-4 dark:border-background dark:has-focus-visible:ring-ring/48 [:has(*:focus-visible),[data-dragging]]:shadow-none\"\n data-slot=\"slider-thumb\"\n index={index}\n key={String(index)}\n render={(thumbProps, state) => (\n <div\n {...thumbProps}\n data-active={\n state.activeThumbIndex === index ? \"\" : undefined\n }\n >\n {thumbProps.children}\n {labelPosition === \"bottom\" && (\n <span\n className=\"pointer-events-none absolute start-1/2 top-full mt-2 -translate-x-1/2 select-none whitespace-nowrap font-medium text-foreground text-sm rtl:translate-x-1/2\"\n data-slot=\"slider-thumb-label\"\n >\n {formatLabel(state.values[index] ?? min)}\n </span>\n )}\n {labelPosition === \"floating\" && (\n <span\n className=\"pointer-events-none absolute bottom-full start-1/2 mb-2.5 -translate-x-1/2 select-none whitespace-nowrap rounded-md border bg-popover not-dark:bg-clip-padding px-2 py-1 font-semibold text-popover-foreground text-xs shadow-md/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-md)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] rtl:translate-x-1/2 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\"\n data-slot=\"slider-thumb-label\"\n >\n {formatLabel(state.values[index] ?? min)}\n </span>\n )}\n </div>\n )}\n />\n ))}\n </SliderPrimitive.Track>\n </SliderPrimitive.Control>\n </SliderPrimitive.Root>\n );\n}\n\nfunction SliderValue({ className, ...props }: SliderPrimitive.Value.Props) {\n return (\n <SliderPrimitive.Value\n className={cn(\"flex justify-end text-sm\", className)}\n data-slot=\"slider-value\"\n {...props}\n />\n );\n}\n\nexport { Slider, SliderValue };\n","import { Loader2Icon } from \"lucide-react\";\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Spinner({\n className,\n ...props\n}: React.ComponentProps<typeof Loader2Icon>) {\n return (\n <Loader2Icon\n aria-label=\"Loading\"\n className={cn(\"animate-spin\", className)}\n role=\"status\"\n {...props}\n />\n );\n}\n\nexport { Spinner };\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { TrendingDownIcon, TrendingUpIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst statVariants = cva(\"flex flex-col gap-1.5\", {\n defaultVariants: { variant: \"default\" },\n variants: {\n variant: {\n // Bare — no chrome. Use inside a StatGroup or a Card.\n default: \"\",\n // A subtle tonal tile.\n muted: \"rounded-xl border bg-secondary p-4\",\n // A bordered surface tile that reads as its own card.\n card: \"rounded-xl border bg-card not-dark:bg-clip-padding p-4 shadow-xs/5\",\n },\n },\n});\n\ninterface StatProps extends useRender.ComponentProps<\"div\"> {\n variant?: VariantProps<typeof statVariants>[\"variant\"];\n}\n\n/**\n * A single headline metric (KPI). Compose it from `StatLabel`, `StatValue`,\n * `StatDescription` and an optional `StatTrend`. Drop bare `Stat`s into a\n * `StatGroup` for a divided row, or use `variant=\"muted\" | \"card\"` for a\n * standalone tile.\n */\nfunction Stat({ className, variant, render, ...props }: StatProps) {\n const defaultProps = {\n className: cn(statVariants({ className, variant })),\n \"data-slot\": \"stat\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\n/** The metric's caption, e.g. \"Active members\". */\nfunction StatLabel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\"font-medium text-muted-foreground text-sm leading-none\", className),\n \"data-slot\": \"stat-label\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\n/**\n * The headline number. Sans + tabular so digits stay aligned across a row;\n * drop `font-sans` from `className` to render it in the serif display face.\n */\nfunction StatValue({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"font-sans font-semibold text-2xl text-foreground leading-none tabular-nums tracking-tight\",\n className,\n ),\n \"data-slot\": \"stat-value\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\n/** Supporting copy under the value, e.g. \"vs. 1,204 last month\". */\nfunction StatDescription({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"p\">) {\n const defaultProps = {\n className: cn(\"text-muted-foreground text-sm leading-snug\", className),\n \"data-slot\": \"stat-description\",\n };\n\n return useRender({\n defaultTagName: \"p\",\n props: mergeProps<\"p\">(defaultProps, props),\n render,\n });\n}\n\nconst statTrendVariants = cva(\n \"inline-flex items-center gap-0.5 font-medium text-sm tabular-nums [&_svg:not([class*='size-'])]:size-3.5 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n defaultVariants: { direction: \"up\" },\n variants: {\n direction: {\n up: \"text-success-foreground\",\n down: \"text-destructive-foreground\",\n neutral: \"text-muted-foreground\",\n },\n },\n },\n);\n\ninterface StatTrendProps extends React.ComponentProps<\"span\"> {\n direction?: VariantProps<typeof statTrendVariants>[\"direction\"];\n /** Show the directional arrow before the children. Defaults to `true`. */\n showIcon?: boolean;\n}\n\n/**\n * A small delta chip — e.g. \"+12.5%\". Picks an up/down arrow from `direction`\n * and colors itself success/destructive/neutral.\n */\nfunction StatTrend({\n className,\n direction = \"up\",\n showIcon = true,\n children,\n ...props\n}: StatTrendProps) {\n const Icon = direction === \"down\" ? TrendingDownIcon : TrendingUpIcon;\n return (\n <span\n className={cn(statTrendVariants({ direction }), className)}\n data-direction={direction}\n data-slot=\"stat-trend\"\n {...props}\n >\n {showIcon && direction !== \"neutral\" ? <Icon /> : null}\n {children}\n </span>\n );\n}\n\n/**\n * Lays a set of bare `Stat`s out as a divided row (stacked on narrow screens),\n * wrapped in a bordered card surface with even padding per metric.\n */\nfunction StatGroup({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n const defaultProps = {\n className: cn(\n \"grid auto-cols-fr grid-flow-row divide-y rounded-xl border bg-card not-dark:bg-clip-padding shadow-xs/5 sm:grid-flow-col sm:divide-x sm:divide-y-0 [&>[data-slot=stat]]:p-4\",\n className,\n ),\n \"data-slot\": \"stat-group\",\n role: \"list\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nexport {\n Stat,\n StatLabel,\n StatValue,\n StatDescription,\n StatTrend,\n StatGroup,\n statVariants,\n statTrendVariants,\n};\n","\"use client\";\n\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ntype SwitchProps = SwitchPrimitive.Root.Props & {\n size?: \"sm\" | \"md\" | \"lg\";\n slim?: boolean;\n};\n\nfunction Switch({ className, size = \"md\", slim = false, ...props }: SwitchProps) {\n return (\n <SwitchPrimitive.Root\n className={cn(\n \"inline-flex shrink-0 items-center rounded-full outline-none transition-[background-color,box-shadow] duration-200\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background\",\n \"data-checked:bg-primary data-unchecked:bg-input data-disabled:opacity-64\",\n size === \"sm\" && \"[--thumb-size:--spacing(4)] sm:[--thumb-size:--spacing(3.5)]\",\n size === \"md\" && \"[--thumb-size:--spacing(5)] sm:[--thumb-size:--spacing(4)]\",\n size === \"lg\" && \"[--thumb-size:--spacing(6)] sm:[--thumb-size:--spacing(5)]\",\n \"w-[calc(var(--thumb-size)*2-2px)]\",\n !slim && \"h-[calc(var(--thumb-size)+2px)] p-px\",\n slim && \"relative h-[calc(var(--thumb-size)*0.4)] overflow-visible p-0\",\n className,\n )}\n data-slot=\"switch\"\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block aspect-square bg-background shadow-sm/5 will-change-transform\",\n \"[transition:translate_.15s,border-radius_.15s,scale_.1s_.1s,transform-origin_.15s]\",\n !slim && [\n \"h-full origin-left\",\n \"in-[[role=switch]:active,[data-slot=label]:active]:not-data-disabled:scale-x-110\",\n \"in-[[role=switch]:active,[data-slot=label]:active]:rounded-[var(--thumb-size)/calc(var(--thumb-size)*1.1)]\",\n \"rounded-(--thumb-size)\",\n \"data-checked:origin-[var(--thumb-size)_50%] data-checked:translate-x-[calc(var(--thumb-size)-4px)]\",\n ],\n slim && [\n \"absolute top-1/2 -translate-y-1/2\",\n \"h-[var(--thumb-size)] w-[var(--thumb-size)]\",\n \"rounded-full origin-left\",\n \"in-[[role=switch]:active,[data-slot=label]:active]:not-data-disabled:scale-x-110\",\n \"in-[[role=switch]:active,[data-slot=label]:active]:rounded-[var(--thumb-size)/calc(var(--thumb-size)*1.1)]\",\n \"data-checked:origin-[var(--thumb-size)_50%] data-checked:translate-x-[calc(var(--thumb-size)-2px)]\",\n ],\n )}\n data-slot=\"switch-thumb\"\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","\"use client\";\n\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\n\nimport { cn } from \"../../lib/utils/css\";\n\ntype TabsVariant = \"default\" | \"underline\";\n\nfunction Tabs({ className, ...props }: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n className={cn(\n \"flex flex-col gap-2 data-[orientation=vertical]:flex-row\",\n className,\n )}\n data-slot=\"tabs\"\n {...props}\n />\n );\n}\n\nfunction TabsList({\n variant = \"default\",\n className,\n children,\n ...props\n}: TabsPrimitive.List.Props & {\n variant?: TabsVariant;\n}) {\n return (\n <TabsPrimitive.List\n className={cn(\n \"relative z-0 flex w-fit items-center justify-center gap-x-0.5 text-muted-foreground\",\n \"data-[orientation=vertical]:flex-col\",\n variant === \"default\"\n ? \"rounded-lg bg-muted p-0.5 text-muted-foreground/72\"\n : \"data-[orientation=vertical]:px-1 data-[orientation=horizontal]:py-1 *:data-[slot=tabs-tab]:hover:bg-accent\",\n className,\n )}\n data-slot=\"tabs-list\"\n {...props}\n >\n {children}\n <TabsPrimitive.Indicator\n className={cn(\n \"-translate-y-(--active-tab-bottom) absolute bottom-0 left-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) transition-[width,translate] duration-200 ease-in-out\",\n variant === \"underline\"\n ? \"data-[orientation=vertical]:-translate-x-px z-10 bg-primary data-[orientation=horizontal]:h-0.5 data-[orientation=vertical]:w-0.5 data-[orientation=horizontal]:translate-y-px\"\n : \"-z-1 rounded-md bg-background shadow-sm/5 dark:bg-input\",\n )}\n data-slot=\"tab-indicator\"\n />\n </TabsPrimitive.List>\n );\n}\n\nfunction TabsTab({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n className={cn(\n \"[&_svg]:-mx-0.5 relative flex h-9 shrink-0 grow cursor-pointer items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-[calc(--spacing(2.5)-1px)] font-medium text-base outline-none transition-[color,background-color,box-shadow] hover:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring data-disabled:pointer-events-none data-[orientation=vertical]:w-full data-[orientation=vertical]:justify-start data-active:text-foreground data-disabled:opacity-64 sm:h-8 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"tabs-tab\"\n {...props}\n />\n );\n}\n\nfunction TabsPanel({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n className={cn(\n \"flex-1 outline-none data-[activation-direction=down]:animate-in data-[activation-direction=left]:animate-in data-[activation-direction=right]:animate-in data-[activation-direction=up]:animate-in fade-in-0 duration-200 ease-out data-[activation-direction=down]:slide-in-from-bottom-1 data-[activation-direction=left]:slide-in-from-left-1 data-[activation-direction=right]:slide-in-from-right-1 data-[activation-direction=up]:slide-in-from-top-1\",\n className,\n )}\n data-slot=\"tabs-content\"\n {...props}\n />\n );\n}\n\nexport {\n Tabs,\n TabsList,\n TabsTab,\n TabsTab as TabsTrigger,\n TabsPanel,\n TabsPanel as TabsContent,\n};\n","\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport { CheckIcon, XIcon } from \"lucide-react\";\nimport { createContext, useContext, useState } from \"react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype TagSize = \"sm\" | \"md\" | \"lg\";\ntype TagSelectionMode = \"none\" | \"single\" | \"multiple\";\n\n// ─── Context ──────────────────────────────────────────────────────────────────\n\ninterface TagGroupContextValue {\n size: TagSize;\n selectionMode: TagSelectionMode;\n selectedKeys: ReadonlySet<string>;\n onItemSelect: (key: string) => void;\n onItemRemove?: (key: string) => void;\n}\n\nconst TagGroupContext = createContext<TagGroupContextValue | null>(null);\n\n// ─── TagGroup ─────────────────────────────────────────────────────────────────\n\ninterface TagGroupProps {\n size?: TagSize;\n selectionMode?: TagSelectionMode;\n defaultSelectedKeys?: Iterable<string>;\n selectedKeys?: Set<string>;\n onSelectionChange?: (keys: Set<string>) => void;\n onRemove?: (key: string) => void;\n className?: string;\n children?: React.ReactNode;\n}\n\nfunction TagGroup({\n size = \"md\",\n selectionMode = \"none\",\n defaultSelectedKeys,\n selectedKeys: controlledKeys,\n onSelectionChange,\n onRemove,\n className,\n children,\n}: TagGroupProps) {\n const [internalKeys, setInternalKeys] = useState<Set<string>>(\n () => new Set(defaultSelectedKeys),\n );\n\n const selectedKeys = controlledKeys ?? internalKeys;\n\n function handleSelect(key: string) {\n if (selectionMode === \"none\") return;\n let next: Set<string>;\n if (selectionMode === \"single\") {\n next = selectedKeys.has(key) ? new Set() : new Set([key]);\n } else {\n next = new Set(selectedKeys);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n }\n if (!controlledKeys) setInternalKeys(next);\n onSelectionChange?.(next);\n }\n\n return (\n <TagGroupContext.Provider\n value={{\n size,\n selectionMode,\n selectedKeys,\n onItemSelect: handleSelect,\n onItemRemove: onRemove,\n }}\n >\n <div\n className={cn(\"flex flex-wrap items-center gap-1.5\", className)}\n data-slot=\"tag-group\"\n role={selectionMode !== \"none\" ? \"group\" : undefined}\n >\n {children}\n </div>\n </TagGroupContext.Provider>\n );\n}\n\n// ─── Tag ──────────────────────────────────────────────────────────────────────\n\nconst tagVariants = cva(\n [\n \"relative inline-flex items-center rounded-full border font-medium whitespace-nowrap select-none\",\n \"outline-none transition-colors\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background\",\n ],\n {\n defaultVariants: { size: \"md\" },\n variants: {\n size: {\n sm: \"h-6 gap-1 px-2 text-xs\",\n md: \"h-7 gap-1.5 px-2.5 text-sm\",\n lg: \"h-8 gap-2 px-3 text-base\",\n },\n },\n },\n);\n\nconst iconSize = { sm: \"size-3\", md: \"size-3.5\", lg: \"size-4\" } as const;\nconst countSize = {\n sm: \"h-4 min-w-4 text-[10px]\",\n md: \"h-[18px] min-w-[18px] text-xs\",\n lg: \"h-5 min-w-5 text-sm\",\n} as const;\n// Gap between an icon child and the label text, matching the root gap per size.\nconst labelGap = { sm: \"gap-1\", md: \"gap-1.5\", lg: \"gap-2\" } as const;\n\ninterface TagProps extends Omit<React.ComponentProps<\"span\">, \"children\"> {\n /** Unique value used for selection and removal tracking. */\n value?: string;\n size?: TagSize;\n /** Numeric count displayed as a small pill beside the label. */\n count?: number;\n /** Called when the remove button is clicked. Renders the X button. */\n onRemove?: () => void;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nfunction Tag({\n value = \"\",\n size: sizeProp,\n count,\n onRemove: onRemoveProp,\n disabled,\n children,\n className,\n ...props\n}: TagProps) {\n const ctx = useContext(TagGroupContext);\n\n const size = sizeProp ?? ctx?.size ?? \"md\";\n const selectionMode = ctx?.selectionMode ?? \"none\";\n const isSelected = Boolean(ctx?.selectedKeys.has(value));\n const isSelectable = selectionMode !== \"none\";\n const handleRemove =\n onRemoveProp ??\n (value && ctx?.onItemRemove ? () => ctx.onItemRemove!(value) : undefined);\n\n return (\n <span\n aria-disabled={disabled || undefined}\n aria-pressed={isSelectable ? isSelected : undefined}\n className={cn(\n tagVariants({ size }),\n \"border-input bg-background text-foreground\",\n isSelectable && !disabled && \"cursor-pointer hover:bg-accent\",\n isSelected && \"border-brand bg-brand/10 text-brand hover:bg-brand/15\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n data-disabled={disabled || undefined}\n data-selected={isSelected || undefined}\n data-slot=\"tag\"\n role={isSelectable ? \"button\" : undefined}\n tabIndex={isSelectable && !disabled ? 0 : undefined}\n onClick={\n isSelectable && !disabled ? () => ctx?.onItemSelect(value) : undefined\n }\n onKeyDown={\n isSelectable && !disabled\n ? (e) => {\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n ctx?.onItemSelect(value);\n }\n }\n : undefined\n }\n {...props}\n >\n {isSelected && isSelectable && (\n <CheckIcon\n aria-hidden\n className={cn(\"shrink-0\", iconSize[size])}\n strokeWidth={2.5}\n />\n )}\n {/* Flex label wrapper so icon children sit inline beside the text —\n Tailwind preflight makes SVGs display:block, which would otherwise\n stack them above the label. */}\n <span\n className={cn(\n \"inline-flex min-w-0 items-center [&_svg]:shrink-0\",\n labelGap[size],\n )}\n data-slot=\"tag-label\"\n >\n {children}\n </span>\n {count !== undefined && (\n <span\n className={cn(\n \"inline-flex items-center justify-center rounded-full px-1 font-medium tabular-nums\",\n countSize[size],\n isSelected\n ? \"bg-brand/20 text-brand\"\n : \"bg-muted text-muted-foreground\",\n )}\n data-slot=\"tag-count\"\n >\n {count}\n </span>\n )}\n {handleRemove && (\n <button\n aria-label=\"Remove\"\n className={cn(\n \"-me-0.5 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full\",\n \"text-current opacity-60 outline-none transition-opacity\",\n \"hover:opacity-100 focus-visible:ring-1 focus-visible:ring-ring focus-visible:opacity-100\",\n iconSize[size],\n )}\n data-slot=\"tag-remove\"\n onClick={(e) => {\n e.stopPropagation();\n handleRemove();\n }}\n tabIndex={-1}\n type=\"button\"\n >\n <XIcon aria-hidden className=\"pointer-events-none size-full\" />\n </button>\n )}\n </span>\n );\n}\n\nexport { TagGroup, Tag };\nexport type { TagSize, TagSelectionMode, TagGroupProps, TagProps };\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function useFirstRender() {\n const [firstRender, setFirstRender] = useState(true);\n useEffect(() => {\n setFirstRender(false);\n }, []);\n return firstRender;\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst subscribe = (onVisibilityChange: () => void) => {\n window.addEventListener(\"visibilitychange\", onVisibilityChange);\n return () =>\n window.removeEventListener(\"visibilitychange\", onVisibilityChange);\n};\nconst getSnapshot = () => !document.hidden;\nconst getServerSnapshot = () => true;\n\nfunction useIsTabActive() {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\nexport default useIsTabActive;\n","\"use client\";\n\nimport { type Duration, intervalToDuration } from \"date-fns\";\nimport { useEffect, useState } from \"react\";\nimport { useFirstRender } from \"../../lib/hooks/use-first-render\";\nimport useIsTabActive from \"../../lib/hooks/use-is-tab-active\";\n\nfunction TargetCountdown({\n target,\n children,\n}: {\n target: Date | number;\n children: (\n duration: Duration | null,\n isFirstRender: boolean,\n ) => React.ReactNode;\n}) {\n const [now, setNow] = useState(Date.now());\n const [start] = useState(() => now);\n const isTabActive = useIsTabActive();\n\n useEffect(() => {\n if (!isTabActive || now >= Number(target)) return;\n const timeout = setTimeout(\n () => {\n setNow(Date.now());\n },\n 1000 - ((Date.now() - start) % 1000),\n );\n return () => clearTimeout(timeout);\n }, [start, now, isTabActive, target]);\n\n const isFirstRender = useFirstRender();\n\n if (isFirstRender || now >= Number(target))\n return children(null, isFirstRender);\n return children(\n intervalToDuration({\n start: now,\n end: target,\n }),\n isFirstRender,\n );\n}\n\nexport default TargetCountdown;\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Timeline({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n className={cn(\n \"flex flex-col [&>li:last-child_[data-slot=timeline-connector]]:hidden\",\n className,\n )}\n data-slot=\"timeline\"\n {...props}\n />\n );\n}\n\nfunction TimelineItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n className={cn(\"group/timeline-item flex gap-4\", className)}\n data-slot=\"timeline-item\"\n {...props}\n />\n );\n}\n\n/** The marker column: a dot and the connecting line beneath it. */\nfunction TimelineDot({\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className=\"flex w-7 shrink-0 flex-col items-center\"\n data-slot=\"timeline-marker\"\n >\n <div\n className={cn(\n \"mt-0.5 flex size-3 shrink-0 items-center justify-center rounded-full border-2 border-primary bg-background [&_svg]:size-3.5 has-[svg]:mt-0 has-[svg]:size-7 has-[svg]:border-transparent has-[svg]:bg-primary has-[svg]:text-primary-foreground\",\n className,\n )}\n data-slot=\"timeline-dot\"\n {...props}\n >\n {children}\n </div>\n <div\n className=\"my-1 w-0.5 flex-1 rounded-full bg-border\"\n data-slot=\"timeline-connector\"\n />\n </div>\n );\n}\n\nfunction TimelineContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-1 flex-col gap-1 pb-8 group-last/timeline-item:pb-0\",\n className,\n )}\n data-slot=\"timeline-content\"\n {...props}\n />\n );\n}\n\nfunction TimelineTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"font-medium text-sm leading-tight\", className)}\n data-slot=\"timeline-title\"\n {...props}\n />\n );\n}\n\nfunction TimelineTime({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"font-medium text-muted-foreground text-xs tabular-nums\",\n className,\n )}\n data-slot=\"timeline-time\"\n {...props}\n />\n );\n}\n\nfunction TimelineDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"timeline-description\"\n {...props}\n />\n );\n}\n\nexport {\n Timeline,\n TimelineItem,\n TimelineDot,\n TimelineContent,\n TimelineTitle,\n TimelineTime,\n TimelineDescription,\n};\n","\"use client\";\n\nimport { EditorContent, useEditor } from \"@tiptap/react\";\nimport { BubbleMenu } from \"@tiptap/react/menus\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport type { Editor } from \"@tiptap/core\";\nimport type * as React from \"react\";\nimport {\n AlignCenter,\n AlignJustify,\n AlignLeft,\n AlignRight,\n Bold,\n Italic,\n List,\n ListOrdered,\n Redo2,\n Strikethrough,\n Undo2,\n} from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport {\n Tooltip,\n TooltipPopup,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\n// Inject placeholder + list styles once (client only, idempotent)\nif (typeof window !== \"undefined\") {\n const CSS_ID = \"cc-text-editor\";\n if (!document.getElementById(CSS_ID)) {\n const s = document.createElement(\"style\");\n s.id = CSS_ID;\n s.textContent = [\n \".cc-text-editor .ProseMirror{outline:none}\",\n \".cc-text-editor .ProseMirror p.is-editor-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--muted-foreground);pointer-events:none;height:0}\",\n \".cc-text-editor .ProseMirror ul{list-style-type:disc;padding-left:1.5em}\",\n \".cc-text-editor .ProseMirror ol{list-style-type:decimal;padding-left:1.5em}\",\n \".cc-text-editor .ProseMirror li{margin-top:0.15em}\",\n \".cc-text-editor .ProseMirror > * + *{margin-top:0.4em}\",\n ].join(\"\\n\");\n document.head.appendChild(s);\n }\n}\n\n// ─── Toolbar internals ────────────────────────────────────────────────────────\n\ninterface TBtnProps {\n icon: React.ReactNode;\n label: string;\n onClick?: () => void;\n isActive?: boolean;\n disabled?: boolean;\n compact?: boolean;\n tooltip?: string;\n}\n\nfunction TBtn({ icon, label, onClick, isActive, disabled, compact, tooltip }: TBtnProps) {\n const btnClass = cn(\n \"relative inline-flex shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent outline-none transition-[background-color,box-shadow] duration-100\",\n \"text-muted-foreground hover:bg-accent hover:text-foreground\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background\",\n \"disabled:pointer-events-none disabled:opacity-40\",\n \"data-[active]:bg-accent data-[active]:text-foreground\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n compact ? \"size-6 [&_svg]:size-3\" : \"size-7 [&_svg]:size-3.5\",\n );\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-label={label}\n data-active={isActive ? \"\" : undefined}\n className={btnClass}\n >\n {icon}\n </TooltipTrigger>\n <TooltipPopup>{tooltip}</TooltipPopup>\n </Tooltip>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-label={label}\n data-active={isActive ? \"\" : undefined}\n className={btnClass}\n >\n {icon}\n </button>\n );\n}\n\nfunction TSep() {\n return <div className=\"mx-0.5 h-4 w-px shrink-0 bg-border\" />;\n}\n\ninterface ToolbarButtonsProps {\n editor: Editor | null;\n compact?: boolean;\n withTooltips?: boolean;\n}\n\nfunction ToolbarButtons({ editor, compact, withTooltips }: ToolbarButtonsProps) {\n if (!editor) return null;\n const t = (label: string) => (withTooltips ? label : undefined);\n\n return (\n <>\n <TBtn\n icon={<Undo2 />}\n label=\"Undo\"\n tooltip={t(\"Undo\")}\n compact={compact}\n onClick={() => editor.chain().focus().undo().run()}\n disabled={!editor.can().undo()}\n />\n <TBtn\n icon={<Redo2 />}\n label=\"Redo\"\n tooltip={t(\"Redo\")}\n compact={compact}\n onClick={() => editor.chain().focus().redo().run()}\n disabled={!editor.can().redo()}\n />\n <TSep />\n <TBtn\n icon={<Bold />}\n label=\"Bold\"\n tooltip={t(\"Bold\")}\n compact={compact}\n isActive={editor.isActive(\"bold\")}\n onClick={() => editor.chain().focus().toggleBold().run()}\n />\n <TBtn\n icon={<Italic />}\n label=\"Italic\"\n tooltip={t(\"Italic\")}\n compact={compact}\n isActive={editor.isActive(\"italic\")}\n onClick={() => editor.chain().focus().toggleItalic().run()}\n />\n <TBtn\n icon={<Strikethrough />}\n label=\"Strikethrough\"\n tooltip={t(\"Strikethrough\")}\n compact={compact}\n isActive={editor.isActive(\"strike\")}\n onClick={() => editor.chain().focus().toggleStrike().run()}\n />\n <TSep />\n <TBtn\n icon={<List />}\n label=\"Bullet list\"\n tooltip={t(\"Bullet list\")}\n compact={compact}\n isActive={editor.isActive(\"bulletList\")}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n />\n <TBtn\n icon={<ListOrdered />}\n label=\"Ordered list\"\n tooltip={t(\"Ordered list\")}\n compact={compact}\n isActive={editor.isActive(\"orderedList\")}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n />\n <TSep />\n <TBtn\n icon={<AlignLeft />}\n label=\"Align left\"\n tooltip={t(\"Align left\")}\n compact={compact}\n isActive={editor.isActive({ textAlign: \"left\" })}\n onClick={() => editor.chain().focus().setTextAlign(\"left\").run()}\n />\n <TBtn\n icon={<AlignCenter />}\n label=\"Align center\"\n tooltip={t(\"Align center\")}\n compact={compact}\n isActive={editor.isActive({ textAlign: \"center\" })}\n onClick={() => editor.chain().focus().setTextAlign(\"center\").run()}\n />\n <TBtn\n icon={<AlignRight />}\n label=\"Align right\"\n tooltip={t(\"Align right\")}\n compact={compact}\n isActive={editor.isActive({ textAlign: \"right\" })}\n onClick={() => editor.chain().focus().setTextAlign(\"right\").run()}\n />\n <TBtn\n icon={<AlignJustify />}\n label=\"Justify\"\n tooltip={t(\"Justify\")}\n compact={compact}\n isActive={editor.isActive({ textAlign: \"justify\" })}\n onClick={() => editor.chain().focus().setTextAlign(\"justify\").run()}\n />\n </>\n );\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\nexport interface TextEditorProps {\n /** Compact (sm) or standard (md) size */\n size?: \"sm\" | \"md\";\n /** Placeholder when the editor is empty */\n placeholder?: string;\n /** Initial HTML content */\n content?: string;\n /** Called with the updated HTML on every change */\n onChange?: (html: string) => void;\n /** Show tooltips on every toolbar button */\n withTooltips?: boolean;\n /** Replace the fixed toolbar with a selection-triggered floating toolbar */\n floatingToolbar?: boolean;\n /** Extra className for the outer wrapper */\n className?: string;\n}\n\nexport function TextEditor({\n size = \"md\",\n placeholder = \"Start typing...\",\n content,\n onChange,\n withTooltips = false,\n floatingToolbar = false,\n className,\n}: TextEditorProps) {\n const editor = useEditor(\n {\n immediatelyRender: false,\n extensions: [\n StarterKit,\n TextAlign.configure({ types: [\"heading\", \"paragraph\"] }),\n Placeholder.configure({\n placeholder,\n emptyEditorClass: \"is-editor-empty\",\n }),\n ],\n content: content ?? \"\",\n onUpdate({ editor: e }) {\n onChange?.(e.getHTML());\n },\n },\n );\n\n const compact = size === \"sm\";\n\n return (\n <TooltipProvider>\n <div\n data-slot=\"text-editor\"\n className={cn(\n \"cc-text-editor relative overflow-hidden rounded-xl border border-input bg-background\",\n \"not-dark:bg-clip-padding shadow-xs/5\",\n className,\n )}\n >\n {/* Fixed toolbar */}\n {!floatingToolbar && (\n <div\n className={cn(\n \"flex flex-wrap items-center gap-0.5 border-b border-input\",\n compact ? \"px-1.5 py-1\" : \"px-2 py-1.5\",\n )}\n >\n <ToolbarButtons editor={editor} compact={compact} withTooltips={withTooltips} />\n </div>\n )}\n\n {/* Floating (bubble) toolbar — appears on text selection */}\n {floatingToolbar && editor && (\n <BubbleMenu\n editor={editor}\n className={cn(\n \"flex items-center gap-0.5 rounded-lg border border-input bg-popover not-dark:bg-clip-padding p-1\",\n \"relative shadow-md/8 before:pointer-events-none before:absolute before:inset-0\",\n \"before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)]\",\n )}\n >\n <ToolbarButtons editor={editor} compact withTooltips={withTooltips} />\n </BubbleMenu>\n )}\n\n {/* Editor content */}\n <EditorContent\n editor={editor}\n className={cn(\n \"text-foreground\",\n compact\n ? \"[&_.ProseMirror]:min-h-24 [&_.ProseMirror]:px-3 [&_.ProseMirror]:py-2 [&_.ProseMirror]:text-sm\"\n : \"[&_.ProseMirror]:min-h-36 [&_.ProseMirror]:px-4 [&_.ProseMirror]:py-3 [&_.ProseMirror]:text-sm\",\n )}\n />\n </div>\n </TooltipProvider>\n );\n}\n","\"use client\";\n\nimport { Toast } from \"@base-ui/react/toast\";\nimport {\n CircleAlertIcon,\n CircleCheckIcon,\n InfoIcon,\n LoaderCircleIcon,\n TriangleAlertIcon,\n} from \"lucide-react\";\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"../../lib/utils/css\";\n\nconst toastManager = Toast.createToastManager();\nconst anchoredToastManager = Toast.createToastManager();\n\nconst TOAST_ICONS = {\n error: CircleAlertIcon,\n info: InfoIcon,\n loading: LoaderCircleIcon,\n success: CircleCheckIcon,\n warning: TriangleAlertIcon,\n} as const;\n\ntype ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\ninterface ToastProviderProps extends Toast.Provider.Props {\n position?: ToastPosition;\n}\n\nfunction ToastProvider({\n children,\n position = \"bottom-right\",\n ...props\n}: ToastProviderProps) {\n return (\n <Toast.Provider toastManager={toastManager} {...props}>\n {children}\n <Toasts position={position} />\n </Toast.Provider>\n );\n}\n\nfunction Toasts({ position = \"bottom-right\" }: { position: ToastPosition }) {\n const { toasts } = Toast.useToastManager();\n const isTop = position.startsWith(\"top\");\n\n return (\n <Toast.Portal data-slot=\"toast-portal\">\n <Toast.Viewport\n className={cn(\n \"fixed z-60 mx-auto flex w-[calc(100%-var(--toast-inset)*2)] max-w-90 [--toast-inset:--spacing(4)] sm:[--toast-inset:--spacing(8)]\",\n // Vertical positioning\n \"data-[position*=top]:top-(--toast-inset)\",\n \"data-[position*=bottom]:bottom-(--toast-inset)\",\n // Horizontal positioning\n \"data-[position*=left]:left-(--toast-inset)\",\n \"data-[position*=right]:right-(--toast-inset)\",\n \"data-[position*=center]:-translate-x-1/2 data-[position*=center]:left-1/2\",\n )}\n data-position={position}\n data-slot=\"toast-viewport\"\n >\n {toasts.map((toast) => {\n const Icon = toast.type\n ? TOAST_ICONS[toast.type as keyof typeof TOAST_ICONS]\n : null;\n\n return (\n <Toast.Root\n className={cn(\n \"absolute z-[calc(9999-var(--toast-index))] h-(--toast-calc-height) w-full select-none rounded-lg border bg-popover not-dark:bg-clip-padding text-popover-foreground shadow-lg/5 [transition:transform_.5s_cubic-bezier(.22,1,.36,1),opacity_.5s,height_.15s] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n // Base positioning using data-position\n \"data-[position*=right]:right-0 data-[position*=right]:left-auto\",\n \"data-[position*=left]:right-auto data-[position*=left]:left-0\",\n \"data-[position*=center]:right-0 data-[position*=center]:left-0\",\n \"data-[position*=top]:top-0 data-[position*=top]:bottom-auto data-[position*=top]:origin-top\",\n \"data-[position*=bottom]:top-auto data-[position*=bottom]:bottom-0 data-[position*=bottom]:origin-bottom\",\n // Gap fill for hover\n \"after:absolute after:left-0 after:h-[calc(var(--toast-gap)+1px)] after:w-full\",\n \"data-[position*=top]:after:top-full\",\n \"data-[position*=bottom]:after:bottom-full\",\n // Define some variables\n \"[--toast-calc-height:var(--toast-frontmost-height,var(--toast-height))] [--toast-gap:--spacing(3)] [--toast-peek:--spacing(3)] [--toast-scale:calc(max(0,1-(var(--toast-index)*.1)))] [--toast-shrink:calc(1-var(--toast-scale))]\",\n // Define offset-y variable\n \"data-[position*=top]:[--toast-calc-offset-y:calc(var(--toast-offset-y)+var(--toast-index)*var(--toast-gap)+var(--toast-swipe-movement-y))]\",\n \"data-[position*=bottom]:[--toast-calc-offset-y:calc(var(--toast-offset-y)*-1+var(--toast-index)*var(--toast-gap)*-1+var(--toast-swipe-movement-y))]\",\n // Default state transform\n \"data-[position*=top]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--toast-peek))+(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]\",\n \"data-[position*=bottom]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--toast-peek))-(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]\",\n // Limited state\n \"data-limited:opacity-0\",\n // Expanded state\n \"data-expanded:h-(--toast-height)\",\n \"data-position:data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(var(--toast-calc-offset-y))]\",\n // Starting and ending animations\n \"data-[position*=top]:data-starting-style:transform-[translateY(calc(-100%-var(--toast-inset)))]\",\n \"data-[position*=bottom]:data-starting-style:transform-[translateY(calc(100%+var(--toast-inset)))]\",\n \"data-ending-style:opacity-0\",\n // Ending animations (direction-aware)\n \"data-ending-style:not-data-limited:not-data-swipe-direction:transform-[translateY(calc(100%+var(--toast-inset)))]\",\n \"data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]\",\n \"data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]\",\n // Ending animations (expanded)\n \"data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]\",\n )}\n data-position={position}\n key={toast.id}\n swipeDirection={\n position.includes(\"center\")\n ? [isTop ? \"up\" : \"down\"]\n : position.includes(\"left\")\n ? [\"left\", isTop ? \"up\" : \"down\"]\n : [\"right\", isTop ? \"up\" : \"down\"]\n }\n toast={toast}\n >\n <Toast.Content className=\"pointer-events-auto flex items-center justify-between gap-1.5 overflow-hidden px-3.5 py-3 text-sm transition-opacity duration-250 data-behind:not-data-expanded:pointer-events-none data-behind:opacity-0 data-expanded:opacity-100\">\n <div className=\"flex gap-2\">\n {Icon && (\n <div\n className=\"[&>svg]:h-lh [&>svg]:w-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n data-slot=\"toast-icon\"\n >\n <Icon className=\"in-data-[type=loading]:animate-spin in-data-[type=error]:text-destructive in-data-[type=info]:text-info in-data-[type=success]:text-success in-data-[type=warning]:text-warning in-data-[type=loading]:opacity-80\" />\n </div>\n )}\n\n <div className=\"flex flex-col gap-0.5\">\n <Toast.Title\n className=\"font-medium\"\n data-slot=\"toast-title\"\n />\n <Toast.Description\n className=\"text-muted-foreground\"\n data-slot=\"toast-description\"\n />\n </div>\n </div>\n {toast.actionProps && (\n <Toast.Action\n className={buttonVariants({ size: \"xs\" })}\n data-slot=\"toast-action\"\n >\n {toast.actionProps.children}\n </Toast.Action>\n )}\n </Toast.Content>\n </Toast.Root>\n );\n })}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n\nfunction AnchoredToastProvider({ children, ...props }: Toast.Provider.Props) {\n return (\n <Toast.Provider toastManager={anchoredToastManager} {...props}>\n {children}\n <AnchoredToasts />\n </Toast.Provider>\n );\n}\n\nfunction AnchoredToasts() {\n const { toasts } = Toast.useToastManager();\n\n return (\n <Toast.Portal data-slot=\"toast-portal-anchored\">\n <Toast.Viewport\n className=\"outline-none\"\n data-slot=\"toast-viewport-anchored\"\n >\n {toasts.map((toast) => {\n const Icon = toast.type\n ? TOAST_ICONS[toast.type as keyof typeof TOAST_ICONS]\n : null;\n const tooltipStyle =\n (toast.data as { tooltipStyle?: boolean })?.tooltipStyle ?? false;\n const positionerProps = toast.positionerProps;\n\n if (!positionerProps?.anchor) {\n return null;\n }\n\n return (\n <Toast.Positioner\n className=\"z-50 max-w-[min(--spacing(64),var(--available-width))]\"\n data-slot=\"toast-positioner\"\n key={toast.id}\n sideOffset={positionerProps.sideOffset ?? 4}\n toast={toast}\n >\n <Toast.Root\n className={cn(\n \"relative text-balance border bg-popover not-dark:bg-clip-padding text-popover-foreground text-xs transition-[scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n tooltipStyle\n ? \"rounded-md shadow-md/5 before:rounded-[calc(var(--radius-md)-1px)]\"\n : \"rounded-lg shadow-lg/5 before:rounded-[calc(var(--radius-lg)-1px)]\",\n )}\n data-slot=\"toast-popup\"\n toast={toast}\n >\n {tooltipStyle ? (\n <Toast.Content className=\"pointer-events-auto px-2 py-1\">\n <Toast.Title data-slot=\"toast-title\" />\n </Toast.Content>\n ) : (\n <Toast.Content className=\"pointer-events-auto flex items-center justify-between gap-1.5 overflow-hidden px-3.5 py-3 text-sm\">\n <div className=\"flex gap-2\">\n {Icon && (\n <div\n className=\"[&>svg]:h-lh [&>svg]:w-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n data-slot=\"toast-icon\"\n >\n <Icon className=\"in-data-[type=loading]:animate-spin in-data-[type=error]:text-destructive in-data-[type=info]:text-info in-data-[type=success]:text-success in-data-[type=warning]:text-warning in-data-[type=loading]:opacity-80\" />\n </div>\n )}\n\n <div className=\"flex flex-col gap-0.5\">\n <Toast.Title\n className=\"font-medium\"\n data-slot=\"toast-title\"\n />\n <Toast.Description\n className=\"text-muted-foreground\"\n data-slot=\"toast-description\"\n />\n </div>\n </div>\n {toast.actionProps && (\n <Toast.Action\n className={buttonVariants({ size: \"xs\" })}\n data-slot=\"toast-action\"\n >\n {toast.actionProps.children}\n </Toast.Action>\n )}\n </Toast.Content>\n )}\n </Toast.Root>\n </Toast.Positioner>\n );\n })}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n\nexport {\n ToastProvider,\n type ToastPosition,\n toastManager,\n AnchoredToastProvider,\n anchoredToastManager,\n};\n","\"use client\";\n\nimport { Toolbar as ToolbarPrimitive } from \"@base-ui/react/toolbar\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nfunction Toolbar({ className, ...props }: ToolbarPrimitive.Root.Props) {\n return (\n <ToolbarPrimitive.Root\n className={cn(\n \"relative flex gap-2 rounded-xl border bg-card not-dark:bg-clip-padding p-1 text-card-foreground\",\n className,\n )}\n data-slot=\"toolbar\"\n {...props}\n />\n );\n}\n\nfunction ToolbarButton({ className, ...props }: ToolbarPrimitive.Button.Props) {\n return (\n <ToolbarPrimitive.Button\n className={cn(\n \"transition-[box-shadow,background-color,color,filter] duration-150 ease-out [:active:not(:disabled)]:brightness-95\",\n className,\n )}\n data-slot=\"toolbar-button\"\n {...props}\n />\n );\n}\n\nfunction ToolbarLink({ className, ...props }: ToolbarPrimitive.Link.Props) {\n return (\n <ToolbarPrimitive.Link\n className={cn(\n \"transition-[color,opacity] duration-150 ease-out\",\n className,\n )}\n data-slot=\"toolbar-link\"\n {...props}\n />\n );\n}\n\nfunction ToolbarInput({ className, ...props }: ToolbarPrimitive.Input.Props) {\n return (\n <ToolbarPrimitive.Input\n className={cn(className)}\n data-slot=\"toolbar-input\"\n {...props}\n />\n );\n}\n\nfunction ToolbarGroup({ className, ...props }: ToolbarPrimitive.Group.Props) {\n return (\n <ToolbarPrimitive.Group\n className={cn(\"flex items-center gap-1\", className)}\n data-slot=\"toolbar-group\"\n {...props}\n />\n );\n}\n\nfunction ToolbarSeparator({\n className,\n ...props\n}: ToolbarPrimitive.Separator.Props) {\n return (\n <ToolbarPrimitive.Separator\n className={cn(\n \"shrink-0 bg-border data-[orientation=horizontal]:my-0.5 data-[orientation=vertical]:my-1.5 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:not-[[class^='h-']]:not-[[class*='_h-']]:self-stretch\",\n className,\n )}\n data-slot=\"toolbar-separator\"\n {...props}\n />\n );\n}\n\nexport {\n Toolbar,\n ToolbarGroup,\n ToolbarSeparator,\n ToolbarButton,\n ToolbarLink,\n ToolbarInput,\n};\n","\"use client\";\n\nimport { Transition } from \"@headlessui/react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport type React from \"react\";\nimport {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport useResizeObserver from \"use-resize-observer\";\nimport useCallbackRef from \"../../lib/hooks/use-callback-ref\";\nimport { useHover } from \"../../lib/hooks/use-hover\";\nimport { cn } from \"../../lib/utils/css\";\nimport type { AsChildProps } from \"../../types/helpers\";\n\ninterface VerticalScrollFaderContextValue {\n isTopOverflowing: boolean;\n isBottomOverflowing: boolean;\n containerRef: React.RefObject<HTMLElement | null>;\n onScroll: () => void;\n}\n\nconst VerticalScrollFaderContext =\n createContext<VerticalScrollFaderContextValue>({\n isTopOverflowing: false,\n isBottomOverflowing: false,\n containerRef: { current: null },\n onScroll: () => {},\n });\n\nconst getScrollDirection = (element: HTMLElement) =>\n getComputedStyle(element).flexDirection === \"column-reverse\" ? -1 : 1;\n\nfunction VerticalScrollFaderInner(\n { asChild, ...props }: AsChildProps<\"div\">,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const containerRef = useRef<HTMLElement>(null);\n\n const [isTopOverflowing, setIsTopOverflowing] = useState(false);\n const [isBottomOverflowing, setIsBottomOverflowing] = useState(false);\n\n const onScroll = useCallbackRef(() => {\n if (!containerRef.current) return;\n\n const { scrollTop, scrollHeight, clientHeight } = containerRef.current;\n const scrollDirection = getScrollDirection(containerRef.current!);\n setIsTopOverflowing(\n scrollDirection > 0\n ? Math.floor(scrollTop - 1) > 0\n : Math.round(-scrollTop + clientHeight + 1) < scrollHeight,\n );\n setIsBottomOverflowing(\n scrollDirection > 0\n ? Math.round(scrollTop + clientHeight + 1) < scrollHeight\n : Math.floor(-scrollTop - 1) > 0,\n );\n });\n\n const contextValue = useMemo(\n () => ({ isTopOverflowing, isBottomOverflowing, containerRef, onScroll }),\n [isTopOverflowing, isBottomOverflowing, onScroll],\n );\n\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <VerticalScrollFaderContext.Provider value={contextValue}>\n <Slot className=\"relative\" onScroll={onScroll}>\n <Comp ref={ref} {...props} />\n </Slot>\n </VerticalScrollFaderContext.Provider>\n );\n}\n\nconst VerticalScrollFader = forwardRef(VerticalScrollFaderInner);\n\nfunction VerticalScrollFaderContentInner(\n {\n asChild,\n faderSize = \"3rem\",\n showScrollbar,\n ...props\n }: AsChildProps<\"div\"> & {\n faderSize?: string;\n showScrollbar?: boolean;\n },\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const Comp = asChild ? Slot : \"div\";\n const { isTopOverflowing, isBottomOverflowing, containerRef, onScroll } =\n useContext(VerticalScrollFaderContext);\n\n useResizeObserver({\n ref: containerRef as React.RefObject<Element>,\n onResize: onScroll,\n });\n\n // A single vertical mask gradient fades the top and bottom edges over their\n // fader sizes. An edge that isn't overflowing has a 0 fader size, so it shows\n // no fade. Inline styles (with -webkit- for Safari) keep this independent of\n // Tailwind mask-utility emission.\n const maskImage = `linear-gradient(to bottom, transparent 0, #000 var(--top-fader-size), #000 calc(100% - var(--bottom-fader-size)), transparent 100%)`;\n\n return (\n <Slot\n onScroll={onScroll}\n className={cn(\n \"overflow-auto [transition:--top-fader-size_150ms,--bottom-fader-size_150ms]\",\n !showScrollbar &&\n \"[scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n )}\n style={{\n \"--fader-size\": faderSize,\n \"--top-fader-size\": isTopOverflowing ? \"var(--fader-size)\" : \"0rem\",\n \"--bottom-fader-size\": isBottomOverflowing\n ? \"var(--fader-size)\"\n : \"0rem\",\n maskImage,\n WebkitMaskImage: maskImage,\n }}\n ref={containerRef}\n >\n <Comp ref={ref} {...props} />\n </Slot>\n );\n}\n\nconst VerticalScrollFaderContent = forwardRef(VerticalScrollFaderContentInner);\n\nfunction VerticalScrollFaderTopScrollerInner(\n { asChild, ...props }: AsChildProps<\"button\">,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const Comp = asChild ? Slot : \"button\";\n const { containerRef, isTopOverflowing } = useContext(\n VerticalScrollFaderContext,\n );\n const onClick = useCallbackRef(() => {\n if (!containerRef.current) return;\n containerRef.current.scrollBy({\n top: -containerRef.current.clientHeight,\n behavior: \"smooth\",\n });\n });\n\n const [hoverRef, hovered] = useHover<HTMLElement>({\n mounted: isTopOverflowing,\n });\n useEffect(() => {\n if (!hovered || !isTopOverflowing) return;\n let stopped = false;\n let animationFrameId: number;\n let startTime: DOMHighResTimeStamp;\n\n const animate = (timestamp: DOMHighResTimeStamp) => {\n if (stopped) return;\n if (!startTime) startTime = timestamp;\n const elapsed = Math.min(timestamp - startTime, 2000);\n containerRef.current?.scrollBy({\n top: -Math.log2(elapsed + 1),\n });\n animationFrameId = requestAnimationFrame(animate);\n };\n animationFrameId = requestAnimationFrame(animate);\n\n return () => {\n stopped = true;\n cancelAnimationFrame(animationFrameId);\n };\n }, [hovered, isTopOverflowing, containerRef.current?.scrollBy]);\n\n return (\n <Transition show={isTopOverflowing}>\n <Slot onClick={onClick} ref={hoverRef}>\n <Comp {...(asChild ? {} : { type: \"button\" })} ref={ref} {...props} />\n </Slot>\n </Transition>\n );\n}\n\nconst VerticalScrollFaderTopScroller = forwardRef(\n VerticalScrollFaderTopScrollerInner,\n);\n\nfunction VerticalScrollFaderBottomScrollerInner(\n { asChild, ...props }: AsChildProps<\"button\">,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const Comp = asChild ? Slot : \"button\";\n const { containerRef, isBottomOverflowing } = useContext(\n VerticalScrollFaderContext,\n );\n const onClick = useCallbackRef(() => {\n if (!containerRef.current) return;\n containerRef.current.scrollBy({\n top: containerRef.current.clientHeight,\n behavior: \"smooth\",\n });\n });\n const [hoverRef, hovered] = useHover({\n mounted: isBottomOverflowing,\n });\n useEffect(() => {\n if (!hovered || !isBottomOverflowing) return;\n let stopped = false;\n let animationFrameId: number;\n let startTime: DOMHighResTimeStamp;\n\n const animate = (timestamp: DOMHighResTimeStamp) => {\n if (stopped) return;\n if (!startTime) startTime = timestamp;\n const elapsed = Math.min(timestamp - startTime, 2000);\n containerRef.current?.scrollBy({\n top: Math.log2(elapsed + 1),\n });\n animationFrameId = requestAnimationFrame(animate);\n };\n animationFrameId = requestAnimationFrame(animate);\n\n return () => {\n stopped = true;\n cancelAnimationFrame(animationFrameId);\n };\n }, [hovered, isBottomOverflowing, containerRef.current?.scrollBy]);\n\n return (\n <Transition show={isBottomOverflowing}>\n <Slot onClick={onClick} ref={hoverRef}>\n <Comp {...(asChild ? {} : { type: \"button\" })} ref={ref} {...props} />\n </Slot>\n </Transition>\n );\n}\n\nconst VerticalScrollFaderBottomScroller = forwardRef(\n VerticalScrollFaderBottomScrollerInner,\n);\n\nexport {\n VerticalScrollFader,\n VerticalScrollFaderContent,\n VerticalScrollFaderTopScroller,\n VerticalScrollFaderBottomScroller,\n};\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n Maximize2Icon,\n Minimize2Icon,\n PauseIcon,\n PlayIcon,\n Volume2Icon,\n VolumeXIcon,\n} from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\n\nconst videoPlayerVariants = cva(\n \"group relative overflow-hidden rounded-2xl bg-black ring-1 ring-inset ring-white/10\",\n {\n defaultVariants: { size: \"md\" },\n variants: {\n size: {\n sm: \"w-full max-w-xs\",\n md: \"w-full max-w-lg\",\n lg: \"w-full max-w-2xl\",\n },\n },\n },\n);\n\ninterface VideoPlayerProps\n extends Omit<React.ComponentProps<\"div\">, \"title\">,\n VariantProps<typeof videoPlayerVariants> {\n src: string;\n poster?: string;\n title?: string;\n autoPlay?: boolean;\n loop?: boolean;\n}\n\nfunction VideoPlayer({\n className,\n size,\n src,\n poster,\n title,\n autoPlay = false,\n loop = false,\n ...props\n}: VideoPlayerProps) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const videoRef = React.useRef<HTMLVideoElement>(null);\n const hideTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const [playing, setPlaying] = React.useState(false);\n const [currentTime, setCurrentTime] = React.useState(0);\n const [duration, setDuration] = React.useState(0);\n const [muted, setMuted] = React.useState(false);\n const [fullscreen, setFullscreen] = React.useState(false);\n const [controlsVisible, setControlsVisible] = React.useState(true);\n\n const clearHideTimer = () => {\n if (hideTimerRef.current) clearTimeout(hideTimerRef.current);\n };\n\n const scheduleHide = React.useCallback(() => {\n clearHideTimer();\n hideTimerRef.current = setTimeout(() => setControlsVisible(false), 2500);\n }, []);\n\n React.useEffect(() => () => clearHideTimer(), []);\n\n React.useEffect(() => {\n if (!playing) {\n clearHideTimer();\n setControlsVisible(true);\n }\n }, [playing]);\n\n React.useEffect(() => {\n const handler = () => setFullscreen(!!document.fullscreenElement);\n document.addEventListener(\"fullscreenchange\", handler);\n return () => document.removeEventListener(\"fullscreenchange\", handler);\n }, []);\n\n const handleMouseMove = () => {\n setControlsVisible(true);\n if (playing) scheduleHide();\n };\n\n const handleMouseLeave = () => {\n if (playing) setControlsVisible(false);\n };\n\n const togglePlay = () => {\n const v = videoRef.current;\n if (!v) return;\n if (v.paused) {\n v.play();\n } else {\n v.pause();\n }\n };\n\n const handleSeek = (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = videoRef.current;\n if (!v) return;\n const t = Number(e.target.value);\n v.currentTime = t;\n setCurrentTime(t);\n };\n\n const toggleMute = () => {\n const v = videoRef.current;\n if (!v) return;\n v.muted = !v.muted;\n setMuted(v.muted);\n };\n\n const toggleFullscreen = () => {\n const el = containerRef.current;\n if (!el) return;\n if (!document.fullscreenElement) {\n el.requestFullscreen().catch(() => {});\n } else {\n document.exitFullscreen().catch(() => {});\n }\n };\n\n const formatTime = (s: number) => {\n if (!isFinite(s) || s < 0) return \"0:00\";\n const m = Math.floor(s / 60);\n const sec = Math.floor(s % 60);\n return `${m}:${sec.toString().padStart(2, \"0\")}`;\n };\n\n const progress = duration > 0 ? (currentTime / duration) * 100 : 0;\n\n return (\n <div\n ref={containerRef}\n className={cn(videoPlayerVariants({ size }), className)}\n data-slot=\"video-player\"\n onMouseLeave={handleMouseLeave}\n onMouseMove={handleMouseMove}\n {...props}\n >\n {/* Video */}\n <video\n ref={videoRef}\n autoPlay={autoPlay}\n className=\"aspect-video w-full object-cover\"\n loop={loop}\n playsInline\n poster={poster}\n src={src}\n onEnded={() => setPlaying(false)}\n onLoadedMetadata={() => {\n const v = videoRef.current;\n if (v) setDuration(v.duration);\n }}\n onPause={() => setPlaying(false)}\n onPlay={() => {\n setPlaying(true);\n scheduleHide();\n }}\n onTimeUpdate={() => {\n const v = videoRef.current;\n if (v) setCurrentTime(v.currentTime);\n }}\n onClick={togglePlay}\n />\n\n {/* Center play overlay — visible when paused */}\n {!playing && (\n <button\n className=\"absolute inset-0 flex cursor-pointer items-center justify-center bg-black/20\"\n data-slot=\"video-player-overlay\"\n type=\"button\"\n onClick={togglePlay}\n >\n <span className=\"flex size-14 items-center justify-center rounded-full bg-white/90 text-black shadow-lg ring-1 ring-inset ring-white/20 backdrop-blur-sm transition-transform hover:scale-105\">\n <PlayIcon className=\"size-5 translate-x-0.5\" />\n </span>\n </button>\n )}\n\n {/* Controls */}\n <div\n className={cn(\n \"absolute inset-x-0 bottom-0 flex flex-col gap-2 bg-gradient-to-t from-black/70 via-black/30 to-transparent px-3 pb-3 pt-10 transition-opacity duration-200\",\n controlsVisible ? \"opacity-100\" : \"opacity-0\",\n )}\n data-slot=\"video-player-controls\"\n >\n {/* Scrubber */}\n <div className=\"relative flex items-center\">\n <div className=\"relative h-1 w-full overflow-hidden rounded-full bg-white/25\">\n <div\n className=\"pointer-events-none h-full rounded-full bg-white\"\n style={{ width: `${progress}%` }}\n />\n </div>\n <input\n aria-label=\"Seek\"\n className=\"absolute inset-0 h-full w-full cursor-pointer opacity-0\"\n max={duration || 100}\n min={0}\n step={0.1}\n type=\"range\"\n value={currentTime}\n onChange={handleSeek}\n />\n </div>\n\n {/* Button row */}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-0.5\">\n <button\n aria-label={playing ? \"Pause\" : \"Play\"}\n className=\"flex size-7 items-center justify-center rounded-md text-white/80 transition-colors hover:bg-white/10 hover:text-white\"\n type=\"button\"\n onClick={togglePlay}\n >\n {playing ? (\n <PauseIcon className=\"size-4\" />\n ) : (\n <PlayIcon className=\"size-4\" />\n )}\n </button>\n\n <button\n aria-label={muted ? \"Unmute\" : \"Mute\"}\n className=\"flex size-7 items-center justify-center rounded-md text-white/80 transition-colors hover:bg-white/10 hover:text-white\"\n type=\"button\"\n onClick={toggleMute}\n >\n {muted ? (\n <VolumeXIcon className=\"size-4\" />\n ) : (\n <Volume2Icon className=\"size-4\" />\n )}\n </button>\n\n <span className=\"select-none pl-1 text-[11px] tabular-nums text-white/60\">\n {formatTime(currentTime)} / {formatTime(duration)}\n </span>\n </div>\n\n <div className=\"flex items-center gap-1.5\">\n {title ? (\n <span className=\"max-w-28 truncate text-[11px] font-medium text-white/50\">\n {title}\n </span>\n ) : null}\n\n <button\n aria-label={fullscreen ? \"Exit fullscreen\" : \"Enter fullscreen\"}\n className=\"flex size-7 items-center justify-center rounded-md text-white/80 transition-colors hover:bg-white/10 hover:text-white\"\n type=\"button\"\n onClick={toggleFullscreen}\n >\n {fullscreen ? (\n <Minimize2Icon className=\"size-4\" />\n ) : (\n <Maximize2Icon className=\"size-4\" />\n )}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport { VideoPlayer, videoPlayerVariants };\n","import { Slot, Slottable } from \"@radix-ui/react-slot\";\nimport clsx from \"clsx\";\nimport { isValidElement } from \"react\";\nimport type { AsChildProps } from \"../../types/helpers\";\n\ninterface DashboardHeaderProps extends Omit<AsChildProps<\"div\">, \"title\"> {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n rightActions?: React.ReactNode;\n breadcrumb?: React.ReactNode;\n}\n\nexport function DashboardHeader({\n title,\n subtitle,\n className,\n children,\n asChild,\n rightActions,\n breadcrumb,\n ...props\n}: DashboardHeaderProps) {\n const TitleComp = isValidElement(title) ? Slot : \"div\";\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n className={clsx(\"flex flex-col border-b rounded-t-lg\", className)}\n {...props}\n >\n <div className={clsx(\"flex flex-col gap-4 p-4\")}>\n {breadcrumb}\n {(title || subtitle || rightActions) && (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-3 min-h-8\">\n {title && (\n <TitleComp className=\"grow min-w-0 text-lg font-medium leading-7 tracking-[-0.18px] text-foreground\">\n {title}\n </TitleComp>\n )}\n {rightActions}\n </div>\n {subtitle && (\n <div className=\"hidden md:block text-sm font-normal leading-5 text-muted-foreground\">\n {subtitle}\n </div>\n )}\n </div>\n )}\n <Slottable>{children}</Slottable>\n </div>\n </Comp>\n );\n}\n","import { Slot } from \"@radix-ui/react-slot\";\nimport clsx from \"clsx\";\nimport type { AsChildProps } from \"../../types/helpers\";\nimport { ScrollArea } from \"../ui/scroll-area\";\n\ninterface DashboardPanelProps extends AsChildProps<\"div\"> {\n header?: React.ReactNode;\n}\n\nexport function DashboardPanel({\n className,\n asChild,\n children,\n header,\n ...props\n}: DashboardPanelProps) {\n const Comp = asChild ? Slot : \"div\";\n return (\n <Comp\n className={clsx(\n \"flex flex-col grow min-h-0 min-w-0 bg-background rounded border\",\n className,\n )}\n {...props}\n >\n {header}\n <ScrollArea className=\"flex grow flex-col min-h-0 *:data-[slot=scroll-area-viewport]:p-4\">\n {children}\n </ScrollArea>\n </Comp>\n );\n}\n\nexport default DashboardPanel;\n","\"use client\";\n\nimport { LifeBuoy, LogOut, Search, Settings } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils/css\";\nimport { AnimatedThemeToggler } from \"../ui/animated-theme-toggler\";\nimport { Avatar } from \"../ui/avatar\";\nimport { Button } from \"../ui/button\";\nimport { Kbd, KbdGroup } from \"../ui/kbd\";\nimport {\n Menu,\n MenuItem,\n MenuPopup,\n MenuSeparator,\n MenuTrigger,\n} from \"../ui/menu\";\nimport { SidebarTrigger } from \"../ui/sidebar\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../ui/tooltip\";\n\nexport interface DashboardTopbarUser {\n /** Display name, shown in the account menu and used as the avatar alt text. */\n name: string;\n /** Optional email, shown under the name in the account menu. */\n email?: string;\n /** Optional avatar image URL. Falls back to initials when omitted. */\n avatarSrc?: string;\n /** Initials shown when there is no avatar image. */\n initials?: string;\n}\n\nexport interface DashboardTopbarProps {\n /** The signed-in user rendered in the account menu + avatar trigger. */\n user: DashboardTopbarUser;\n /** Opens the consumer's command palette. The search field is a button. */\n onSearch?: () => void;\n /** Placeholder text inside the search affordance. Defaults to \"Search\". */\n searchPlaceholder?: string;\n /**\n * Trailing shortcut hint inside the search affordance. Defaults to\n * `<KbdGroup><Kbd>⌘</Kbd><Kbd>K</Kbd></KbdGroup>`. Pass `null` to hide it.\n */\n searchShortcut?: React.ReactNode;\n /** Account-menu \"Settings\" item handler. The item is omitted when undefined. */\n onSettings?: () => void;\n /** Account-menu \"Log out\" item handler. The item is omitted when undefined. */\n onLogout?: () => void;\n /** mailto/url for the support icon button. The button renders only when set. */\n supportHref?: string;\n /** Whether to render the animated light/dark theme toggle. Defaults to `true`. */\n showThemeToggle?: boolean;\n /** Optional extra controls rendered left of the theme toggle. */\n actions?: React.ReactNode;\n className?: string;\n}\n\nconst defaultSearchShortcut = (\n <KbdGroup className=\"absolute right-3 top-1/2 hidden -translate-y-1/2 sm:inline-flex\">\n <Kbd>⌘</Kbd>\n <Kbd>K</Kbd>\n </KbdGroup>\n);\n\n/**\n * Dashboard top bar shared by the host and sponsor dashboards.\n *\n * Zones: mobile/desktop sidebar trigger · a global search field styled as an\n * input that calls `onSearch` (the consumer owns the command palette + ⌘K key\n * handler) · optional extra `actions` · the animated theme toggle · an optional\n * support link · the account menu (Settings / Log out). The inner row shares a\n * `max-w-[1280px]` wrapper so the search field and avatar line up with the page.\n */\nexport function DashboardTopbar({\n user,\n onSearch,\n searchPlaceholder = \"Search\",\n searchShortcut = defaultSearchShortcut,\n onSettings,\n onLogout,\n supportHref,\n showThemeToggle = true,\n actions,\n className,\n}: DashboardTopbarProps) {\n return (\n <header\n data-slot=\"dashboard-topbar\"\n className={cn(\"h-16 flex-shrink-0 bg-page-bg\", className)}\n >\n <div className=\"mx-auto flex h-full max-w-[1280px] items-center gap-2 px-4 sm:gap-3 sm:px-6 md:gap-4 md:px-8\">\n {/* Sidebar toggle — collapse/open the navigation. */}\n <SidebarTrigger\n aria-label=\"Toggle navigation\"\n className=\"size-10 border border-input bg-background sm:size-9\"\n />\n\n {/* Search — looks like an input, opens the consumer's command palette. */}\n <button\n type=\"button\"\n onClick={onSearch}\n aria-label={searchPlaceholder}\n className=\"group min-w-0 max-w-xl flex-1 outline-none\"\n >\n <span className=\"relative flex h-10 w-full items-center rounded-lg border border-input bg-background pl-10 pr-3 text-sm text-muted-foreground transition-colors group-hover:bg-accent/50 group-focus-visible:ring-2 group-focus-visible:ring-ring sm:pr-16\">\n <Search\n className=\"absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground\"\n strokeWidth={2}\n />\n {searchPlaceholder}\n {searchShortcut}\n </span>\n </button>\n\n {/* Right cluster */}\n <div className=\"ml-auto flex flex-shrink-0 items-center gap-2 sm:gap-3\">\n {actions}\n\n {/* Theme toggle. The toggler is anchored inside a wrapper span rather\n than being the TooltipTrigger's render target directly:\n AnimatedThemeToggler spreads incoming props (including the ref Base\n UI injects) AFTER its own `ref={buttonRef}`, so making it the\n trigger clobbers that ref — and its click handler bails out on\n `if (!buttonRef.current) return`, so the theme never flips.\n Wrapping keeps the toggler's own ref + onClick intact while the\n span carries the tooltip. */}\n {showThemeToggle ? (\n <Tooltip>\n <TooltipTrigger render={<span className=\"inline-flex\" />}>\n <AnimatedThemeToggler\n aria-label=\"Toggle light / dark theme\"\n className=\"size-10 border border-input bg-background sm:size-9\"\n variant=\"circle\"\n />\n </TooltipTrigger>\n <TooltipContent>Toggle light / dark theme</TooltipContent>\n </Tooltip>\n ) : null}\n\n {/* Support */}\n {supportHref ? (\n <Tooltip>\n <TooltipTrigger\n render={\n <Button\n aria-label=\"Contact support\"\n className=\"hidden sm:inline-flex\"\n render={<a href={supportHref} />}\n size=\"icon-lg\"\n variant=\"outline\"\n >\n <LifeBuoy strokeWidth={1.8} />\n </Button>\n }\n />\n <TooltipContent>Contact support</TooltipContent>\n </Tooltip>\n ) : null}\n\n {/* Account menu */}\n <Menu>\n <MenuTrigger\n render={\n <button\n type=\"button\"\n aria-label={`Account menu — signed in as ${user.name}`}\n className=\"rounded-full outline-none transition hover:ring-2 hover:ring-ring focus-visible:ring-2 focus-visible:ring-ring\"\n />\n }\n >\n <Avatar\n alt={user.name}\n initials={user.initials}\n size=\"md\"\n src={user.avatarSrc}\n />\n </MenuTrigger>\n <MenuPopup\n align=\"end\"\n className=\"w-[min(280px,calc(100vw-32px))]\"\n sideOffset={8}\n >\n <div className=\"flex items-center gap-3 px-2 py-2\">\n <Avatar\n alt=\"\"\n initials={user.initials}\n size=\"md\"\n src={user.avatarSrc}\n />\n <div className=\"min-w-0\">\n <p className=\"truncate text-sm font-semibold text-foreground\">\n {user.name}\n </p>\n {user.email ? (\n <p className=\"truncate text-xs text-muted-foreground\">\n {user.email}\n </p>\n ) : null}\n </div>\n </div>\n {(onSettings || onLogout) ? <MenuSeparator /> : null}\n {onSettings ? (\n <MenuItem onClick={onSettings}>\n <Settings strokeWidth={1.8} />\n Settings\n </MenuItem>\n ) : null}\n {onLogout ? (\n <MenuItem onClick={onLogout} variant=\"destructive\">\n <LogOut strokeWidth={1.8} />\n Log out\n </MenuItem>\n ) : null}\n </MenuPopup>\n </Menu>\n </div>\n </div>\n </header>\n );\n}\n\nexport default DashboardTopbar;\n","\"use client\";\n\nimport { Progress as ProgressPrimitive } from \"@base-ui/react\";\nimport { Transition } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { CloudUploadIcon, TrashIcon, UserIcon } from \"lucide-react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../ui/avatar\";\nimport { Button } from \"../ui/button\";\nimport { SpinnerOnDemand } from \"../ui/spinner-on-demand\";\n\nexport interface AvatarUploadBaseProps\n extends Omit<React.ComponentProps<typeof Avatar>, \"onDrop\" | \"children\"> {\n onDrop: (file: File) => void;\n onDelete?: () => void;\n disabled?: boolean;\n loading?: boolean;\n progress: number;\n imageUrl: string | undefined;\n initials: React.ReactNode;\n alt: string;\n avatarClassName?: string;\n mode?: \"image\" | \"image&video\";\n}\n\nexport function AvatarUploadBase({\n onDrop,\n onDelete,\n disabled,\n loading = false,\n progress,\n imageUrl,\n initials,\n alt,\n className,\n avatarClassName,\n mode = \"image\",\n ...props\n}: AvatarUploadBaseProps) {\n const {\n getRootProps,\n getInputProps,\n open: onDropOpen,\n isDragActive,\n } = useDropzone({\n onDrop: ([file]) => file && onDrop(file),\n noClick: true,\n accept: {\n \"image/*\": [\".png\", \".jpg\", \".jpeg\", \".gif\", \".webp\"],\n ...(mode === \"image&video\"\n ? { \"video/*\": [\".webm\", \".mp4\"] }\n : undefined),\n },\n multiple: false,\n disabled: disabled || loading,\n });\n const progressValue = Math.trunc(100 * Math.min(1, progress));\n\n return (\n <div\n {...getRootProps()}\n tabIndex={undefined}\n className={clsx(\n \"relative flex items-center gap-3 rounded-full\",\n className,\n )}\n >\n <input {...getInputProps()} />\n <Avatar className={avatarClassName} key={imageUrl} {...props}>\n <AvatarImage src={imageUrl} alt={alt} />\n <AvatarFallback className=\"text-xl\">\n {initials || <UserIcon />}\n </AvatarFallback>\n </Avatar>\n <div className=\"relative flex items-center gap-3 transition\">\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={loading || disabled}\n onClick={onDropOpen}\n className=\"grow relative max-w-55 mx-auto\"\n >\n <SpinnerOnDemand icon={<CloudUploadIcon />} isLoading={loading} />\n Upload\n <Transition\n show={loading}\n as={ProgressPrimitive.Root}\n className=\"absolute inset-0 grow overflow-hidden rounded-[inherit] pointer-events-none\"\n style={{\n // Fix overflow clipping in Safari\n // https://gist.github.com/domske/b66047671c780a238b51c51ffde8d3a0\n transform: \"translateZ(0)\",\n }}\n value={progressValue}\n >\n <ProgressPrimitive.Track className=\"size-full\">\n <ProgressPrimitive.Indicator\n className=\"duration-660 ease-[cubic-bezier(0.65,0,0.35,1)] size-full bg-accent/8 transition-transform\"\n style={{ transform: `translateX(-${100 - progressValue}%)` }}\n />\n </ProgressPrimitive.Track>\n </Transition>\n </Button>\n {imageUrl && onDelete && (\n <Button\n disabled={disabled || loading}\n size=\"icon-sm\"\n variant=\"outline\"\n onClick={onDelete}\n >\n <TrashIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n )}\n </div>\n <Transition\n as=\"div\"\n show={isDragActive}\n className={clsx(\n \"pointer-events-none absolute inset-0 flex flex-col items-center justify-center rounded-2xl transition duration-200 [--opacity:1] data-closed:[--opacity:0]\",\n \"bg-accent/[calc(var(--opacity)*8%)] ring-1 ring-border/[calc(var(--opacity)*100%)] backdrop-blur-[calc(var(--opacity)*var(--blur-sm))]\",\n )}\n >\n <CloudUploadIcon className=\"size-8 text-foreground/[calc(var(--opacity)*100%)] transition-colors\" />\n <p className=\"text-sm font-medium text-foreground/[calc(var(--opacity)*100%)] transition-colors\">\n Drop files here\n </p>\n </Transition>\n </div>\n );\n}\n","\"use client\";\n\nimport { Progress as ProgressPrimitive } from \"@base-ui/react\";\nimport { Transition } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { CloudUploadIcon, TrashIcon } from \"lucide-react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../ui/avatar\";\nimport { Button } from \"../ui/button\";\nimport { SpinnerOnDemand } from \"../ui/spinner-on-demand\";\n\nexport interface ImageUploadBaseProps\n extends Omit<React.ComponentProps<\"div\">, \"onDrop\"> {\n onDrop: (file: File) => void;\n onDelete?: () => void;\n disabled?: boolean;\n loading?: boolean;\n progress: number;\n imageUrl: string | null;\n alt: string;\n}\n\nexport function ImageUploadBase({\n onDrop,\n onDelete,\n disabled,\n loading = false,\n progress,\n imageUrl,\n alt,\n className,\n ...props\n}: ImageUploadBaseProps) {\n const {\n getRootProps,\n getInputProps,\n open: onDropOpen,\n isDragActive,\n } = useDropzone({\n onDrop: ([file]) => file && onDrop(file),\n noClick: true,\n accept: {\n \"image/*\": [\".png\", \".jpg\", \".jpeg\", \".gif\", \".webp\"],\n },\n multiple: false,\n disabled: disabled || loading,\n });\n const progressValue = Math.trunc(100 * Math.min(1, progress));\n\n return (\n <div\n {...getRootProps()}\n tabIndex={undefined}\n data-slot=\"image-upload-root\"\n className={clsx(\n \"group/image-upload-root flex flex-col rounded-lg border-2 p-0.5 border-dashed border-input bg-muted/30 text-center transition-colors hover:border-muted-foreground/40 hover:bg-muted/50 has-data-[active=true]:border-primary/60 has-data-[active=true]:bg-primary/5\",\n className,\n )}\n {...props}\n >\n <div className=\"grow flex flex-col relative rounded-md\">\n <input {...getInputProps()} />\n <Avatar\n key={imageUrl ?? \"none\"}\n className=\"peer/avatar absolute size-full inset-0 rounded-[inherit]\"\n >\n {imageUrl && (\n <AvatarImage key={imageUrl ?? \"none\"} src={imageUrl} alt={alt} />\n )}\n <AvatarFallback className=\"bg-linear-to-br from-muted to-background\" />\n </Avatar>\n <div\n data-active={loading || isDragActive}\n className=\"grow flex justify-center items-center [--opacity:0] p-8 data-[active=true]:[--opacity:1] peer-has-data-[slot=avatar-fallback]/avatar:[--opacity:1] group-hover/image-upload-root:[--opacity:1] relative z-10 rounded-[inherit] bg-background/[calc(55%*var(--opacity))] backdrop-blur-[calc(var(--blur-xs)*var(--opacity))] gap-3 transition\"\n >\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={loading || disabled}\n onClick={onDropOpen}\n className=\"grow relative max-w-32 opacity-(--opacity)\"\n >\n <SpinnerOnDemand icon={<CloudUploadIcon />} isLoading={loading} />\n {isDragActive ? \"Drop files here\" : \"Upload\"}\n <Transition\n show={loading}\n as={ProgressPrimitive.Root}\n className=\"absolute inset-0 opacity-(--opacity) grow overflow-hidden rounded-[inherit] pointer-events-none\"\n value={progressValue}\n >\n <ProgressPrimitive.Track className=\"size-full\">\n <ProgressPrimitive.Indicator className=\"duration-660 ease-[cubic-bezier(0.65,0,0.35,1)] size-full bg-accent/8 transition-all\" />\n </ProgressPrimitive.Track>\n </Transition>\n </Button>\n {imageUrl && onDelete && !isDragActive && (\n <Button\n disabled={disabled || loading}\n size=\"icon-sm\"\n variant=\"outline\"\n onClick={onDelete}\n className=\"opacity-(--opacity)\"\n aria-label=\"Remove\"\n >\n <TrashIcon />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useCallback, useLayoutEffect, useSyncExternalStore } from \"react\";\nimport { create } from \"zustand\";\nimport { useFirstRender } from \"./use-first-render\";\n\nconst breakpoints = [\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"] as const;\ntype Breakpoints = (typeof breakpoints)[number];\n\nconst useBreakpointsStore = create<\n {\n [breakpoint in Breakpoints as `is${Capitalize<breakpoint>}`]: boolean;\n } & {\n [breakpoint in Breakpoints as `setIs${Capitalize<breakpoint>}`]: (\n value: boolean,\n ) => void;\n }\n>((set) => ({\n isSm: false,\n isMd: false,\n isLg: false,\n isXl: false,\n is2xl: false,\n setIsSm: (value: boolean) => set({ isSm: value }),\n setIsMd: (value: boolean) => set({ isMd: value }),\n setIsLg: (value: boolean) => set({ isLg: value }),\n setIsXl: (value: boolean) => set({ isXl: value }),\n setIs2xl: (value: boolean) => set({ is2xl: value }),\n}));\n\nconst getBreakpointValue = (breakpoint: Breakpoints) =>\n getComputedStyle(document.documentElement).getPropertyValue(\n `--breakpoint-${breakpoint}`,\n );\n\nconst setters = {\n sm: \"setIsSm\" as const,\n md: \"setIsMd\" as const,\n lg: \"setIsLg\" as const,\n xl: \"setIsXl\" as const,\n \"2xl\": \"setIs2xl\" as const,\n};\n\nfunction useSyncWithStore(breakpoint: Breakpoints) {\n const setBreakpoint = useBreakpointsStore(\n (state) => state[setters[breakpoint]],\n );\n useLayoutEffect(() => {\n const matchMedia = window.matchMedia(\n `(min-width: ${getBreakpointValue(breakpoint)})`,\n );\n matchMedia.addEventListener(\"change\", () => {\n setBreakpoint(matchMedia.matches);\n });\n setBreakpoint(matchMedia.matches);\n return () => {\n matchMedia.removeEventListener(\"change\", () => {\n setBreakpoint(matchMedia.matches);\n });\n };\n }, [breakpoint, setBreakpoint]);\n}\n\n// It could be lazy\nexport function useSubscribeBreakpoints() {\n useSyncWithStore(\"sm\");\n useSyncWithStore(\"md\");\n useSyncWithStore(\"lg\");\n useSyncWithStore(\"xl\");\n useSyncWithStore(\"2xl\");\n}\n\ninterface UseMediaQueryOptions {\n ssr?: boolean;\n defaultSSRValue?: boolean;\n}\n\nexport function useMediaQuery(\n query: string,\n { ssr = false, defaultSSRValue = false }: UseMediaQueryOptions = {},\n) {\n const subscribe = useCallback(\n (callback: (m: MediaQueryListEvent) => void) => {\n const matchMedia = window.matchMedia(query);\n\n matchMedia.addEventListener(\"change\", callback);\n return () => {\n matchMedia.removeEventListener(\"change\", callback);\n };\n },\n [query],\n );\n\n const getSnapshot = () => window.matchMedia(query).matches;\n\n const getServerSnapshot = () => defaultSSRValue;\n\n const value = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const isFirstRender = useFirstRender();\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return value;\n}\n\nexport function useIsSm({\n ssr = false,\n defaultSSRValue = false,\n}: UseMediaQueryOptions = {}) {\n const isFirstRender = useFirstRender();\n const isSm = useBreakpointsStore((state) => state.isSm);\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return isSm;\n}\n\nexport function useIsMd({\n ssr = false,\n defaultSSRValue = false,\n}: UseMediaQueryOptions = {}) {\n const isFirstRender = useFirstRender();\n const isMd = useBreakpointsStore((state) => state.isMd);\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return isMd;\n}\n\nexport function useIsLg({\n ssr = false,\n defaultSSRValue = false,\n}: UseMediaQueryOptions = {}) {\n const isFirstRender = useFirstRender();\n const isLg = useBreakpointsStore((state) => state.isLg);\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return isLg;\n}\n\nexport function useIsXl({\n ssr = false,\n defaultSSRValue = false,\n}: UseMediaQueryOptions = {}) {\n const isFirstRender = useFirstRender();\n const isXl = useBreakpointsStore((state) => state.isXl);\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return isXl;\n}\n\nexport function useIs2xl({\n ssr = false,\n defaultSSRValue = false,\n}: UseMediaQueryOptions = {}) {\n const isFirstRender = useFirstRender();\n const is2xl = useBreakpointsStore((state) => state.is2xl);\n if (ssr && isFirstRender) {\n return defaultSSRValue;\n }\n return is2xl;\n}\n"]}
|