@siena-ai/design-system 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -0
- package/dist/components.json +22 -0
- package/dist/globals.css +725 -0
- package/dist/index.d.mts +2010 -0
- package/dist/index.d.ts +2010 -0
- package/dist/index.js +11111 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +10717 -0
- package/dist/index.mjs.map +1 -0
- package/dist/postcss.config.mjs +7 -0
- package/package.json +149 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/accordion.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/card.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/resizable.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/separator.tsx","../src/components/ui/button.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/label.tsx","../src/components/ui/form.tsx","../src/components/ui/input.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/password-input.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/kbd.tsx","../src/components/ui/search-input.tsx","../src/components/ui/select.tsx","../src/components/ui/slider.tsx","../src/components/ui/switch.tsx","../src/components/ui/textarea.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/alert.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/calendar.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/progress.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/menubar.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/tabs.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/dialog.tsx","../src/components/ui/drawer.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/popover.tsx","../src/components/ui/sheet.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/command.tsx","../src/components/ui/sonner.tsx","../src/components/ui/spinner.tsx","../src/components/ui/theme-toggle.tsx","../src/components/ui/emoji-picker.tsx","../src/components/ui/icon-select.tsx","../src/components/ui/channel-icons.tsx","../src/hooks/use-mobile.ts","../src/components/ui/sidebar.tsx","../src/components/chat/chat-avatar.tsx","../src/components/chat/typing-indicator.tsx","../src/components/chat/message-actions.tsx","../src/components/chat/model-selector.tsx","../src/components/chat/voice-input.tsx","../src/components/chat/markdown-renderer.tsx","../src/components/chat/streaming-text.tsx","../src/components/chat/message-bubble.tsx","../src/components/chat/tool-call-block.tsx","../src/components/chat/attachment-lightbox.tsx","../src/components/chat/attachment-preview.tsx","../src/components/chat/suggestion-chips.tsx","../src/components/chat/chat-message-list.tsx","../src/components/chat/chat-input.tsx","../src/components/chat/playground-input.tsx","../src/components/chat/tools-popover.tsx","../src/components/chat/attachment-menu.tsx","../src/components/chat/chat-sidebar.tsx","../src/components/chat/chat-header.tsx","../src/components/chat/chat-window.tsx","../src/components/chat/chat-panel.tsx","../src/components/chat/chat-widget.tsx","../src/components/chat/share-dialog.tsx","../src/components/app/data-table.tsx","../src/components/app/empty-state.tsx","../src/components/app/stat-card.tsx","../src/components/app/chart-card.tsx","../src/components/app/filter-dropdown.tsx","../src/components/app/date-range-picker.tsx","../src/components/app/category-filter-chips.tsx","../src/components/app/insight-report.tsx","../src/components/app/report-card.tsx","../src/components/app/sidebar/workspace-selector.tsx","../src/components/app/sidebar/nav-main.tsx","../src/components/app/sidebar/user-menu.tsx","../src/components/app/changelog-sheet.tsx","../src/components/app/sidebar/help-menu.tsx","../src/components/app/sidebar/app-sidebar.tsx","../src/components/app/page-header.tsx","../src/components/app/app-layout.tsx","../src/components/app/api-key-display.tsx","../src/components/app/team-member-list.tsx","../src/components/app/integration-card.tsx","../src/components/marketing/hero.tsx","../src/components/marketing/feature-grid.tsx","../src/components/marketing/product-card.tsx","../src/components/marketing/cta-section.tsx","../src/components/marketing/logo-cloud.tsx","../src/lib/version.ts"],"names":["twMerge","clsx","AccordionPrimitive","jsx","jsxs","ChevronDownIcon","AspectRatioPrimitive","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","Group","Panel","Separator","GripVerticalIcon","ScrollAreaPrimitive","SeparatorPrimitive","cva","Slot","Fragment","Loader2","CheckboxPrimitive","CheckIcon","LabelPrimitive","FormProvider","React","Controller","useFormContext","useFormState","React2","X","OTPInput","React3","OTPInputContext","MinusIcon","React4","EyeOff","Eye","RadioGroupPrimitive","CircleIcon","React5","Search","SelectPrimitive","ChevronUpIcon","React6","SliderPrimitive","SwitchPrimitive","React7","TogglePrimitive","React8","ToggleGroupPrimitive","AvatarPrimitive","getDefaultClassNames","DayPicker","className","props","ChevronLeftIcon","ChevronRightIcon","React9","React10","useEmblaCarousel","api","ArrowLeft","ArrowRight","React11","RechartsPrimitive","config","ProgressPrimitive","ChevronRight","MoreHorizontal","MenubarPrimitive","NavigationMenuPrimitive","MoreHorizontalIcon","React12","TabsPrimitive","AlertDialogPrimitive","ContextMenuPrimitive","DialogPrimitive","XIcon","DrawerPrimitive","DropdownMenuPrimitive","HoverCardPrimitive","PopoverPrimitive","SheetPrimitive","TooltipPrimitive","Tooltip","CommandPrimitive","SearchIcon","useTheme","Sonner","CheckCircle2","Info","AlertTriangle","XCircle","React13","Sun","Moon","React14","Picker","data","ChevronDown","Check","Mail","MessageSquare","Phone","MessagesSquare","Star","MessageCircle","React15","React16","open","PanelLeftIcon","Sparkles","Bot","User","React17","iconSizes","React18","Copy","Pencil","RefreshCw","ThumbsUp","ThumbsDown","buttonSizes","React19","Square","AudioLines","MicOff","ReactMarkdown","remarkGfm","React20","React21","format","React22","AlertCircle","Download","React23","ZoomOut","ZoomIn","RotateCw","formatFileSize","React24","Play","FileText","File","React25","React26","ArrowDown","React27","Upload","Paperclip","ArrowUp","React28","React29","PopoverPrimitive2","React30","Plus","Camera","FolderPlus","BookOpen","Wrench","Calendar","Library","getChannelIcon","Hash","Clock","React31","PanelLeft","PanelLeftClose","formatDistanceToNow","Trash2","Share","Settings","defaultModels","React32","sizeMap","React33","toast","Lock","Globe","Link2","ChevronUp","ChevronsUpDown","React34","useReactTable","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","flexRender","pageSize","sizeClasses","Icon","TrendingUp","TrendingDown","Minus","React35","label","subDays","startOfMonth","subMonths","endOfMonth","React36","formatDateRange","CalendarIcon","React37","Link","React38","CreditCard","Bell","getInitials","LogOut","ExternalLink","React39","Gift","HelpCircle","React40","React41","React42","React43","Users","MoreVertical","Shield","Trash"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:ring-ring/40 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium outline-none hover:underline focus-visible:ring-1 transition-shadow duration-150 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","\"use client\"\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 transition-shadow hover:shadow-soft\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { GripVerticalIcon } from \"lucide-react\"\nimport {\n Group,\n Panel,\n Separator,\n} from \"react-resizable-panels\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof Group>) {\n return (\n <Group\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof Panel>) {\n return <Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof Separator> & {\n withHandle?: boolean\n}) {\n return (\n <Separator\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden 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 {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </Separator>\n )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/40 size-full rounded-[inherit] outline-none focus-visible:ring-1 transition-shadow duration-150 focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","\"use client\"\n\n// ============================================================================\n// BUTTON\n// Unified button component for all interactive actions\n//\n// Usage:\n// <Button>Primary</Button>\n// <Button variant=\"secondary\">Secondary</Button>\n// <Button variant=\"outline\" size=\"sm\">Small Outline</Button>\n// <Button size=\"2xs\">Extra Extra Small</Button>\n// <Button size=\"icon\" aria-label=\"Settings\"><Settings /></Button>\n// <Button loading>Saving...</Button>\n// <Button asChild><Link href=\"/path\">Navigate</Link></Button>\n// ============================================================================\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n// ----------------------------------------------------------------------------\n// Variants\n// ----------------------------------------------------------------------------\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 shrink-0 outline-none focus-visible:ring-ring/40 focus-visible:ring-1\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n outline: \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n ghost: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n destructive: \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n // Text buttons - from smallest to largest\n \"2xs\": \"h-6 px-2 text-xs gap-1 rounded [&_svg]:size-3\",\n xs: \"h-7 px-2.5 text-xs gap-1.5 rounded-md [&_svg]:size-3.5\",\n sm: \"h-8 px-3 text-sm gap-1.5 rounded-md [&_svg]:size-4\",\n default: \"h-9 px-4 text-sm gap-1.5 rounded-md [&_svg]:size-4\",\n lg: \"h-11 px-6 text-base gap-1.5 rounded-md [&_svg]:size-5\",\n // Icon-only buttons (square)\n \"icon-2xs\": \"size-6 rounded [&_svg]:size-3\",\n \"icon-xs\": \"size-7 rounded-md [&_svg]:size-3.5\",\n \"icon-sm\": \"size-8 rounded-md [&_svg]:size-4\",\n icon: \"size-9 rounded-md [&_svg]:size-4\",\n \"icon-lg\": \"size-11 rounded-md [&_svg]:size-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\ninterface ButtonProps\n extends React.ComponentProps<\"button\">,\n VariantProps<typeof buttonVariants> {\n /** Render as child element (Radix slot pattern for links) */\n asChild?: boolean\n /** Show loading spinner and disable interaction */\n loading?: boolean\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n disabled,\n children,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n data-loading={loading || undefined}\n className={cn(buttonVariants({ variant, size, className }))}\n disabled={disabled || loading}\n {...props}\n >\n {loading ? (\n <>\n <Loader2 className=\"animate-spin\" />\n {children}\n </>\n ) : (\n children\n )}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\nexport type { ButtonProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:ring-ring/40 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs outline-none focus-visible:ring-1 transition-shadow duration-150 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","\"use client\"\n\nimport * as React from \"react\"\nimport type * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/ui/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","\"use client\"\n\n// ============================================================================\n// INPUT\n// Unified text input component with sizes, variants, icons, and clearable\n//\n// Usage:\n// <Input placeholder=\"Email\" />\n// <Input size=\"sm\" variant=\"error\" />\n// <Input iconLeft={<Search className=\"h-4 w-4\" />} placeholder=\"Search...\" />\n// <Input iconRight={<DollarSign className=\"h-4 w-4\" />} placeholder=\"Amount\" />\n// <Input clearable value={query} onClear={() => setQuery(\"\")} />\n// <Input autoExpand minWidth={120} maxWidth={280} placeholder=\"Auto-sizing\" />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n// ----------------------------------------------------------------------------\n// Variants\n// ----------------------------------------------------------------------------\n\nconst inputVariants = cva(\n \"flex w-full min-w-0 rounded-md border bg-transparent text-base outline-none transition-shadow duration-150 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n {\n variants: {\n size: {\n \"2xs\": \"h-6 px-2 text-xs rounded-sm\",\n xs: \"h-7 px-2.5 text-xs rounded-md\",\n sm: \"h-8 px-3 text-sm rounded-md\",\n default: \"h-9 px-3 text-sm rounded-md\",\n lg: \"h-11 px-4 text-base rounded-md\",\n },\n variant: {\n default: \"border-input focus-visible:ring-ring/40 focus-visible:ring-1 dark:bg-input/30\",\n error: \"border-destructive focus-visible:ring-destructive/40 focus-visible:ring-1\",\n success: \"border-siena-sage focus-visible:ring-siena-sage/40 focus-visible:ring-1\",\n warning: \"border-siena-ochre focus-visible:ring-siena-ochre/40 focus-visible:ring-1\",\n },\n },\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n }\n)\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\ninterface InputProps\n extends Omit<React.ComponentProps<\"input\">, \"size\">,\n VariantProps<typeof inputVariants> {\n /** Icon displayed on the left side of the input (pass with size class, e.g. <Mail className=\"h-4 w-4\" />) */\n iconLeft?: React.ReactNode\n /** Icon displayed on the right side of the input (pass with size class, e.g. <Check className=\"h-4 w-4\" />) */\n iconRight?: React.ReactNode\n /** Show clear button when input has value */\n clearable?: boolean\n /** Callback when clear button is clicked */\n onClear?: () => void\n /** Container className for wrapper div (when using icons/clearable) */\n containerClassName?: string\n /** Auto-expand width based on content */\n autoExpand?: boolean\n /** Minimum width when autoExpand is enabled (default: 80) */\n minWidth?: number\n /** Maximum width when autoExpand is enabled (default: 320) */\n maxWidth?: number\n}\n\n// ----------------------------------------------------------------------------\n// Icon size helper\n// ----------------------------------------------------------------------------\n\nconst iconSizeMap = {\n \"2xs\": \"h-3 w-3\",\n xs: \"h-3.5 w-3.5\",\n sm: \"h-4 w-4\",\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n} as const\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nfunction Input({\n className,\n containerClassName,\n type,\n size,\n variant,\n iconLeft,\n iconRight,\n clearable,\n onClear,\n autoExpand,\n minWidth = 80,\n maxWidth = 320,\n value,\n placeholder,\n ...props\n}: InputProps) {\n const sizeKey = size || \"default\"\n const hasLeftIcon = !!iconLeft\n const hasRightIcon = !!iconRight || clearable\n const showClearButton = clearable && value && String(value).length > 0\n\n // Auto-expand measurement\n const measureRef = React.useRef<HTMLSpanElement>(null)\n const [computedWidth, setComputedWidth] = React.useState<number | undefined>(undefined)\n\n // Font size map for measurement span (must match input font sizes)\n const fontSizeMap = {\n \"2xs\": \"text-xs\",\n xs: \"text-xs\",\n sm: \"text-sm\",\n default: \"text-sm\",\n lg: \"text-base\",\n } as const\n\n React.useEffect(() => {\n if (!autoExpand || !measureRef.current) return\n\n const textToMeasure = String(value || \"\") || placeholder || \"\"\n measureRef.current.textContent = textToMeasure\n\n // Calculate extra padding for icons\n const iconPadding = (hasLeftIcon ? 24 : 0) + (hasRightIcon ? 24 : 0)\n // Base padding (px-2.5 to px-4 depending on size) + buffer\n const basePadding = { \"2xs\": 16, xs: 20, sm: 24, default: 24, lg: 32 }[sizeKey]\n\n const measuredWidth = measureRef.current.offsetWidth + basePadding + iconPadding\n const clampedWidth = Math.max(minWidth, Math.min(measuredWidth, maxWidth))\n\n setComputedWidth(clampedWidth)\n }, [autoExpand, value, placeholder, minWidth, maxWidth, hasLeftIcon, hasRightIcon, sizeKey])\n\n // Padding adjustments for icons\n const leftPadding = hasLeftIcon ? {\n \"2xs\": \"pl-6\",\n xs: \"pl-7\",\n sm: \"pl-8\",\n default: \"pl-9\",\n lg: \"pl-10\",\n }[sizeKey] : \"\"\n\n const rightPadding = hasRightIcon ? {\n \"2xs\": \"pr-6\",\n xs: \"pr-7\",\n sm: \"pr-8\",\n default: \"pr-9\",\n lg: \"pr-10\",\n }[sizeKey] : \"\"\n\n // Auto-expand style\n const autoExpandStyle = autoExpand && computedWidth\n ? { width: `${computedWidth}px` }\n : undefined\n\n // Auto-expand classes\n const autoExpandClasses = autoExpand\n ? \"transition-[width] duration-150 w-auto\"\n : \"\"\n\n // Hidden measurement span (rendered in all cases when autoExpand is true)\n const measureSpan = autoExpand && (\n <span\n ref={measureRef}\n className={cn(\"absolute invisible whitespace-pre\", fontSizeMap[sizeKey])}\n aria-hidden=\"true\"\n />\n )\n\n // If no icons or clearable, render simple input\n if (!hasLeftIcon && !hasRightIcon) {\n if (autoExpand) {\n return (\n <div className={cn(\"relative inline-block\", containerClassName)}>\n {measureSpan}\n <input\n type={type}\n data-slot=\"input\"\n data-variant={variant}\n data-size={size}\n value={value}\n placeholder={placeholder}\n style={autoExpandStyle}\n className={cn(inputVariants({ size, variant }), autoExpandClasses, className)}\n {...props}\n />\n </div>\n )\n }\n return (\n <input\n type={type}\n data-slot=\"input\"\n data-variant={variant}\n data-size={size}\n value={value}\n placeholder={placeholder}\n className={cn(inputVariants({ size, variant }), className)}\n {...props}\n />\n )\n }\n\n // Icon position based on size\n const iconPosition = {\n \"2xs\": 8, // left-2 = 8px\n xs: 10, // left-2.5 = 10px\n sm: 12, // left-3 = 12px\n default: 12,\n lg: 16, // left-4 = 16px\n }[sizeKey]\n\n // Render input with wrapper for icons\n return (\n <div\n className={cn(\"relative\", autoExpand && \"inline-block\", containerClassName)}\n style={autoExpandStyle}\n >\n {measureSpan}\n {iconLeft && (\n <div\n className=\"pointer-events-none absolute inset-y-0 flex items-center text-muted-foreground\"\n style={{ left: iconPosition }}\n >\n {iconLeft}\n </div>\n )}\n <input\n type={type}\n data-slot=\"input\"\n data-variant={variant}\n data-size={size}\n value={value}\n placeholder={placeholder}\n className={cn(\n inputVariants({ size, variant }),\n leftPadding,\n rightPadding,\n autoExpand && \"w-full transition-[width] duration-150\",\n className\n )}\n {...props}\n />\n {(iconRight || showClearButton) && (\n <div\n className=\"absolute inset-y-0 flex items-center\"\n style={{ right: iconPosition }}\n >\n {showClearButton ? (\n <button\n type=\"button\"\n onClick={onClear}\n className=\"rounded-sm text-muted-foreground hover:text-foreground focus:outline-none\"\n tabIndex={-1}\n >\n <X className={iconSizeMap[sizeKey]} />\n </button>\n ) : iconRight ? (\n <span className=\"pointer-events-none text-muted-foreground\">\n {iconRight}\n </span>\n ) : null}\n </div>\n )}\n </div>\n )\n}\n\nexport { Input, inputVariants, iconSizeMap }\nexport type { InputProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/40 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 h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-1 transition-shadow duration-150\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"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 <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\n// ============================================================================\n// PASSWORD INPUT\n// Specialized input for passwords with show/hide toggle\n//\n// Usage:\n// <PasswordInput placeholder=\"Enter password\" />\n// <PasswordInput value={password} onChange={e => setPassword(e.target.value)} />\n// <PasswordInput size=\"lg\" variant=\"error\" />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { Eye, EyeOff } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { inputVariants } from \"./input\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\ninterface PasswordInputProps extends Omit<React.ComponentProps<\"input\">, \"size\" | \"type\"> {\n /** Size variant */\n size?: \"2xs\" | \"xs\" | \"sm\" | \"default\" | \"lg\"\n /** Visual variant */\n variant?: \"default\" | \"error\" | \"success\" | \"warning\"\n /** Initial visibility state */\n defaultVisible?: boolean\n /** Container className */\n containerClassName?: string\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nfunction PasswordInput({\n className,\n containerClassName,\n size = \"default\",\n variant,\n defaultVisible = false,\n ...props\n}: PasswordInputProps) {\n const [visible, setVisible] = React.useState(defaultVisible)\n\n // Icon sizes based on input size\n const iconSize = {\n \"2xs\": \"h-3 w-3\",\n xs: \"h-3.5 w-3.5\",\n sm: \"h-4 w-4\",\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n }[size]\n\n // Position in pixels\n const iconPosition = {\n \"2xs\": 8,\n xs: 10,\n sm: 12,\n default: 12,\n lg: 16,\n }[size]\n\n // Padding adjustments\n const rightPadding = {\n \"2xs\": \"pr-6\",\n xs: \"pr-7\",\n sm: \"pr-8\",\n default: \"pr-9\",\n lg: \"pr-10\",\n }[size]\n\n return (\n <div className={cn(\"relative\", containerClassName)}>\n <input\n type={visible ? \"text\" : \"password\"}\n data-slot=\"password-input\"\n data-size={size}\n className={cn(\n inputVariants({ size, variant }),\n rightPadding,\n className\n )}\n {...props}\n />\n\n {/* Visibility Toggle Button */}\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n className=\"absolute inset-y-0 flex items-center text-muted-foreground hover:text-foreground focus:outline-none\"\n style={{ right: iconPosition }}\n tabIndex={-1}\n aria-label={visible ? \"Hide password\" : \"Show password\"}\n >\n {visible ? (\n <EyeOff className={iconSize} />\n ) : (\n <Eye className={iconSize} />\n )}\n </button>\n </div>\n )\n}\n\nexport { PasswordInput }\nexport type { PasswordInputProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:ring-ring/40 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs outline-none focus-visible:ring-1 transition-shadow duration-150 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","import { cn } from \"@/lib/utils\"\n\ninterface KbdProps {\n children: React.ReactNode\n className?: string\n}\n\nfunction Kbd({ children, className }: KbdProps) {\n return (\n <kbd\n className={cn(\n \"inline-flex h-5 items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground\",\n className\n )}\n >\n {children}\n </kbd>\n )\n}\n\nexport { Kbd }\n","\"use client\"\n\n// ============================================================================\n// SEARCH INPUT\n// Specialized input for search with built-in icon, clearable, and loading state\n//\n// Usage:\n// <SearchInput placeholder=\"Search...\" />\n// <SearchInput value={query} onChange={e => setQuery(e.target.value)} />\n// <SearchInput loading />\n// <SearchInput shortcut=\"⌘K\" onShortcutClick={() => openModal()} />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { Search, X, Loader2 } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { inputVariants } from \"./input\"\nimport { Kbd } from \"./kbd\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\ninterface SearchInputProps extends Omit<React.ComponentProps<\"input\">, \"size\" | \"type\"> {\n /** Size variant */\n size?: \"2xs\" | \"xs\" | \"sm\" | \"default\" | \"lg\"\n /** Visual variant */\n variant?: \"default\" | \"error\" | \"success\" | \"warning\"\n /** Show loading spinner instead of search icon */\n loading?: boolean\n /** Keyboard shortcut to display */\n shortcut?: string\n /** Callback when shortcut badge is clicked */\n onShortcutClick?: () => void\n /** Callback when clear button is clicked */\n onClear?: () => void\n /** Container className */\n containerClassName?: string\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nfunction SearchInput({\n className,\n containerClassName,\n size = \"default\",\n variant,\n value,\n onChange,\n onClear,\n loading,\n shortcut,\n onShortcutClick,\n placeholder = \"Search...\",\n ...props\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = React.useState(\"\")\n const currentValue = value !== undefined ? value : internalValue\n const hasValue = String(currentValue).length > 0\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value)\n }\n onChange?.(e)\n }\n\n const handleClear = () => {\n if (value === undefined) {\n setInternalValue(\"\")\n }\n onClear?.()\n }\n\n // Icon sizes based on input size\n const iconSize = {\n \"2xs\": \"h-3 w-3\",\n xs: \"h-3.5 w-3.5\",\n sm: \"h-4 w-4\",\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n }[size]\n\n // Position in pixels\n const iconPosition = {\n \"2xs\": 8,\n xs: 10,\n sm: 12,\n default: 12,\n lg: 16,\n }[size]\n\n // Padding adjustments\n const leftPadding = {\n \"2xs\": \"pl-6\",\n xs: \"pl-7\",\n sm: \"pl-8\",\n default: \"pl-9\",\n lg: \"pl-10\",\n }[size]\n\n // Right padding - more space for shortcut badge\n const rightPadding = hasValue ? {\n \"2xs\": \"pr-6\",\n xs: \"pr-7\",\n sm: \"pr-8\",\n default: \"pr-9\",\n lg: \"pr-10\",\n }[size] : shortcut ? {\n \"2xs\": \"pr-10\",\n xs: \"pr-11\",\n sm: \"pr-12\",\n default: \"pr-14\",\n lg: \"pr-16\",\n }[size] : \"\"\n\n return (\n <div className={cn(\"relative\", containerClassName)}>\n {/* Search/Loading Icon */}\n <div\n className=\"pointer-events-none absolute inset-y-0 flex items-center text-muted-foreground\"\n style={{ left: iconPosition }}\n >\n {loading ? (\n <Loader2 className={cn(iconSize, \"animate-spin\")} />\n ) : (\n <Search className={iconSize} />\n )}\n </div>\n\n {/* Input */}\n <input\n type=\"search\"\n data-slot=\"search-input\"\n data-size={size}\n value={currentValue}\n onChange={handleChange}\n placeholder={placeholder}\n className={cn(\n inputVariants({ size, variant }),\n leftPadding,\n rightPadding,\n \"[&::-webkit-search-cancel-button]:hidden [&::-webkit-search-decoration]:hidden\",\n className\n )}\n {...props}\n />\n\n {/* Right side: Clear button or Shortcut */}\n {(hasValue || shortcut) && (\n <div\n className=\"absolute inset-y-0 flex items-center\"\n style={{ right: iconPosition }}\n >\n {hasValue ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"rounded-sm text-muted-foreground hover:text-foreground focus:outline-none\"\n tabIndex={-1}\n >\n <X className={iconSize} />\n </button>\n ) : shortcut ? (\n <button\n type=\"button\"\n onClick={onShortcutClick}\n tabIndex={-1}\n className=\"focus:outline-none\"\n >\n <Kbd>{shortcut}</Kbd>\n </button>\n ) : null}\n </div>\n )}\n </div>\n )\n}\n\nexport { SearchInput }\nexport type { SearchInputProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:ring-ring/40 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-background px-3 py-2 text-sm whitespace-nowrap shadow-xs outline-none focus-visible:ring-1 transition-shadow duration-150 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:ring-ring/40 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs outline-none focus-visible:ring-1 transition-shadow duration-150 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\n// ============================================================================\n// TEXTAREA\n// Multi-line text input with sizes, variants, auto-resize, and character count\n//\n// Usage:\n// <Textarea placeholder=\"Message...\" />\n// <Textarea size=\"lg\" variant=\"error\" />\n// <Textarea autoResize maxRows={10} />\n// <Textarea showCount maxLength={200} />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\n// ----------------------------------------------------------------------------\n// Variants\n// ----------------------------------------------------------------------------\n\nconst textareaVariants = cva(\n \"flex w-full rounded-md border bg-transparent text-base outline-none transition-shadow duration-150 placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n {\n variants: {\n size: {\n sm: \"min-h-16 px-2.5 py-1.5 text-sm rounded-md\",\n default: \"min-h-20 px-3 py-2 text-sm rounded-md\",\n lg: \"min-h-28 px-4 py-3 text-base rounded-md\",\n },\n variant: {\n default: \"border-input focus-visible:ring-ring/40 focus-visible:ring-1 dark:bg-input/30\",\n error: \"border-destructive focus-visible:ring-destructive/40 focus-visible:ring-1\",\n success: \"border-siena-sage focus-visible:ring-siena-sage/40 focus-visible:ring-1\",\n warning: \"border-siena-ochre focus-visible:ring-siena-ochre/40 focus-visible:ring-1\",\n },\n },\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n }\n)\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\ninterface TextareaProps\n extends Omit<React.ComponentProps<\"textarea\">, \"size\">,\n VariantProps<typeof textareaVariants> {\n /** Auto-resize to fit content */\n autoResize?: boolean\n /** Maximum rows when auto-resizing */\n maxRows?: number\n /** Minimum rows */\n minRows?: number\n /** Show character counter */\n showCount?: boolean\n /** Container className for wrapper div (when using showCount) */\n containerClassName?: string\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nfunction Textarea({\n className,\n containerClassName,\n size,\n variant,\n autoResize,\n maxRows,\n minRows = 3,\n showCount,\n maxLength,\n value,\n defaultValue,\n onChange,\n ...props\n}: TextareaProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue || \"\")\n const textareaRef = React.useRef<HTMLTextAreaElement>(null)\n\n const currentValue = value !== undefined ? value : internalValue\n const currentLength = String(currentValue).length\n\n // Calculate and apply height for auto-resize\n const adjustHeight = React.useCallback(() => {\n if (!autoResize || !textareaRef.current) return\n\n const textarea = textareaRef.current\n\n // Reset height to min to get accurate scrollHeight\n textarea.style.height = \"0\"\n\n // Get computed styles\n const computed = getComputedStyle(textarea)\n const lineHeight = parseInt(computed.lineHeight) || 20\n const paddingTop = parseInt(computed.paddingTop) || 0\n const paddingBottom = parseInt(computed.paddingBottom) || 0\n const minHeight = lineHeight * minRows + paddingTop + paddingBottom\n\n // Calculate target height\n let targetHeight = Math.max(textarea.scrollHeight, minHeight)\n\n // Apply maxRows limit if specified\n if (maxRows) {\n const maxHeight = lineHeight * maxRows + paddingTop + paddingBottom\n targetHeight = Math.min(targetHeight, maxHeight)\n }\n\n textarea.style.height = `${targetHeight}px`\n }, [autoResize, maxRows, minRows])\n\n // Handle change for both controlled and uncontrolled\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value)\n }\n onChange?.(e)\n\n // Auto-resize after state update\n requestAnimationFrame(adjustHeight)\n }\n\n // Initial resize on mount and when value changes externally\n React.useEffect(() => {\n adjustHeight()\n }, [adjustHeight, currentValue])\n\n const textareaElement = (\n <textarea\n ref={textareaRef}\n data-slot=\"textarea\"\n data-variant={variant}\n data-size={size}\n value={value}\n defaultValue={value === undefined ? defaultValue : undefined}\n maxLength={maxLength}\n rows={minRows}\n onChange={handleChange}\n className={cn(\n textareaVariants({ size, variant }),\n autoResize && \"resize-none overflow-hidden\",\n !autoResize && \"resize-y\",\n className\n )}\n {...props}\n />\n )\n\n // If showCount, wrap in container\n if (showCount) {\n return (\n <div className={cn(\"space-y-1\", containerClassName)}>\n {textareaElement}\n <div className=\"text-xs text-muted-foreground text-right\">\n {currentLength}\n {maxLength && `/${maxLength}`}\n </div>\n </div>\n )\n }\n\n return textareaElement\n}\n\nexport { Textarea, textareaVariants }\nexport type { TextareaProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:ring-ring/40 focus-visible:ring-1 outline-none transition-shadow duration-150 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 0,\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n \"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\",\n \"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\"use client\"\n\n// ============================================================================\n// BADGE\n// Unified badge component for status indicators, labels, and tags\n//\n// Usage:\n// <Badge>Default</Badge>\n// <Badge variant=\"soft\" color=\"success\">Completed</Badge>\n// <Badge variant=\"outline\" color=\"warning\" size=\"sm\">Pending</Badge>\n// <Badge dot color=\"success\">Active</Badge>\n// <Badge icon={<Check />} color=\"success\">Done</Badge>\n// <Badge removable onRemove={() => {}}>Tag</Badge>\n// ============================================================================\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n// ----------------------------------------------------------------------------\n// Variants\n// ----------------------------------------------------------------------------\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center gap-1.5 rounded-full text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring whitespace-nowrap\",\n {\n variants: {\n variant: {\n filled: \"\",\n soft: \"\",\n outline: \"border\",\n ghost: \"\",\n },\n color: {\n default: \"\",\n primary: \"\",\n success: \"\",\n warning: \"\",\n error: \"\",\n },\n size: {\n sm: \"h-5 px-2 text-[10px]\",\n default: \"h-6 px-2.5 text-xs\",\n lg: \"h-7 px-3 text-sm\",\n },\n },\n compoundVariants: [\n // FILLED variants - solid background, contrasting text\n { variant: \"filled\", color: \"default\", className: \"bg-muted text-foreground\" },\n { variant: \"filled\", color: \"primary\", className: \"bg-primary text-primary-foreground\" },\n { variant: \"filled\", color: \"success\", className: \"bg-siena-sage text-white\" },\n { variant: \"filled\", color: \"warning\", className: \"bg-siena-ochre text-white\" },\n { variant: \"filled\", color: \"error\", className: \"bg-destructive text-white\" },\n\n // SOFT variants - 15% opacity background, full color text\n { variant: \"soft\", color: \"default\", className: \"bg-muted/50 text-muted-foreground\" },\n { variant: \"soft\", color: \"primary\", className: \"bg-primary/15 text-primary\" },\n { variant: \"soft\", color: \"success\", className: \"bg-siena-sage/15 text-siena-sage\" },\n { variant: \"soft\", color: \"warning\", className: \"bg-siena-ochre/15 text-siena-ochre\" },\n { variant: \"soft\", color: \"error\", className: \"bg-destructive/15 text-destructive\" },\n\n // OUTLINE variants - border with transparent background\n { variant: \"outline\", color: \"default\", className: \"border-border text-muted-foreground\" },\n { variant: \"outline\", color: \"primary\", className: \"border-primary/40 text-primary\" },\n { variant: \"outline\", color: \"success\", className: \"border-siena-sage/40 text-siena-sage\" },\n { variant: \"outline\", color: \"warning\", className: \"border-siena-ochre/40 text-siena-ochre\" },\n { variant: \"outline\", color: \"error\", className: \"border-destructive/40 text-destructive\" },\n\n // GHOST variants - text only, no background\n { variant: \"ghost\", color: \"default\", className: \"text-muted-foreground\" },\n { variant: \"ghost\", color: \"primary\", className: \"text-primary\" },\n { variant: \"ghost\", color: \"success\", className: \"text-siena-sage\" },\n { variant: \"ghost\", color: \"warning\", className: \"text-siena-ochre\" },\n { variant: \"ghost\", color: \"error\", className: \"text-destructive\" },\n ],\n defaultVariants: {\n variant: \"filled\",\n color: \"default\",\n size: \"default\",\n },\n }\n)\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\ninterface BadgeProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n VariantProps<typeof badgeVariants> {\n /** Show a status dot indicator */\n dot?: boolean\n /** Icon to display before text */\n icon?: React.ReactNode\n /** Icon to display after text */\n iconAfter?: React.ReactNode\n /** Show remove button */\n removable?: boolean\n /** Callback when remove button is clicked */\n onRemove?: () => void\n /** Disabled state */\n disabled?: boolean\n /** Render as child element (Radix slot pattern) */\n asChild?: boolean\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nfunction Badge({\n className,\n variant,\n color,\n size,\n dot,\n icon,\n iconAfter,\n removable,\n onRemove,\n disabled,\n asChild = false,\n children,\n ...props\n}: BadgeProps) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-disabled={disabled || undefined}\n className={cn(\n badgeVariants({ variant, color, size }),\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {dot && (\n <span\n className={cn(\n \"h-1.5 w-1.5 rounded-full\",\n color === \"primary\" && \"bg-primary\",\n color === \"success\" && \"bg-siena-sage\",\n color === \"warning\" && \"bg-siena-ochre\",\n color === \"error\" && \"bg-destructive\",\n (!color || color === \"default\") && \"bg-muted-foreground\"\n )}\n />\n )}\n {icon && <span className=\"[&>svg]:h-3 [&>svg]:w-3\">{icon}</span>}\n {children}\n {iconAfter && <span className=\"[&>svg]:h-3 [&>svg]:w-3\">{iconAfter}</span>}\n {removable && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove?.()\n }}\n className=\"ml-0.5 -mr-1 h-4 w-4 rounded-full hover:bg-black/10 dark:hover:bg-white/10 inline-flex items-center justify-center\"\n disabled={disabled}\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </Comp>\n )\n}\n\nexport { Badge, badgeVariants }\nexport type { BadgeProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/ui/button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative border border-input shadow-xs has-focus:ring-ring/40 has-focus:ring-1 rounded-md transition-shadow duration-150\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[selected-single=true]:border-0 data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-start=true]:border-0 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-end=true]:border-0 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/40 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-1 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".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 data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.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 flex aspect-video justify-center text-xs [&_.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 {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap first:pl-4 last:pr-4 [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap first:pl-4 last:pr-4 [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n )\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-soft\",\n className\n )}\n {...props}\n />\n </MenubarPortal>\n )\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n )\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n )\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n )\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n}\n","import * as React from \"react\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n )\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n )\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/40 outline-none transition-shadow duration-150 focus-visible:ring-1 focus-visible:outline-1\"\n)\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n )\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\",\n \"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n \"absolute top-full left-0 isolate z-50 flex justify-center\"\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/40 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm outline-none focus-visible:ring-1 transition-shadow duration-150 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n className\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n )\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n}\n","import * as React from \"react\"\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type Button } from \"@/components/ui/button\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )}\n {...props}\n />\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 size=\"default\"\n className={cn(\"gap-1 px-2.5 sm:pl-2.5\", className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"hidden sm:block\">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 size=\"default\"\n className={cn(\"gap-1 px-2.5 sm:pr-2.5\", className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n}\n","\"use client\"\n\n// ============================================================================\n// TABS\n// Tab navigation component with box and underline variants\n//\n// Usage:\n// <Tabs defaultValue=\"tab1\">\n// <TabsList variant=\"underline\">\n// <TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n// <TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n// </TabsList>\n// <TabsContent value=\"tab1\">Content 1</TabsContent>\n// <TabsContent value=\"tab2\">Content 2</TabsContent>\n// </Tabs>\n// ============================================================================\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\n// ----------------------------------------------------------------------------\n// Variants\n// ----------------------------------------------------------------------------\n\nconst tabsListVariants = cva(\n \"inline-flex items-center\",\n {\n variants: {\n variant: {\n box: \"h-9 w-fit bg-muted text-muted-foreground rounded-lg p-[3px] justify-center\",\n underline: \"h-auto w-full bg-transparent gap-6 justify-start\",\n },\n },\n defaultVariants: {\n variant: \"box\",\n },\n }\n)\n\nconst tabsTriggerVariants = cva(\n \"inline-flex items-center justify-center gap-1.5 text-sm font-medium whitespace-nowrap transition-colors disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n box: \"h-[calc(100%-1px)] flex-1 rounded-md border border-transparent px-2 py-1 text-foreground dark:text-muted-foreground data-[state=active]:bg-background dark:data-[state=active]:bg-stone-600 dark:data-[state=active]:text-foreground dark:data-[state=active]:border-input data-[state=active]:shadow-sm focus-visible:ring-1 focus-visible:ring-ring/40 focus-visible:outline-ring focus-visible:outline-1 transition-shadow duration-150\",\n underline: \"h-9 px-0 pb-2 rounded-none border-b-2 border-transparent text-muted-foreground data-[state=active]:text-foreground data-[state=active]:border-foreground hover:text-foreground focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:outline-none bg-transparent data-[state=active]:bg-transparent data-[state=active]:shadow-none\",\n },\n },\n defaultVariants: {\n variant: \"box\",\n },\n }\n)\n\n// ----------------------------------------------------------------------------\n// Context for variant propagation\n// ----------------------------------------------------------------------------\n\ntype TabsVariant = \"box\" | \"underline\"\n\nconst TabsVariantContext = React.createContext<TabsVariant>(\"box\")\n\n// ----------------------------------------------------------------------------\n// Components\n// ----------------------------------------------------------------------------\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\ninterface TabsListProps\n extends React.ComponentProps<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {}\n\nfunction TabsList({\n className,\n variant = \"box\",\n ...props\n}: TabsListProps) {\n return (\n <TabsVariantContext.Provider value={variant ?? \"box\"}>\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n </TabsVariantContext.Provider>\n )\n}\n\ninterface TabsTriggerProps\n extends React.ComponentProps<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {}\n\nfunction TabsTrigger({\n className,\n variant: variantProp,\n ...props\n}: TabsTriggerProps) {\n const contextVariant = React.useContext(TabsVariantContext)\n const variant = variantProp ?? contextVariant\n\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(tabsTriggerVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"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 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 * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-card data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-2xl border border-border p-6 shadow-large duration-200 outline-none sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-full p-1.5 hover:bg-muted transition-colors focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"group/drawer-content bg-background fixed z-50 flex h-auto flex-col\",\n \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b\",\n \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className\n )}\n {...props}\n >\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-soft outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-card data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col shadow-large transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l border-border sm:max-w-md\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r border-border sm:max-w-md\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b border-border\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t border-border\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-full p-1.5 hover:bg-muted transition-colors focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 px-6 py-5 border-b border-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetBody({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-body\"\n className={cn(\"flex-1 overflow-y-auto px-6 py-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 px-6 py-4 border-t border-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground text-lg font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetBody,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n SheetPortal,\n SheetOverlay,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { CheckCircle2, Info, AlertTriangle, XCircle, Loader2 } from \"lucide-react\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { resolvedTheme } = useTheme()\n\n return (\n <Sonner\n theme={resolvedTheme as \"light\" | \"dark\" | \"system\"}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-card group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-medium group-[.toaster]:rounded-xl dark:group-[.toaster]:bg-stone-700 dark:group-[.toaster]:border-stone-600\",\n title: \"group-[.toast]:font-medium group-[.toast]:text-foreground\",\n description: \"group-[.toast]:text-muted-foreground group-[.toast]:text-sm\",\n actionButton:\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground group-[.toast]:rounded-lg group-[.toast]:font-medium\",\n cancelButton:\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground group-[.toast]:rounded-lg\",\n closeButton:\n \"group-[.toast]:bg-background group-[.toast]:text-muted-foreground group-[.toast]:border-border group-[.toast]:hover:bg-muted\",\n success:\n \"group-[.toaster]:border-[var(--siena-sage)]/20 group-[.toaster]:bg-[var(--siena-sage)]/5\",\n error:\n \"group-[.toaster]:border-destructive/20 group-[.toaster]:bg-destructive/5\",\n warning:\n \"group-[.toaster]:border-[var(--siena-ochre)]/20 group-[.toaster]:bg-[var(--siena-ochre)]/5\",\n info:\n \"group-[.toaster]:border-[var(--siena-terracotta)]/20 group-[.toaster]:bg-[var(--siena-terracotta)]/5\",\n },\n }}\n icons={{\n success: (\n <div className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-[var(--siena-sage)]\">\n <CheckCircle2 className=\"size-3.5 text-white\" />\n </div>\n ),\n info: (\n <div className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-[var(--siena-terracotta)]\">\n <Info className=\"size-3.5 text-white\" />\n </div>\n ),\n warning: (\n <div className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-[var(--siena-ochre)]\">\n <AlertTriangle className=\"size-3.5 text-white\" />\n </div>\n ),\n error: (\n <div className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-destructive\">\n <XCircle className=\"size-3.5 text-white\" />\n </div>\n ),\n loading: <Loader2 className=\"size-5 animate-spin text-muted-foreground\" />,\n }}\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","import { cn } from \"@/lib/utils\"\nimport { Loader2 } from \"lucide-react\"\n\ninterface SpinnerProps {\n size?: \"sm\" | \"default\" | \"lg\"\n className?: string\n}\n\nconst sizeMap = {\n sm: \"h-4 w-4\",\n default: \"h-6 w-6\",\n lg: \"h-8 w-8\"\n}\n\nfunction Spinner({ size = \"default\", className }: SpinnerProps) {\n return (\n <Loader2\n className={cn(\n \"animate-spin text-muted-foreground\",\n sizeMap[size],\n className\n )}\n />\n )\n}\n\nexport { Spinner }\n","\"use client\"\n\n// ============================================================================\n// THEME TOGGLE\n// Toggle between light and dark mode\n//\n// Usage:\n// <ThemeToggle />\n// <ThemeToggle variant=\"outline\" />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { Moon, Sun } from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\ninterface ThemeToggleProps {\n variant?: \"default\" | \"outline\" | \"ghost\"\n size?: \"default\" | \"sm\" | \"lg\" | \"icon\" | \"icon-sm\" | \"icon-xs\"\n className?: string\n}\n\nexport function ThemeToggle({\n variant = \"outline\",\n size = \"icon\",\n className,\n}: ThemeToggleProps) {\n const { theme, setTheme } = useTheme()\n const [mounted, setMounted] = React.useState(false)\n\n // Avoid hydration mismatch\n React.useEffect(() => {\n setMounted(true)\n }, [])\n\n if (!mounted) {\n return (\n <Button variant={variant} size={size} className={cn(className)} disabled>\n <Sun className=\"h-4 w-4\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n )\n }\n\n return (\n <Button\n variant={variant}\n size={size}\n className={cn(className)}\n onClick={() => setTheme(theme === \"dark\" ? \"light\" : \"dark\")}\n >\n {theme === \"dark\" ? (\n <Sun className=\"h-4 w-4\" />\n ) : (\n <Moon className=\"h-4 w-4\" />\n )}\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// EMOJI PICKER\n// Emoji picker using @emoji-mart/react wrapped in a Popover\n// ============================================================================\n\nimport * as React from \"react\"\nimport data from \"@emoji-mart/data\"\nimport Picker from \"@emoji-mart/react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\ninterface EmojiPickerProps {\n value?: string\n onChange?: (emoji: string) => void\n disabled?: boolean\n className?: string\n}\n\ninterface EmojiData {\n native: string\n unified: string\n shortcodes: string\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function EmojiPicker({\n value = \"😀\",\n onChange,\n disabled = false,\n className,\n}: EmojiPickerProps) {\n const [open, setOpen] = React.useState(false)\n\n const handleEmojiSelect = (emoji: EmojiData) => {\n onChange?.(emoji.native)\n setOpen(false)\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"h-10 w-10 p-0 text-xl\",\n className\n )}\n >\n {value}\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-auto p-0 border-0 shadow-medium\"\n align=\"start\"\n sideOffset={8}\n >\n <Picker\n data={data}\n onEmojiSelect={handleEmojiSelect}\n theme=\"light\"\n previewPosition=\"none\"\n skinTonePosition=\"search\"\n maxFrequentRows={2}\n perLine={8}\n />\n </PopoverContent>\n </Popover>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// ICON SELECT\n// Dropdown selector styled to match Input component exactly\n//\n// Usage:\n// <IconSelect options={options} value={value} onChange={setValue} />\n// <IconSelect size=\"sm\" options={options} value={value} onChange={setValue} />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { Check, ChevronDown } from \"lucide-react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { cn } from \"@/lib/utils\"\n\n// ----------------------------------------------------------------------------\n// Variants (matches Input exactly)\n// ----------------------------------------------------------------------------\n\nconst iconSelectVariants = cva(\n \"inline-flex items-center gap-2 rounded-md border border-input bg-transparent text-sm outline-none transition-shadow duration-150 cursor-pointer disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus-visible:ring-ring/40 focus-visible:ring-1\",\n {\n variants: {\n size: {\n \"2xs\": \"h-6 px-2 text-xs gap-1 rounded-sm\",\n xs: \"h-7 px-2.5 text-xs gap-1.5\",\n sm: \"h-8 px-3 text-sm gap-1.5\",\n default: \"h-9 px-3 text-sm gap-2\",\n lg: \"h-11 px-4 text-base gap-2\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface IconSelectOption {\n value: string\n label: string\n icon?: React.ReactNode\n}\n\ninterface IconSelectProps extends VariantProps<typeof iconSelectVariants> {\n options: IconSelectOption[]\n value: string\n onChange: (value: string) => void\n placeholder?: string\n icon?: React.ReactNode\n className?: string\n disabled?: boolean\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function IconSelect({\n options,\n value,\n onChange,\n placeholder = \"Select...\",\n icon,\n size,\n className,\n disabled,\n}: IconSelectProps) {\n const selectedOption = options.find((opt) => opt.value === value)\n const displayIcon = selectedOption?.icon || icon\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild disabled={disabled}>\n <button\n type=\"button\"\n className={cn(\n iconSelectVariants({ size }),\n !selectedOption && \"text-muted-foreground\",\n className\n )}\n >\n {displayIcon && (\n <span className=\"shrink-0 text-muted-foreground [&>svg]:h-4 [&>svg]:w-4\">\n {displayIcon}\n </span>\n )}\n <span className=\"truncate\">{selectedOption?.label || placeholder}</span>\n <ChevronDown className=\"h-4 w-4 shrink-0 text-muted-foreground/60 ml-auto\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"min-w-[160px]\">\n {options.map((option) => (\n <DropdownMenuItem\n key={option.value}\n onClick={() => onChange(option.value)}\n className=\"flex items-center justify-between gap-2\"\n >\n <span className=\"flex items-center gap-2\">\n {option.icon && (\n <span className=\"shrink-0 text-muted-foreground\">\n {option.icon}\n </span>\n )}\n {option.label}\n </span>\n {value === option.value && (\n <Check className=\"h-4 w-4 text-primary\" />\n )}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Filter Bar (helper for multiple IconSelects in a row)\n// ----------------------------------------------------------------------------\n\ninterface FilterBarProps {\n children: React.ReactNode\n className?: string\n}\n\nexport function FilterBar({ children, className }: FilterBarProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {children}\n </div>\n )\n}\n\nexport { iconSelectVariants }\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport {\n Mail,\n MessageSquare,\n Phone,\n MessageCircle,\n MessagesSquare,\n Star,\n AtSign,\n} from \"lucide-react\"\n\ninterface IconProps {\n className?: string\n}\n\n/* Email */\nexport const EmailIcon = ({ className }: IconProps) => (\n <Mail className={cn(\"h-5 w-5\", className)} />\n)\n\n/* SMS / Text */\nexport const SmsIcon = ({ className }: IconProps) => (\n <MessageSquare className={cn(\"h-5 w-5\", className)} />\n)\n\n/* Phone / Voice */\nexport const PhoneIcon = ({ className }: IconProps) => (\n <Phone className={cn(\"h-5 w-5\", className)} />\n)\n\n/* Live Chat */\nexport const LiveChatIcon = ({ className }: IconProps) => (\n <MessagesSquare className={cn(\"h-5 w-5\", className)} />\n)\n\n/* Reviews */\nexport const ReviewsIcon = ({ className }: IconProps) => (\n <Star className={cn(\"h-5 w-5\", className)} />\n)\n\n/* Instagram */\nexport const InstagramIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-5 w-5\", className)}\n >\n <rect width=\"20\" height=\"20\" x=\"2\" y=\"2\" rx=\"5\" ry=\"5\" />\n <path d=\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\" />\n <line x1=\"17.5\" x2=\"17.51\" y1=\"6.5\" y2=\"6.5\" />\n </svg>\n)\n\n/* Facebook */\nexport const FacebookIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\n <path d=\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\" />\n </svg>\n)\n\n/* Twitter / X */\nexport const TwitterIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\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.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />\n </svg>\n)\n\n/* WhatsApp */\nexport const WhatsAppIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\n <path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\" />\n </svg>\n)\n\n/* Messenger */\nexport const MessengerIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\n <path d=\"M12 2C6.477 2 2 6.145 2 11.243c0 2.936 1.444 5.544 3.7 7.257v3.5l3.258-1.785c.876.244 1.804.377 2.762.377h.28c5.523 0 10-4.145 10-9.257S17.523 2 12 2zm1.067 12.457l-2.566-2.729-4.973 2.729 5.467-5.8 2.633 2.729 4.9-2.729-5.461 5.8z\" />\n </svg>\n)\n\n/* Slack */\nexport const SlackIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\n <path d=\"M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z\" />\n </svg>\n)\n\n/* TikTok */\nexport const TikTokIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\n <path d=\"M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-5.2 1.74 2.89 2.89 0 0 1 2.31-4.64 2.93 2.93 0 0 1 .88.13V9.4a6.84 6.84 0 0 0-1-.05A6.33 6.33 0 0 0 5 20.1a6.34 6.34 0 0 0 10.86-4.43v-7a8.16 8.16 0 0 0 4.77 1.52v-3.4a4.85 4.85 0 0 1-1-.1z\" />\n </svg>\n)\n\n/* LinkedIn */\nexport const LinkedInIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\n <path d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\" />\n </svg>\n)\n\n/* YouTube */\nexport const YouTubeIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\n <path d=\"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\" />\n </svg>\n)\n\n/* Zendesk */\nexport const ZendeskIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\n <path d=\"M11.088 9.736V24L0 9.736h11.088zm1.824 0H24L12.912 24V9.736zM11.088 0v9.736H0L11.088 0zm1.824 0L24 9.736h-11.088V0z\" />\n </svg>\n)\n\n/* Gorgias */\nexport const GorgiasIcon = ({ className }: IconProps) => (\n <MessageCircle className={cn(\"h-5 w-5\", className)} />\n)\n\n/* Intercom */\nexport const IntercomIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\n <path d=\"M20.403 20.403h-3.002V8.662h3.002v11.741zM3.597 8.662h3.002v11.741H3.597V8.662zm13.203 0h-3.002v8.62H16.8v-8.62zm-4.4 0h-3.002v8.62h3.002v-8.62zm-4.4 0H5.999v8.62H8v-8.62zM12 2.16c-5.43 0-9.84 4.41-9.84 9.84 0 2.19.72 4.21 1.93 5.85v3.99l3.55-1.78c1.33.54 2.8.84 4.36.84 5.43 0 9.84-4.41 9.84-9.84 0-5.43-4.41-9.84-9.84-9.84z\" />\n </svg>\n)\n\n/* Shopify */\nexport const ShopifyIcon = ({ className }: IconProps) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"h-5 w-5\", className)}\n >\n <path d=\"M15.337 23.979l7.216-1.561s-2.604-17.613-2.625-17.73c-.022-.116-.116-.201-.226-.201-.111 0-2.18-.153-2.18-.153s-1.492-1.457-1.664-1.621c-.047-.045-.101-.065-.158-.074v21.34zm-1.725-20.963c0 .038-.01.075-.011.113-.021.007-.039.014-.061.02 0 0-1.416.367-2.232.577-.17-.522-.435-1.118-.814-1.653-.908-1.287-2.035-1.971-3.255-2.058.008-.019.016-.037.023-.056.141-.399.311-.881.311-.881h.004c.625-1.89 1.776-2.878 3.121-2.878.371 0 .761.066 1.156.213 1.237.462 1.86 1.649 2.258 2.883.262.816.393 1.706.444 2.41a5.08 5.08 0 0 0-.944 1.31zm-3.643-5.99c.946.08 1.752.524 2.405 1.318.448.549.782 1.227 1.02 1.924-.705.184-1.466.38-2.231.58-.297-1.122-.772-2.205-1.706-2.947.161-.315.344-.599.512-.875zm-1.521 1.503c.687.592 1.122 1.393 1.421 2.306a95.924 95.924 0 0 1-2.062.535c.285-.979.771-2.045 1.641-2.841zm-1.916 3.519c.218-.057.445-.115.675-.175.193-.05.392-.102.593-.154-.036.229-.059.453-.059.666 0 .804.118 1.695.434 2.453-.403-.095-.77-.187-1.043-.259 0 0-.018-.005-.043-.014-.026-.01-.052-.022-.077-.034-.138-.066-.277-.176-.38-.321-.232-.33-.314-.767-.314-1.156 0-.416.067-.819.214-1.206z\" />\n </svg>\n)\n\n/* All Channels Map for easy lookup */\nexport const ChannelIcons = {\n email: EmailIcon,\n sms: SmsIcon,\n phone: PhoneIcon,\n livechat: LiveChatIcon,\n reviews: ReviewsIcon,\n instagram: InstagramIcon,\n facebook: FacebookIcon,\n twitter: TwitterIcon,\n whatsapp: WhatsAppIcon,\n messenger: MessengerIcon,\n slack: SlackIcon,\n tiktok: TikTokIcon,\n linkedin: LinkedInIcon,\n youtube: YouTubeIcon,\n zendesk: ZendeskIcon,\n gorgias: GorgiasIcon,\n intercom: IntercomIcon,\n shopify: ShopifyIcon,\n} as const\n\nexport type ChannelType = keyof typeof ChannelIcons\n\n/* Helper to get icon by channel name */\nexport function getChannelIcon(channel: ChannelType) {\n return ChannelIcons[channel]\n}\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\n\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/ui/sheet\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] 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 \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 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 {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n // eslint-disable-next-line react-hooks/purity\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Sparkles, User, Bot } from \"lucide-react\"\n\n// ============================================================================\n// CHAT AVATAR\n// Avatar component for chat interfaces with user/AI/agent variants\n// Uses solid earthy colors (no translucency) for a polished look\n// ============================================================================\n\n/** Available avatar colors - 12 solid earthy colors */\nexport type AvatarColor =\n | \"terracotta\"\n | \"rust\"\n | \"clay\"\n | \"amber\"\n | \"ochre\"\n | \"olive\"\n | \"sage\"\n | \"forest\"\n | \"teal\"\n | \"slate\"\n | \"plum\"\n | \"wine\"\n\nexport interface ChatAvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Avatar type determines default styling and icon */\n type: \"user\" | \"ai\" | \"agent\"\n /** Solid color from the avatar palette (overrides default) */\n color?: AvatarColor\n /** Image source URL */\n src?: string\n /** Fallback text (initials) when no image */\n fallback?: string\n /** Size variant */\n size?: \"sm\" | \"default\" | \"lg\"\n /** Show online indicator dot */\n showOnline?: boolean\n /** Online status (only shown if showOnline is true) */\n isOnline?: boolean\n}\n\nconst sizeClasses = {\n sm: \"h-6 w-6\",\n default: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n}\n\nconst iconSizes = {\n sm: \"h-3 w-3\",\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n}\n\nconst onlineDotSizes = {\n sm: \"h-1.5 w-1.5\",\n default: \"h-2 w-2\",\n lg: \"h-2.5 w-2.5\",\n}\n\n// Solid avatar colors - white text on colored background\nconst avatarColors: Record<AvatarColor, string> = {\n terracotta: \"bg-[var(--avatar-terracotta)] text-white\",\n rust: \"bg-[var(--avatar-rust)] text-white\",\n clay: \"bg-[var(--avatar-clay)] text-white\",\n amber: \"bg-[var(--avatar-amber)] text-white\",\n ochre: \"bg-[var(--avatar-ochre)] text-white\",\n olive: \"bg-[var(--avatar-olive)] text-white\",\n sage: \"bg-[var(--avatar-sage)] text-white\",\n forest: \"bg-[var(--avatar-forest)] text-white\",\n teal: \"bg-[var(--avatar-teal)] text-white\",\n slate: \"bg-[var(--avatar-slate)] text-white\",\n plum: \"bg-[var(--avatar-plum)] text-white\",\n wine: \"bg-[var(--avatar-wine)] text-white\",\n}\n\n// Default colors per type\nconst defaultColors: Record<\"user\" | \"ai\" | \"agent\", AvatarColor> = {\n ai: \"terracotta\", // Siena's brand color\n agent: \"slate\", // Neutral professional\n user: \"sage\", // Calm, natural\n}\n\nexport function ChatAvatar({\n type,\n color,\n src,\n fallback,\n size = \"default\",\n showOnline = false,\n isOnline = false,\n className,\n ...props\n}: ChatAvatarProps) {\n // Use provided color or default based on type\n const avatarColor = color || defaultColors[type]\n\n const getDefaultIcon = () => {\n switch (type) {\n case \"ai\":\n return <Sparkles className={cn(iconSizes[size])} />\n case \"agent\":\n return <Bot className={cn(iconSizes[size])} />\n case \"user\":\n default:\n return <User className={cn(iconSizes[size])} />\n }\n }\n\n const getDefaultFallback = () => {\n if (fallback) return fallback\n switch (type) {\n case \"ai\":\n return null // Use icon instead\n case \"agent\":\n return \"AG\"\n case \"user\":\n default:\n return \"U\"\n }\n }\n\n const avatarFallback = getDefaultFallback()\n\n return (\n <div className={cn(\"relative inline-flex\", className)} {...props}>\n <Avatar className={cn(sizeClasses[size])}>\n {src && <AvatarImage src={src} alt={`${type} avatar`} />}\n <AvatarFallback\n className={cn(\n \"text-xs font-medium\",\n avatarColors[avatarColor]\n )}\n >\n {avatarFallback || getDefaultIcon()}\n </AvatarFallback>\n </Avatar>\n\n {/* Online indicator */}\n {showOnline && (\n <span\n className={cn(\n \"absolute bottom-0 right-0 rounded-full border-2 border-background\",\n onlineDotSizes[size],\n isOnline ? \"bg-siena-sage\" : \"bg-muted-foreground\"\n )}\n aria-label={isOnline ? \"Online\" : \"Offline\"}\n />\n )}\n </div>\n )\n}\n\nexport type { ChatAvatarProps as ChatAvatarPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { ChatAvatar } from \"./chat-avatar\"\n\n// ============================================================================\n// TYPING INDICATOR\n// Shows when the AI is \"thinking\" or generating a response\n// ============================================================================\n\nconst THINKING_PHRASES = [\n \"Thinking...\",\n \"Analyzing...\",\n \"Searching...\",\n \"Crafting response...\",\n]\n\nexport interface TypingIndicatorProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Display variant */\n variant?: \"dots\" | \"text\" | \"thinking\"\n /** Custom text for text variant */\n text?: string\n /** Custom phrases for thinking variant (rotates through these) */\n thinkingPhrases?: string[]\n /** Show avatar alongside indicator */\n showAvatar?: boolean\n /** Size variant */\n size?: \"sm\" | \"default\" | \"lg\"\n}\n\nconst dotContainerSizes = {\n sm: \"gap-0.5 h-4\",\n default: \"gap-1 h-5\",\n lg: \"gap-1.5 h-6\",\n}\n\nconst textSizes = {\n sm: \"text-xs\",\n default: \"text-sm\",\n lg: \"text-base\",\n}\n\nexport function TypingIndicator({\n variant = \"dots\",\n text = \"Siena is typing...\",\n thinkingPhrases = THINKING_PHRASES,\n showAvatar = true,\n size = \"default\",\n className,\n ...props\n}: TypingIndicatorProps) {\n const [phraseIndex, setPhraseIndex] = React.useState(0)\n const [fadeIn, setFadeIn] = React.useState(true)\n\n // Rotate through phrases for thinking variant\n React.useEffect(() => {\n if (variant !== \"thinking\") return\n\n const interval = setInterval(() => {\n setFadeIn(false)\n setTimeout(() => {\n setPhraseIndex((prev) => (prev + 1) % thinkingPhrases.length)\n setFadeIn(true)\n }, 200) // Fade out duration\n }, 2500) // Change phrase every 2.5s\n\n return () => clearInterval(interval)\n }, [variant, thinkingPhrases.length])\n\n return (\n <div\n className={cn(\"flex items-center gap-3\", className)}\n role=\"status\"\n aria-label=\"AI is typing\"\n {...props}\n >\n {showAvatar && <ChatAvatar type=\"ai\" size={size} />}\n\n {variant === \"dots\" && (\n <div\n className={cn(\n \"flex items-center text-muted-foreground\",\n dotContainerSizes[size]\n )}\n >\n <span className=\"chat-typing-dot\" />\n <span className=\"chat-typing-dot\" />\n <span className=\"chat-typing-dot\" />\n </div>\n )}\n\n {variant === \"text\" && (\n <span\n className={cn(\n \"text-muted-foreground italic animate-pulse\",\n textSizes[size]\n )}\n >\n {text}\n </span>\n )}\n\n {variant === \"thinking\" && (\n <span\n className={cn(\n \"chat-thinking-shimmer font-medium transition-opacity duration-200\",\n textSizes[size],\n fadeIn ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n {thinkingPhrases[phraseIndex]}\n </span>\n )}\n </div>\n )\n}\n\nexport type { TypingIndicatorProps as TypingIndicatorPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\nimport {\n Copy,\n Pencil,\n RefreshCw,\n ThumbsUp,\n ThumbsDown,\n Check,\n} from \"lucide-react\"\n\n// ============================================================================\n// MESSAGE ACTIONS\n// Hover actions for chat messages (copy, edit, regenerate, feedback)\n// ============================================================================\n\nexport interface MessageActionsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Callback when copy is clicked */\n onCopy?: () => void\n /** Callback when edit is clicked (user messages only) */\n onEdit?: () => void\n /** Callback when regenerate is clicked (AI messages only) */\n onRegenerate?: () => void\n /** Callback when feedback is given (AI messages only) */\n onFeedback?: (type: \"up\" | \"down\") => void\n /** Show edit button */\n showEdit?: boolean\n /** Show regenerate button */\n showRegenerate?: boolean\n /** Show feedback buttons */\n showFeedback?: boolean\n /** Size variant */\n size?: \"sm\" | \"default\"\n /** Current feedback state */\n feedbackState?: \"up\" | \"down\" | null\n}\n\nconst buttonSizes = {\n sm: \"h-7 w-7\",\n default: \"h-8 w-8\",\n}\n\nconst iconSizes = {\n sm: \"h-3.5 w-3.5\",\n default: \"h-4 w-4\",\n}\n\nexport function MessageActions({\n onCopy,\n onEdit,\n onRegenerate,\n onFeedback,\n showEdit = false,\n showRegenerate = false,\n showFeedback = false,\n size = \"default\",\n feedbackState = null,\n className,\n ...props\n}: MessageActionsProps) {\n const [copied, setCopied] = React.useState(false)\n\n const handleCopy = () => {\n setCopied(true)\n onCopy?.()\n setTimeout(() => setCopied(false), 2000)\n }\n\n return (\n <div\n className={cn(\n \"flex items-center gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity duration-150\",\n className\n )}\n {...props}\n >\n {/* Copy button */}\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(buttonSizes[size], \"text-muted-foreground hover:text-foreground\")}\n onClick={handleCopy}\n >\n {copied ? (\n <Check className={cn(iconSizes[size], \"text-siena-sage\")} />\n ) : (\n <Copy className={iconSizes[size]} />\n )}\n <span className=\"sr-only\">{copied ? \"Copied\" : \"Copy\"}</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"text-xs\">\n {copied ? \"Copied!\" : \"Copy\"}\n </TooltipContent>\n </Tooltip>\n\n {/* Edit button (user messages) */}\n {showEdit && onEdit && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(buttonSizes[size], \"text-muted-foreground hover:text-foreground\")}\n onClick={onEdit}\n >\n <Pencil className={iconSizes[size]} />\n <span className=\"sr-only\">Edit</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"text-xs\">\n Edit\n </TooltipContent>\n </Tooltip>\n )}\n\n {/* Regenerate button (AI messages) */}\n {showRegenerate && onRegenerate && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(buttonSizes[size], \"text-muted-foreground hover:text-foreground\")}\n onClick={onRegenerate}\n >\n <RefreshCw className={iconSizes[size]} />\n <span className=\"sr-only\">Regenerate</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"text-xs\">\n Regenerate\n </TooltipContent>\n </Tooltip>\n )}\n\n {/* Feedback buttons (AI messages) */}\n {showFeedback && onFeedback && (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n buttonSizes[size],\n \"text-muted-foreground hover:text-foreground\",\n feedbackState === \"up\" && \"text-siena-sage\"\n )}\n onClick={() => onFeedback(\"up\")}\n >\n <ThumbsUp\n className={cn(\n iconSizes[size],\n feedbackState === \"up\" && \"fill-current\"\n )}\n />\n <span className=\"sr-only\">Good response</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"text-xs\">\n Good response\n </TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n buttonSizes[size],\n \"text-muted-foreground hover:text-foreground\",\n feedbackState === \"down\" && \"text-destructive\"\n )}\n onClick={() => onFeedback(\"down\")}\n >\n <ThumbsDown\n className={cn(\n iconSizes[size],\n feedbackState === \"down\" && \"fill-current\"\n )}\n />\n <span className=\"sr-only\">Bad response</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"text-xs\">\n Bad response\n </TooltipContent>\n </Tooltip>\n </>\n )}\n </div>\n )\n}\n\nexport type { MessageActionsProps as MessageActionsPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { ChevronDown, Check } from \"lucide-react\"\n\n// ============================================================================\n// MODEL SELECTOR\n// Dropdown for selecting AI model (like Claude's Opus 4.5 selector)\n// ============================================================================\n\nexport interface Model {\n id: string\n name: string\n badge?: string\n description?: string\n}\n\nexport interface ModelSelectorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Available models */\n models: Model[]\n /** Currently selected model ID */\n selected: string\n /** Callback when model changes */\n onChange: (modelId: string) => void\n /** Size variant */\n size?: \"sm\" | \"default\"\n /** Disabled state */\n disabled?: boolean\n}\n\nconst triggerSizes = {\n sm: \"h-7 text-xs px-2\",\n default: \"h-8 text-sm px-3\",\n}\n\nexport function ModelSelector({\n models,\n selected,\n onChange,\n size = \"default\",\n disabled = false,\n className,\n ...props\n}: ModelSelectorProps) {\n const selectedModel = models.find((m) => m.id === selected)\n\n return (\n <div className={cn(\"inline-flex\", className)} {...props}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n disabled={disabled}\n className={cn(\n \"gap-1.5 font-medium text-muted-foreground hover:text-foreground\",\n triggerSizes[size]\n )}\n >\n {selectedModel?.name || \"Select model\"}\n {selectedModel?.badge && (\n <Badge\n variant=\"soft\"\n color=\"primary\"\n className=\"ml-1 px-1.5 py-0 text-[10px] font-medium\"\n >\n {selectedModel.badge}\n </Badge>\n )}\n <ChevronDown className=\"h-3.5 w-3.5 opacity-50\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-72\">\n {models.map((model) => (\n <DropdownMenuItem\n key={model.id}\n onClick={() => onChange(model.id)}\n className=\"flex items-center justify-between\"\n >\n <div className=\"flex flex-col gap-0.5\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{model.name}</span>\n {model.badge && (\n <Badge\n variant=\"soft\"\n color=\"primary\"\n className=\"px-1.5 py-0 text-[10px]\"\n >\n {model.badge}\n </Badge>\n )}\n </div>\n {model.description && (\n <span className=\"text-xs text-muted-foreground\">\n {model.description}\n </span>\n )}\n </div>\n {model.id === selected && (\n <Check className=\"h-4 w-4 text-primary\" />\n )}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n )\n}\n\nexport type { ModelSelectorProps as ModelSelectorPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\nimport { AudioLines, MicOff, Square } from \"lucide-react\"\n\n// ============================================================================\n// VOICE INPUT\n// Microphone button with Web Speech API integration\n// ============================================================================\n\n// Web Speech API types (not available in all TypeScript libs)\ninterface SpeechRecognitionEvent extends Event {\n results: SpeechRecognitionResultList\n}\n\ninterface SpeechRecognitionErrorEvent extends Event {\n error: string\n}\n\ninterface SpeechRecognitionResult {\n readonly isFinal: boolean\n readonly length: number\n item(index: number): SpeechRecognitionAlternative\n [index: number]: SpeechRecognitionAlternative\n}\n\ninterface SpeechRecognitionAlternative {\n readonly transcript: string\n readonly confidence: number\n}\n\ninterface SpeechRecognitionResultList {\n readonly length: number\n item(index: number): SpeechRecognitionResult\n [index: number]: SpeechRecognitionResult\n}\n\ninterface SpeechRecognitionInterface extends EventTarget {\n continuous: boolean\n interimResults: boolean\n lang: string\n onresult: ((event: SpeechRecognitionEvent) => void) | null\n onerror: ((event: SpeechRecognitionErrorEvent) => void) | null\n onend: (() => void) | null\n start(): void\n stop(): void\n abort(): void\n}\n\nexport interface VoiceInputProps extends Omit<React.HTMLAttributes<HTMLButtonElement>, \"onError\"> {\n /** Callback with transcribed text */\n onTranscript: (text: string) => void\n /** Callback when recording starts */\n onStart?: () => void\n /** Callback when recording ends */\n onEnd?: () => void\n /** Callback for errors */\n onError?: (error: string) => void\n /** Disabled state */\n disabled?: boolean\n /** Size variant */\n size?: \"sm\" | \"default\" | \"lg\"\n /** Show tooltip */\n showTooltip?: boolean\n}\n\nconst buttonSizes = {\n sm: \"h-7 w-7\",\n default: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n}\n\nconst iconSizes = {\n sm: \"h-3.5 w-3.5\",\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n}\n\nexport function VoiceInput({\n onTranscript,\n onStart,\n onEnd,\n onError,\n disabled = false,\n size = \"default\",\n showTooltip = true,\n className,\n ...props\n}: VoiceInputProps) {\n const [isRecording, setIsRecording] = React.useState(false)\n const [isSupported, setIsSupported] = React.useState(true)\n const recognitionRef = React.useRef<SpeechRecognitionInterface | null>(null)\n\n React.useEffect(() => {\n // Check for Web Speech API support\n const SpeechRecognition =\n window.SpeechRecognition || window.webkitSpeechRecognition\n\n if (!SpeechRecognition) {\n setIsSupported(false)\n return\n }\n\n const recognition = new SpeechRecognition()\n recognition.continuous = false\n recognition.interimResults = true\n recognition.lang = \"en-US\"\n\n recognition.onresult = (event) => {\n const transcript = Array.from(event.results)\n .map((result) => result[0].transcript)\n .join(\"\")\n\n // Only send final results\n if (event.results[event.results.length - 1].isFinal) {\n onTranscript(transcript)\n }\n }\n\n recognition.onerror = (event) => {\n console.error(\"Speech recognition error:\", event.error)\n setIsRecording(false)\n onError?.(event.error)\n }\n\n recognition.onend = () => {\n setIsRecording(false)\n onEnd?.()\n }\n\n recognitionRef.current = recognition\n\n return () => {\n recognition.abort()\n }\n }, [onTranscript, onEnd, onError])\n\n const toggleRecording = () => {\n if (!recognitionRef.current || !isSupported) {\n onError?.(\"Speech recognition not supported in this browser\")\n return\n }\n\n if (isRecording) {\n recognitionRef.current.stop()\n setIsRecording(false)\n } else {\n try {\n recognitionRef.current.start()\n setIsRecording(true)\n onStart?.()\n } catch (error) {\n console.error(\"Failed to start recording:\", error)\n onError?.(\"Failed to start recording\")\n }\n }\n }\n\n const button = (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled || !isSupported}\n onClick={toggleRecording}\n className={cn(\n buttonSizes[size],\n \"text-muted-foreground hover:text-foreground\",\n isRecording && \"text-destructive chat-voice-pulse\",\n !isSupported && \"opacity-50 cursor-not-allowed\",\n className\n )}\n aria-label={isRecording ? \"Stop recording\" : \"Start voice input\"}\n {...props}\n >\n {isRecording ? (\n <Square className={cn(iconSizes[size], \"fill-current\")} />\n ) : isSupported ? (\n <AudioLines className={iconSizes[size]} />\n ) : (\n <MicOff className={iconSizes[size]} />\n )}\n </Button>\n )\n\n if (!showTooltip) return button\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"top\" className=\"text-xs\">\n {!isSupported\n ? \"Voice input not supported\"\n : isRecording\n ? \"Click to stop\"\n : \"Voice input\"}\n </TooltipContent>\n </Tooltip>\n )\n}\n\n// Add types for browsers that don't have them\ndeclare global {\n interface Window {\n SpeechRecognition: new () => SpeechRecognitionInterface\n webkitSpeechRecognition: new () => SpeechRecognitionInterface\n }\n}\n\nexport type { VoiceInputProps as VoiceInputPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport ReactMarkdown from \"react-markdown\"\nimport remarkGfm from \"remark-gfm\"\nimport { cn } from \"@/lib/utils\"\n\n// ============================================================================\n// MARKDOWN RENDERER\n// Renders markdown content with Siena styling\n// ============================================================================\n\nexport interface MarkdownRendererProps {\n /** Markdown content string */\n content: string\n /** Additional classes */\n className?: string\n /** Variant affects link color and code styling */\n variant?: \"default\" | \"inverse\"\n}\n\nexport function MarkdownRenderer({\n content,\n className,\n variant = \"default\",\n}: MarkdownRendererProps) {\n return (\n <div\n className={cn(\n \"prose prose-sm max-w-none\",\n variant === \"default\" && \"prose-siena\",\n variant === \"inverse\" && \"prose-invert\",\n className\n )}\n >\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n components={{\n // Headers - sized for chat context (smaller than page headers)\n h1: ({ children }) => (\n <h1 className=\"text-base font-medium mt-3 mb-1.5 first:mt-0\">\n {children}\n </h1>\n ),\n h2: ({ children }) => (\n <h2 className=\"text-sm font-medium mt-2.5 mb-1 first:mt-0\">\n {children}\n </h2>\n ),\n h3: ({ children }) => (\n <h3 className=\"text-sm font-medium mt-2 mb-1 first:mt-0\">\n {children}\n </h3>\n ),\n h4: ({ children }) => (\n <h4 className=\"text-xs font-medium mt-2 mb-0.5 first:mt-0\">\n {children}\n </h4>\n ),\n\n // Paragraphs - tight line-height for compact chat\n p: ({ children }) => (\n <p className=\"text-sm mb-2 last:mb-0 leading-snug\">{children}</p>\n ),\n\n // Lists - compact spacing\n ul: ({ children }) => (\n <ul className=\"text-sm mb-2 last:mb-0 pl-4 space-y-0 list-disc\">\n {children}\n </ul>\n ),\n ol: ({ children }) => (\n <ol className=\"text-sm mb-2 last:mb-0 pl-4 space-y-0 list-decimal\">\n {children}\n </ol>\n ),\n li: ({ children }) => (\n <li className=\"leading-snug pl-0.5\">{children}</li>\n ),\n\n // Links\n a: ({ href, children }) => (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n \"underline underline-offset-2 transition-colors\",\n variant === \"default\"\n ? \"text-primary hover:text-primary/80\"\n : \"text-inherit hover:opacity-80\"\n )}\n >\n {children}\n </a>\n ),\n\n // Code\n code: ({ className, children, ...props }) => {\n // Check if it's inline code (no className with language-)\n const isInline = !className?.includes(\"language-\")\n\n if (isInline) {\n return (\n <code\n className={cn(\n \"px-1.5 py-0.5 rounded text-sm font-mono\",\n variant === \"default\"\n ? \"bg-muted text-foreground\"\n : \"bg-white/10 text-inherit\"\n )}\n {...props}\n >\n {children}\n </code>\n )\n }\n\n return (\n <code className={cn(\"font-mono text-sm\", className)} {...props}>\n {children}\n </code>\n )\n },\n\n // Code blocks\n pre: ({ children }) => (\n <pre\n className={cn(\n \"mb-3 last:mb-0 p-4 rounded-lg overflow-x-auto text-sm\",\n variant === \"default\" ? \"bg-muted\" : \"bg-black/20\"\n )}\n >\n {children}\n </pre>\n ),\n\n // Blockquotes\n blockquote: ({ children }) => (\n <blockquote\n className={cn(\n \"border-l-2 pl-4 italic mb-3 last:mb-0\",\n variant === \"default\"\n ? \"border-primary text-muted-foreground\"\n : \"border-white/50 text-inherit/80\"\n )}\n >\n {children}\n </blockquote>\n ),\n\n // Horizontal rule\n hr: () => <hr className=\"my-4 border-border\" />,\n\n // Tables\n table: ({ children }) => (\n <div className=\"mb-3 last:mb-0 overflow-x-auto\">\n <table className=\"w-full text-sm border-collapse\">{children}</table>\n </div>\n ),\n thead: ({ children }) => (\n <thead className=\"bg-muted\">{children}</thead>\n ),\n th: ({ children }) => (\n <th className=\"px-3 py-2 text-left font-medium border border-border\">\n {children}\n </th>\n ),\n td: ({ children }) => (\n <td className=\"px-3 py-2 border border-border\">{children}</td>\n ),\n\n // Strong and emphasis\n strong: ({ children }) => (\n <strong className=\"font-semibold\">{children}</strong>\n ),\n em: ({ children }) => <em className=\"italic\">{children}</em>,\n\n // Task lists (GFM)\n input: ({ checked }) => (\n <input\n type=\"checkbox\"\n checked={checked}\n readOnly\n className=\"mr-2 accent-primary\"\n />\n ),\n }}\n >\n {content}\n </ReactMarkdown>\n </div>\n )\n}\n\nexport type { MarkdownRendererProps as MarkdownRendererPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { MarkdownRenderer } from \"./markdown-renderer\"\n\n// ============================================================================\n// STREAMING TEXT\n// Typewriter effect for AI responses with cursor animation\n// ============================================================================\n\nexport interface StreamingTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Full content (updates as stream progresses) */\n content: string\n /** Whether content is still streaming */\n isStreaming?: boolean\n /** Speed of typewriter effect (characters per render) */\n chunkSize?: number\n /** Delay between chunks in ms */\n delay?: number\n /** Show blinking cursor while streaming */\n showCursor?: boolean\n /** Use markdown rendering */\n renderMarkdown?: boolean\n /** Markdown variant */\n markdownVariant?: \"default\" | \"inverse\"\n /** Callback when streaming animation completes */\n onComplete?: () => void\n}\n\nexport function StreamingText({\n content,\n isStreaming = false,\n chunkSize = 3,\n delay = 20,\n showCursor = true,\n renderMarkdown = true,\n markdownVariant = \"default\",\n onComplete,\n className,\n ...props\n}: StreamingTextProps) {\n const [displayedContent, setDisplayedContent] = React.useState(\"\")\n const [isAnimating, setIsAnimating] = React.useState(false)\n const animationRef = React.useRef<number | null>(null)\n const previousContentRef = React.useRef(content)\n\n React.useEffect(() => {\n // If content changed and we're streaming, animate the new content\n if (isStreaming && content !== previousContentRef.current) {\n const newChars = content.slice(previousContentRef.current.length)\n\n if (newChars.length > 0) {\n setIsAnimating(true)\n let currentIndex = displayedContent.length\n\n const animate = () => {\n currentIndex += chunkSize\n\n if (currentIndex >= content.length) {\n setDisplayedContent(content)\n setIsAnimating(false)\n previousContentRef.current = content\n } else {\n setDisplayedContent(content.slice(0, currentIndex))\n animationRef.current = window.setTimeout(animate, delay)\n }\n }\n\n animate()\n }\n }\n\n // If streaming stopped, show full content\n if (!isStreaming && displayedContent !== content) {\n if (animationRef.current) {\n clearTimeout(animationRef.current)\n }\n setDisplayedContent(content)\n setIsAnimating(false)\n previousContentRef.current = content\n onComplete?.()\n }\n\n return () => {\n if (animationRef.current) {\n clearTimeout(animationRef.current)\n }\n }\n }, [content, isStreaming, chunkSize, delay, displayedContent, onComplete])\n\n // Initial mount - show content immediately if not streaming\n React.useEffect(() => {\n if (!isStreaming && content) {\n setDisplayedContent(content)\n previousContentRef.current = content\n }\n }, [])\n\n const showAnimatedCursor = showCursor && (isStreaming || isAnimating)\n\n return (\n <div className={cn(\"relative\", className)} {...props}>\n {renderMarkdown ? (\n <MarkdownRenderer\n content={displayedContent}\n variant={markdownVariant}\n />\n ) : (\n <span className=\"whitespace-pre-wrap\">{displayedContent}</span>\n )}\n {showAnimatedCursor && (\n <span className=\"chat-cursor\" aria-hidden=\"true\" />\n )}\n </div>\n )\n}\n\nexport type { StreamingTextProps as StreamingTextPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { ChatAvatar } from \"./chat-avatar\"\nimport { MessageActions } from \"./message-actions\"\nimport { MarkdownRenderer } from \"./markdown-renderer\"\nimport { StreamingText } from \"./streaming-text\"\nimport { format } from \"date-fns\"\nimport { Check, X } from \"lucide-react\"\n\n// ============================================================================\n// MESSAGE BUBBLE\n// Chat message with user/assistant variants, actions, and streaming support\n// ============================================================================\n\nexport interface Attachment {\n id: string\n type: \"image\" | \"file\" | \"video\"\n name: string\n url?: string\n thumbnail?: string\n size?: number\n}\n\nexport interface Message {\n id: string\n role: \"user\" | \"assistant\"\n content: string\n timestamp?: Date\n attachments?: Attachment[]\n status?: \"sending\" | \"sent\" | \"error\"\n}\n\nexport interface MessageBubbleProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Message role */\n role: \"user\" | \"assistant\"\n /** Message content (markdown string) */\n content: string\n /** Message timestamp */\n timestamp?: Date\n /** Message status */\n status?: \"sending\" | \"sent\" | \"error\"\n /** Attached files/images */\n attachments?: Attachment[]\n /** Enable streaming animation */\n streaming?: boolean\n /** Show avatar */\n showAvatar?: boolean\n /** Copy callback */\n onCopy?: () => void\n /** Edit callback (user messages) - toggles edit mode */\n onEdit?: () => void\n /** Save edited content callback */\n onSaveEdit?: (newContent: string) => void\n /** Cancel edit callback */\n onCancelEdit?: () => void\n /** Whether message is being edited */\n isEditing?: boolean\n /** Regenerate callback (AI messages) */\n onRegenerate?: () => void\n /** Feedback callback (AI messages) */\n onFeedback?: (type: \"up\" | \"down\") => void\n /** Current feedback state */\n feedbackState?: \"up\" | \"down\" | null\n /** Visual variant: compact (wrapped bubble) or full (full-width, no bubble wrapper) */\n variant?: \"compact\" | \"full\"\n}\n\nexport function MessageBubble({\n role,\n content,\n timestamp,\n status,\n attachments,\n streaming = false,\n showAvatar = true,\n onCopy,\n onEdit,\n onSaveEdit,\n onCancelEdit,\n isEditing = false,\n onRegenerate,\n onFeedback,\n feedbackState,\n variant = \"compact\",\n className,\n ...props\n}: MessageBubbleProps) {\n const isUser = role === \"user\"\n const [editValue, setEditValue] = React.useState(content)\n const textareaRef = React.useRef<HTMLTextAreaElement>(null)\n\n // Reset edit value when content changes or editing starts\n React.useEffect(() => {\n if (isEditing) {\n setEditValue(content)\n // Focus textarea after a tick\n setTimeout(() => textareaRef.current?.focus(), 0)\n }\n }, [isEditing, content])\n\n // Auto-resize edit textarea\n React.useEffect(() => {\n if (textareaRef.current && isEditing) {\n textareaRef.current.style.height = \"0\"\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`\n }\n }, [editValue, isEditing])\n\n const handleSave = () => {\n if (editValue.trim() && onSaveEdit) {\n onSaveEdit(editValue.trim())\n }\n }\n\n const handleCancel = () => {\n setEditValue(content)\n onCancelEdit?.()\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault()\n handleSave()\n }\n if (e.key === \"Escape\") {\n handleCancel()\n }\n }\n const isAssistant = role === \"assistant\"\n const isCompact = variant === \"compact\"\n\n // Preprocess content: convert escaped newlines to actual newlines\n const processedContent = React.useMemo(() => {\n return content\n .replace(/\\\\n/g, \"\\n\") // Convert escaped \\n to real newlines\n .replace(/\\r\\n/g, \"\\n\") // Normalize Windows line endings\n }, [content])\n\n const handleCopy = () => {\n navigator.clipboard.writeText(content)\n onCopy?.()\n }\n\n // Full variant: no bubble, full-width AI responses (for Ask Siena)\n if (!isCompact && isAssistant) {\n return (\n <div\n className={cn(\"group flex gap-3 chat-message-enter\", className)}\n {...props}\n >\n {/* Avatar */}\n {showAvatar && (\n <div className=\"flex-shrink-0 mt-1\">\n <ChatAvatar type=\"ai\" size=\"default\" />\n </div>\n )}\n\n {/* Full-width content */}\n <div className=\"flex-1 min-w-0 flex flex-col gap-1\">\n {/* Attachments */}\n {attachments && attachments.length > 0 && (\n <div className=\"flex flex-wrap gap-2 mb-2\">\n {attachments.map((attachment) => (\n <div\n key={attachment.id}\n className=\"relative rounded-lg overflow-hidden\"\n >\n {attachment.type === \"image\" && attachment.thumbnail && (\n <img\n src={attachment.thumbnail}\n alt={attachment.name}\n className=\"max-w-[200px] max-h-[150px] object-cover rounded-lg\"\n />\n )}\n {attachment.type === \"file\" && (\n <div className=\"flex items-center gap-2 px-3 py-2 bg-muted rounded-lg text-sm\">\n <span className=\"truncate max-w-[150px]\">\n {attachment.name}\n </span>\n </div>\n )}\n </div>\n ))}\n </div>\n )}\n\n {/* Content - no bubble wrapper */}\n <div className={cn(status === \"sending\" && \"opacity-70\")}>\n {streaming ? (\n <StreamingText\n content={processedContent}\n isStreaming={streaming}\n renderMarkdown\n markdownVariant=\"default\"\n />\n ) : (\n <MarkdownRenderer content={processedContent} variant=\"default\" />\n )}\n </div>\n\n {/* Footer - hover-only */}\n <div className=\"flex items-center gap-2 mt-1 -ml-1 opacity-0 group-hover:opacity-100 transition-opacity duration-150\">\n <MessageActions\n onCopy={handleCopy}\n onRegenerate={onRegenerate}\n onFeedback={onFeedback}\n showRegenerate={!!onRegenerate}\n showFeedback={!!onFeedback}\n feedbackState={feedbackState}\n size=\"sm\"\n className=\"opacity-100\"\n />\n {timestamp && (\n <span className=\"text-xs text-muted-foreground\">\n {format(timestamp, \"MMM d, h:mm a\")}\n </span>\n )}\n </div>\n </div>\n </div>\n )\n }\n\n // Compact variant: wrapped bubbles (for Widget/Playground)\n return (\n <div\n className={cn(\n \"group flex gap-3 chat-message-enter\",\n isUser && \"flex-row-reverse\",\n className\n )}\n {...props}\n >\n {/* Avatar */}\n {showAvatar && (\n <div className=\"flex-shrink-0 mt-1\">\n <ChatAvatar\n type={isUser ? \"user\" : \"ai\"}\n size=\"default\"\n />\n </div>\n )}\n\n {/* Message content */}\n <div\n className={cn(\n \"flex flex-col gap-1 max-w-[85%] md:max-w-[75%]\",\n isUser && \"items-end\"\n )}\n >\n {/* Attachments (if any) */}\n {attachments && attachments.length > 0 && (\n <div className={cn(\"flex flex-wrap gap-2 mb-2\", isUser && \"justify-end\")}>\n {attachments.map((attachment) => (\n <div\n key={attachment.id}\n className=\"relative rounded-lg overflow-hidden\"\n >\n {attachment.type === \"image\" && attachment.thumbnail && (\n <img\n src={attachment.thumbnail}\n alt={attachment.name}\n className=\"max-w-[200px] max-h-[150px] object-cover rounded-lg\"\n />\n )}\n {attachment.type === \"file\" && (\n <div className=\"flex items-center gap-2 px-3 py-2 bg-muted rounded-lg text-sm\">\n <span className=\"truncate max-w-[150px]\">\n {attachment.name}\n </span>\n </div>\n )}\n </div>\n ))}\n </div>\n )}\n\n {/* Message bubble */}\n <div\n className={cn(\n \"relative rounded-2xl px-4 py-3\",\n isUser && !isEditing && [\n \"bg-[var(--chat-user-bg)] text-[var(--chat-user-fg)]\",\n \"rounded-br-sm\", // Tail on right\n ],\n isUser && isEditing && [\n \"bg-muted border border-border\",\n \"rounded-br-sm\",\n ],\n isAssistant && [\n \"bg-card border border-border\",\n \"rounded-bl-sm\", // Tail on left\n ],\n status === \"error\" && \"border-destructive\",\n status === \"sending\" && \"opacity-70\"\n )}\n >\n {/* Edit mode for user messages */}\n {isEditing && isUser ? (\n <div className=\"flex flex-col gap-2\">\n <textarea\n ref={textareaRef}\n value={editValue}\n onChange={(e) => setEditValue(e.target.value)}\n onKeyDown={handleKeyDown}\n className={cn(\n \"w-full bg-transparent border-0 outline-none resize-none\",\n \"text-sm leading-6\",\n \"min-h-[24px]\"\n )}\n rows={1}\n />\n <div className=\"flex items-center justify-end gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 text-muted-foreground\"\n onClick={handleCancel}\n >\n <X className=\"h-4 w-4 mr-1\" />\n Cancel\n </Button>\n <Button\n size=\"sm\"\n className=\"h-7 px-3\"\n onClick={handleSave}\n disabled={!editValue.trim()}\n >\n <Check className=\"h-4 w-4 mr-1\" />\n Save\n </Button>\n </div>\n </div>\n ) : (\n /* Content */\n streaming && isAssistant ? (\n <StreamingText\n content={processedContent}\n isStreaming={streaming}\n renderMarkdown\n markdownVariant={isUser ? \"inverse\" : \"default\"}\n />\n ) : (\n <MarkdownRenderer\n content={processedContent}\n variant={isUser ? \"inverse\" : \"default\"}\n />\n )\n )}\n </div>\n\n {/* Footer: timestamp and actions - all hover-only */}\n <div\n className={cn(\n \"flex items-center gap-2 px-1 w-full opacity-0 group-hover:opacity-100 transition-opacity duration-150\",\n isUser ? \"justify-end\" : \"justify-start\"\n )}\n >\n {/* For user: Timestamp, then actions */}\n {/* For assistant: Actions first, then timestamp */}\n {isUser ? (\n <>\n {timestamp && (\n <span className=\"text-xs text-muted-foreground\">\n {format(timestamp, \"h:mm a\")}\n </span>\n )}\n <MessageActions\n onCopy={handleCopy}\n onEdit={onEdit}\n showEdit={!!onEdit}\n feedbackState={feedbackState}\n size=\"sm\"\n className=\"opacity-100\"\n />\n </>\n ) : (\n <>\n <MessageActions\n onCopy={handleCopy}\n onRegenerate={onRegenerate}\n onFeedback={onFeedback}\n showRegenerate={!!onRegenerate}\n showFeedback={!!onFeedback}\n feedbackState={feedbackState}\n size=\"sm\"\n className=\"opacity-100\"\n />\n {timestamp && (\n <span className=\"text-xs text-muted-foreground\">\n {format(timestamp, \"h:mm a\")}\n </span>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport type { MessageBubbleProps as MessageBubblePropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\"\nimport { Button } from \"@/components/ui/button\"\nimport { Spinner } from \"@/components/ui/spinner\"\nimport { ChevronDown, Check, AlertCircle, Copy, Download } from \"lucide-react\"\n\n// ============================================================================\n// TOOL CALL BLOCK\n// Collapsible block showing AI tool/function execution\n// ============================================================================\n\nexport interface ToolCallBlockProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Tool/function name */\n name: string\n /** Optional icon for the tool */\n icon?: React.ReactNode\n /** Execution status */\n status: \"running\" | \"complete\" | \"error\"\n /** Result content (can be text, table, or custom ReactNode) */\n result?: React.ReactNode\n /** Whether the block is expandable */\n expandable?: boolean\n /** Default expanded state */\n defaultExpanded?: boolean\n /** Error message (when status is error) */\n errorMessage?: string\n /** Show copy button for results */\n showCopy?: boolean\n /** Show download button for results */\n showDownload?: boolean\n /** Copy callback */\n onCopy?: () => void\n /** Download callback */\n onDownload?: () => void\n}\n\nexport function ToolCallBlock({\n name,\n icon,\n status,\n result,\n expandable = true,\n defaultExpanded = false,\n errorMessage,\n showCopy = false,\n showDownload = false,\n onCopy,\n onDownload,\n className,\n ...props\n}: ToolCallBlockProps) {\n const [isOpen, setIsOpen] = React.useState(defaultExpanded)\n\n const statusIcon = React.useMemo(() => {\n switch (status) {\n case \"running\":\n return <Spinner size=\"sm\" className=\"text-primary\" />\n case \"complete\":\n return <Check className=\"h-4 w-4 text-siena-sage\" />\n case \"error\":\n return <AlertCircle className=\"h-4 w-4 text-destructive\" />\n }\n }, [status])\n\n const content = (\n <div\n className={cn(\n \"rounded-lg border transition-colors\",\n status === \"running\" && \"border-primary/30 bg-primary/5\",\n status === \"complete\" && \"border-border bg-[var(--chat-tool-bg)]\",\n status === \"error\" && \"border-destructive/30 bg-destructive/5\",\n className\n )}\n {...props}\n >\n {/* Header */}\n <div\n className={cn(\n \"flex items-center justify-between px-4 py-3\",\n expandable && result && \"cursor-pointer\"\n )}\n onClick={() => expandable && result && setIsOpen(!isOpen)}\n >\n <div className=\"flex items-center gap-3\">\n {/* Tool icon or status */}\n <div className=\"flex-shrink-0\">\n {icon || statusIcon}\n </div>\n\n {/* Tool name */}\n <span className=\"font-mono text-sm font-medium\">{name}</span>\n\n {/* Result count badge (if applicable) */}\n {status === \"complete\" && result && typeof result === \"object\" && (\n <span className=\"text-xs text-muted-foreground\">\n {/* Placeholder for result count - parent can pass this info */}\n </span>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n {/* Action buttons */}\n {status === \"complete\" && (\n <>\n {showCopy && onCopy && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-muted-foreground hover:text-foreground\"\n onClick={(e) => {\n e.stopPropagation()\n onCopy()\n }}\n >\n <Copy className=\"h-4 w-4\" />\n </Button>\n )}\n {showDownload && onDownload && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-muted-foreground hover:text-foreground\"\n onClick={(e) => {\n e.stopPropagation()\n onDownload()\n }}\n >\n <Download className=\"h-4 w-4\" />\n </Button>\n )}\n </>\n )}\n\n {/* Expand/collapse chevron */}\n {expandable && result && (\n <ChevronDown\n className={cn(\n \"h-4 w-4 text-muted-foreground transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n )}\n </div>\n </div>\n\n {/* Expandable content */}\n {expandable && result && isOpen && (\n <div className=\"px-4 pb-4 pt-0\">\n <div className=\"border-t border-border pt-4\">\n {status === \"error\" && errorMessage ? (\n <p className=\"text-sm text-destructive\">{errorMessage}</p>\n ) : (\n result\n )}\n </div>\n </div>\n )}\n </div>\n )\n\n // If not expandable, just render the block\n if (!expandable || !result) {\n return content\n }\n\n // Use Collapsible for animated expand/collapse\n return (\n <Collapsible open={isOpen} onOpenChange={setIsOpen}>\n <div\n className={cn(\n \"rounded-lg border transition-colors\",\n status === \"running\" && \"border-primary/30 bg-primary/5\",\n status === \"complete\" && \"border-border bg-[var(--chat-tool-bg)]\",\n status === \"error\" && \"border-destructive/30 bg-destructive/5\",\n className\n )}\n {...props}\n >\n {/* Header as trigger */}\n <CollapsibleTrigger asChild>\n <div className=\"flex items-center justify-between px-4 py-3 cursor-pointer\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex-shrink-0\">{icon || statusIcon}</div>\n <span className=\"font-mono text-sm font-medium\">{name}</span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {status === \"complete\" && (\n <>\n {showCopy && onCopy && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-muted-foreground hover:text-foreground\"\n onClick={(e) => {\n e.stopPropagation()\n onCopy()\n }}\n >\n <Copy className=\"h-4 w-4\" />\n </Button>\n )}\n {showDownload && onDownload && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-muted-foreground hover:text-foreground\"\n onClick={(e) => {\n e.stopPropagation()\n onDownload()\n }}\n >\n <Download className=\"h-4 w-4\" />\n </Button>\n )}\n </>\n )}\n <ChevronDown\n className={cn(\n \"h-4 w-4 text-muted-foreground transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </div>\n </div>\n </CollapsibleTrigger>\n\n {/* Content */}\n <CollapsibleContent>\n <div className=\"px-4 pb-4 pt-0\">\n <div className=\"border-t border-border pt-4\">\n {status === \"error\" && errorMessage ? (\n <p className=\"text-sm text-destructive\">{errorMessage}</p>\n ) : (\n result\n )}\n </div>\n </div>\n </CollapsibleContent>\n </div>\n </Collapsible>\n )\n}\n\nexport type { ToolCallBlockProps as ToolCallBlockPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { X, Download, ZoomIn, ZoomOut, RotateCw } from \"lucide-react\"\nimport { type Attachment } from \"./attachment-preview\"\n\n// ============================================================================\n// ATTACHMENT LIGHTBOX\n// Fullscreen modal for viewing attachments (images, videos, documents)\n// ============================================================================\n\nexport interface AttachmentLightboxProps {\n /** Attachment to display */\n attachment: Attachment | null\n /** Whether the lightbox is open */\n open: boolean\n /** Close callback */\n onClose: () => void\n /** Optional download callback */\n onDownload?: (attachment: Attachment) => void\n}\n\nexport function AttachmentLightbox({\n attachment,\n open,\n onClose,\n onDownload,\n}: AttachmentLightboxProps) {\n const [zoom, setZoom] = React.useState(1)\n const [rotation, setRotation] = React.useState(0)\n\n // Reset zoom/rotation when attachment changes\n React.useEffect(() => {\n setZoom(1)\n setRotation(0)\n }, [attachment])\n\n // Handle escape key\n React.useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && open) {\n onClose()\n }\n }\n window.addEventListener(\"keydown\", handleEscape)\n return () => window.removeEventListener(\"keydown\", handleEscape)\n }, [open, onClose])\n\n // Prevent body scroll when open\n React.useEffect(() => {\n if (open) {\n document.body.style.overflow = \"hidden\"\n } else {\n document.body.style.overflow = \"\"\n }\n return () => {\n document.body.style.overflow = \"\"\n }\n }, [open])\n\n if (!open || !attachment) return null\n\n const isImage = attachment.type === \"image\"\n const isVideo = attachment.type === \"video\"\n\n const handleZoomIn = () => setZoom((z) => Math.min(z + 0.25, 3))\n const handleZoomOut = () => setZoom((z) => Math.max(z - 0.25, 0.5))\n const handleRotate = () => setRotation((r) => (r + 90) % 360)\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center\"\n onClick={onClose}\n >\n {/* Backdrop */}\n <div className=\"absolute inset-0 bg-black/90 backdrop-blur-sm\" />\n\n {/* Header controls */}\n <div className=\"absolute top-0 left-0 right-0 flex items-center justify-between p-4 z-10\">\n {/* Filename */}\n <div className=\"text-white/80 text-sm font-medium truncate max-w-[50%]\">\n {attachment.name}\n </div>\n\n {/* Actions */}\n <div className=\"flex items-center gap-2\">\n {isImage && (\n <>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-9 w-9 text-white/70 hover:text-white hover:bg-white/10\"\n onClick={(e) => {\n e.stopPropagation()\n handleZoomOut()\n }}\n >\n <ZoomOut className=\"h-5 w-5\" />\n </Button>\n <span className=\"text-white/60 text-sm min-w-[3rem] text-center\">\n {Math.round(zoom * 100)}%\n </span>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-9 w-9 text-white/70 hover:text-white hover:bg-white/10\"\n onClick={(e) => {\n e.stopPropagation()\n handleZoomIn()\n }}\n >\n <ZoomIn className=\"h-5 w-5\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-9 w-9 text-white/70 hover:text-white hover:bg-white/10\"\n onClick={(e) => {\n e.stopPropagation()\n handleRotate()\n }}\n >\n <RotateCw className=\"h-5 w-5\" />\n </Button>\n </>\n )}\n {onDownload && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-9 w-9 text-white/70 hover:text-white hover:bg-white/10\"\n onClick={(e) => {\n e.stopPropagation()\n onDownload(attachment)\n }}\n >\n <Download className=\"h-5 w-5\" />\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-9 w-9 text-white/70 hover:text-white hover:bg-white/10\"\n onClick={(e) => {\n e.stopPropagation()\n onClose()\n }}\n >\n <X className=\"h-5 w-5\" />\n </Button>\n </div>\n </div>\n\n {/* Content */}\n <div\n className=\"relative max-w-[90vw] max-h-[85vh] flex items-center justify-center\"\n onClick={(e) => e.stopPropagation()}\n >\n {isImage && (attachment.url || attachment.thumbnail) && (\n <img\n src={attachment.url || attachment.thumbnail}\n alt={attachment.name}\n className=\"max-w-full max-h-[85vh] object-contain rounded-lg transition-transform duration-200\"\n style={{\n transform: `scale(${zoom}) rotate(${rotation}deg)`,\n }}\n />\n )}\n\n {isVideo && attachment.url && (\n <video\n src={attachment.url}\n controls\n autoPlay\n className=\"max-w-full max-h-[85vh] rounded-lg\"\n />\n )}\n\n {attachment.type === \"file\" && (\n <div className=\"bg-card rounded-xl p-8 text-center\">\n <div className=\"text-4xl mb-4\">📄</div>\n <div className=\"text-lg font-medium mb-2\">{attachment.name}</div>\n {attachment.size && (\n <div className=\"text-sm text-muted-foreground\">\n {formatFileSize(attachment.size)}\n </div>\n )}\n {onDownload && (\n <Button\n className=\"mt-4\"\n onClick={() => onDownload(attachment)}\n >\n <Download className=\"h-4 w-4 mr-2\" />\n Download\n </Button>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n}\n\nexport type { AttachmentLightboxProps as AttachmentLightboxPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Progress } from \"@/components/ui/progress\"\nimport { X, File, FileText, Play } from \"lucide-react\"\nimport { AttachmentLightbox } from \"./attachment-lightbox\"\n\n// ============================================================================\n// ATTACHMENT PREVIEW\n// Beautiful attachment thumbnails for chat input - Claude-style design\n// ============================================================================\n\nexport interface Attachment {\n id: string\n type: \"image\" | \"file\" | \"video\"\n name: string\n url?: string\n thumbnail?: string\n size?: number\n progress?: number // 0-100 for upload progress\n status?: \"uploading\" | \"complete\" | \"error\"\n mimeType?: string\n}\n\nexport interface AttachmentPreviewProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onClick\"> {\n /** List of attachments */\n attachments: Attachment[]\n /** Callback when remove button is clicked */\n onRemove?: (id: string) => void\n /** Callback when attachment is clicked */\n onAttachmentClick?: (attachment: Attachment) => void\n /** Display variant */\n variant?: \"compact\" | \"full\" | \"inline\"\n /** Allow downloading attachments */\n allowDownload?: boolean\n /** Show progress for uploading files */\n showProgress?: boolean\n /** Enable lightbox on click */\n enableLightbox?: boolean\n}\n\nconst formatFileSize = (bytes?: number): string => {\n if (!bytes) return \"\"\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n}\n\nexport function AttachmentPreview({\n attachments,\n onRemove,\n onAttachmentClick,\n variant = \"compact\",\n allowDownload = false,\n showProgress = true,\n enableLightbox = true,\n className,\n ...props\n}: AttachmentPreviewProps) {\n const [lightboxAttachment, setLightboxAttachment] = React.useState<Attachment | null>(null)\n\n if (attachments.length === 0) return null\n\n const handleClick = (attachment: Attachment) => {\n if (onAttachmentClick) {\n onAttachmentClick(attachment)\n } else if (enableLightbox && (attachment.type === \"image\" || attachment.type === \"video\")) {\n setLightboxAttachment(attachment)\n }\n }\n\n const handleDownload = (attachment: Attachment) => {\n if (attachment.url) {\n const a = document.createElement(\"a\")\n a.href = attachment.url\n a.download = attachment.name\n a.click()\n }\n }\n\n return (\n <>\n <div\n className={cn(\n \"flex flex-wrap gap-2\",\n variant === \"inline\" && \"gap-3\",\n className\n )}\n {...props}\n >\n {attachments.map((attachment) => {\n const isUploading = attachment.status === \"uploading\" ||\n (showProgress && attachment.progress !== undefined && attachment.progress < 100)\n\n // Inline variant - large thumbnails inside input (Claude-style)\n if (variant === \"inline\") {\n return (\n <div\n key={attachment.id}\n className=\"relative group\"\n >\n {/* Image/Video thumbnail */}\n {(attachment.type === \"image\" || attachment.type === \"video\") && (\n <div\n className={cn(\n \"relative w-[120px] h-[120px] rounded-xl overflow-hidden cursor-pointer\",\n \"transition-transform hover:scale-[1.02]\",\n isUploading && \"opacity-70\"\n )}\n onClick={() => handleClick(attachment)}\n >\n {attachment.thumbnail ? (\n <img\n src={attachment.thumbnail}\n alt={attachment.name}\n className=\"w-full h-full object-cover\"\n />\n ) : (\n <div className=\"w-full h-full bg-muted flex items-center justify-center\">\n <Play className=\"h-8 w-8 text-muted-foreground\" />\n </div>\n )}\n\n {/* Title overlay at bottom */}\n <div className=\"absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/60 to-transparent p-2 pt-6\">\n <span className=\"text-white text-xs font-medium truncate block\">\n {attachment.name.replace(/\\.[^/.]+$/, \"\")}\n </span>\n </div>\n\n {/* Video play icon */}\n {attachment.type === \"video\" && (\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <div className=\"w-10 h-10 rounded-full bg-black/50 flex items-center justify-center\">\n <Play className=\"h-5 w-5 text-white fill-white ml-0.5\" />\n </div>\n </div>\n )}\n\n {/* Upload progress */}\n {isUploading && attachment.progress !== undefined && (\n <div className=\"absolute inset-0 bg-black/40 flex items-center justify-center\">\n <div className=\"w-16\">\n <Progress value={attachment.progress} className=\"h-1\" />\n </div>\n </div>\n )}\n </div>\n )}\n\n {/* File thumbnail */}\n {attachment.type === \"file\" && (\n <div\n className={cn(\n \"relative w-[120px] h-[120px] rounded-xl overflow-hidden cursor-pointer\",\n \"bg-muted flex flex-col items-center justify-center gap-2 p-3\",\n \"transition-transform hover:scale-[1.02]\",\n isUploading && \"opacity-70\"\n )}\n onClick={() => handleClick(attachment)}\n >\n <FileText className=\"h-8 w-8 text-muted-foreground\" />\n <span className=\"text-xs font-medium text-center truncate w-full px-1\">\n {attachment.name}\n </span>\n {attachment.size && (\n <span className=\"text-[10px] text-muted-foreground\">\n {formatFileSize(attachment.size)}\n </span>\n )}\n </div>\n )}\n\n {/* Remove button - always visible on hover */}\n {onRemove && !isUploading && (\n <Button\n variant=\"secondary\"\n size=\"icon\"\n className={cn(\n \"absolute -top-2 -right-2 h-6 w-6 rounded-full\",\n \"bg-foreground text-background hover:bg-foreground/90\",\n \"opacity-0 group-hover:opacity-100 transition-opacity\",\n \"shadow-soft\"\n )}\n onClick={(e) => {\n e.stopPropagation()\n onRemove(attachment.id)\n }}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n )}\n </div>\n )\n }\n\n // Compact variant - smaller thumbnails for message bubbles\n if (variant === \"compact\") {\n return (\n <div\n key={attachment.id}\n className=\"relative group\"\n >\n {attachment.type === \"image\" && attachment.thumbnail && (\n <div\n className={cn(\n \"relative w-20 h-20 rounded-lg overflow-hidden cursor-pointer\",\n \"transition-transform hover:scale-[1.02]\"\n )}\n onClick={() => handleClick(attachment)}\n >\n <img\n src={attachment.thumbnail}\n alt={attachment.name}\n className=\"w-full h-full object-cover\"\n />\n </div>\n )}\n\n {(attachment.type === \"file\" || attachment.type === \"video\") && (\n <div\n className={cn(\n \"flex items-center gap-2 px-3 py-2 rounded-lg\",\n \"bg-muted/50 border border-border cursor-pointer\",\n \"hover:bg-muted transition-colors\"\n )}\n onClick={() => handleClick(attachment)}\n >\n <File className=\"h-4 w-4 text-muted-foreground flex-shrink-0\" />\n <span className=\"text-xs truncate max-w-[100px]\">\n {attachment.name}\n </span>\n </div>\n )}\n\n {/* Remove button */}\n {onRemove && (\n <Button\n variant=\"secondary\"\n size=\"icon\"\n className={cn(\n \"absolute -top-1.5 -right-1.5 h-5 w-5 rounded-full\",\n \"bg-foreground text-background hover:bg-foreground/90\",\n \"opacity-0 group-hover:opacity-100 transition-opacity\"\n )}\n onClick={(e) => {\n e.stopPropagation()\n onRemove(attachment.id)\n }}\n >\n <X className=\"h-2.5 w-2.5\" />\n </Button>\n )}\n </div>\n )\n }\n\n // Full variant - larger cards for full message view\n return (\n <div\n key={attachment.id}\n className=\"relative group\"\n >\n {attachment.type === \"image\" && attachment.thumbnail && (\n <div\n className={cn(\n \"relative w-48 h-36 rounded-xl overflow-hidden cursor-pointer\",\n \"transition-transform hover:scale-[1.02]\"\n )}\n onClick={() => handleClick(attachment)}\n >\n <img\n src={attachment.thumbnail}\n alt={attachment.name}\n className=\"w-full h-full object-cover\"\n />\n <div className=\"absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/60 to-transparent p-3 pt-8\">\n <span className=\"text-white text-sm font-medium truncate block\">\n {attachment.name}\n </span>\n </div>\n </div>\n )}\n\n {(attachment.type === \"file\" || attachment.type === \"video\") && (\n <div\n className={cn(\n \"flex items-center gap-3 px-4 py-3 rounded-xl\",\n \"bg-muted border border-border cursor-pointer\",\n \"hover:bg-muted/80 transition-colors\"\n )}\n onClick={() => handleClick(attachment)}\n >\n <div className=\"p-2 rounded-lg bg-background\">\n {attachment.type === \"video\" ? (\n <Play className=\"h-5 w-5 text-muted-foreground\" />\n ) : (\n <FileText className=\"h-5 w-5 text-muted-foreground\" />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\">{attachment.name}</p>\n {attachment.size && (\n <p className=\"text-xs text-muted-foreground\">\n {formatFileSize(attachment.size)}\n </p>\n )}\n </div>\n </div>\n )}\n\n {/* Remove button */}\n {onRemove && (\n <Button\n variant=\"secondary\"\n size=\"icon\"\n className={cn(\n \"absolute -top-2 -right-2 h-6 w-6 rounded-full\",\n \"bg-foreground text-background hover:bg-foreground/90\",\n \"opacity-0 group-hover:opacity-100 transition-opacity\",\n \"shadow-soft\"\n )}\n onClick={(e) => {\n e.stopPropagation()\n onRemove(attachment.id)\n }}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n )}\n </div>\n )\n })}\n </div>\n\n {/* Lightbox modal */}\n <AttachmentLightbox\n attachment={lightboxAttachment}\n open={!!lightboxAttachment}\n onClose={() => setLightboxAttachment(null)}\n onDownload={allowDownload ? handleDownload : undefined}\n />\n </>\n )\n}\n\nexport type { AttachmentPreviewProps as AttachmentPreviewPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\n// ============================================================================\n// SUGGESTION CHIPS\n// Quick reply suggestions for chat interfaces\n// ============================================================================\n\nexport interface SuggestionChipsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n /** List of suggestions */\n suggestions: string[]\n /** Callback when a suggestion is selected */\n onSelect: (suggestion: string) => void\n /** Visual variant */\n variant?: \"outline\" | \"filled\"\n /** Size variant */\n size?: \"sm\" | \"default\"\n /** Disabled state */\n disabled?: boolean\n /** Max suggestions to show (with \"more\" indicator) */\n maxVisible?: number\n}\n\nexport function SuggestionChips({\n suggestions,\n onSelect,\n variant = \"outline\",\n size = \"default\",\n disabled = false,\n maxVisible,\n className,\n ...props\n}: SuggestionChipsProps) {\n const [showAll, setShowAll] = React.useState(false)\n\n if (suggestions.length === 0) return null\n\n const visibleSuggestions =\n maxVisible && !showAll ? suggestions.slice(0, maxVisible) : suggestions\n const hasMore = maxVisible && suggestions.length > maxVisible && !showAll\n\n return (\n <div\n className={cn(\"flex flex-wrap gap-2\", className)}\n role=\"group\"\n aria-label=\"Suggestions\"\n {...props}\n >\n {visibleSuggestions.map((suggestion, index) => (\n <Button\n key={`${suggestion}-${index}`}\n variant={variant === \"filled\" ? \"secondary\" : \"outline\"}\n size={size}\n disabled={disabled}\n onClick={() => onSelect(suggestion)}\n className={cn(\n \"transition-all\",\n variant === \"outline\" && [\n \"border-border hover:border-primary hover:text-primary\",\n \"bg-transparent hover:bg-primary/5\",\n ],\n variant === \"filled\" && [\n \"bg-muted hover:bg-muted/80\",\n ],\n size === \"sm\" && \"text-xs px-3 py-1.5 h-auto\",\n size === \"default\" && \"text-sm\"\n )}\n >\n {suggestion}\n </Button>\n ))}\n\n {hasMore && (\n <Button\n variant=\"ghost\"\n size={size}\n onClick={() => setShowAll(true)}\n className={cn(\n \"text-muted-foreground hover:text-foreground\",\n size === \"sm\" && \"text-xs px-3 py-1.5 h-auto\"\n )}\n >\n +{suggestions.length - maxVisible} more\n </Button>\n )}\n </div>\n )\n}\n\nexport type { SuggestionChipsProps as SuggestionChipsPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport { MessageBubble, type Message } from \"./message-bubble\"\nimport { TypingIndicator } from \"./typing-indicator\"\nimport { ArrowDown } from \"lucide-react\"\n\n// ============================================================================\n// CHAT MESSAGE LIST\n// Scrollable container for chat messages with auto-scroll\n// ============================================================================\n\nexport interface ChatMessageListProps extends React.HTMLAttributes<HTMLDivElement> {\n /** List of messages */\n messages: Message[]\n /** Show loading skeleton */\n loading?: boolean\n /** Show typing indicator */\n typing?: boolean\n /** Callback when scrolled to top (for loading more) */\n onScrollTop?: () => void\n /** Welcome message when chat is empty */\n welcomeMessage?: React.ReactNode\n /** Empty state when no messages */\n emptyState?: React.ReactNode\n /** Message action callbacks */\n onCopyMessage?: (message: Message) => void\n onEditMessage?: (message: Message) => void\n onSaveEdit?: (message: Message, newContent: string) => void\n onCancelEdit?: (message: Message) => void\n onRegenerateMessage?: (message: Message) => void\n onFeedback?: (message: Message, type: \"up\" | \"down\") => void\n /** Currently streaming message ID */\n streamingMessageId?: string\n /** Currently editing message ID */\n editingMessageId?: string\n /** Feedback state per message */\n feedbackStates?: Record<string, \"up\" | \"down\" | null>\n /** Height of the container */\n height?: string | number\n /** Message bubble variant */\n messageVariant?: \"compact\" | \"full\"\n /** Show avatars - can be boolean or object { user?: boolean, ai?: boolean } */\n showAvatars?: boolean | { user?: boolean; ai?: boolean }\n}\n\nfunction MessageSkeleton() {\n return (\n <div className=\"flex gap-3\">\n <Skeleton className=\"h-8 w-8 rounded-full flex-shrink-0\" />\n <div className=\"space-y-2 flex-1\">\n <Skeleton className=\"h-4 w-3/4\" />\n <Skeleton className=\"h-4 w-1/2\" />\n </div>\n </div>\n )\n}\n\nexport function ChatMessageList({\n messages,\n loading = false,\n typing = false,\n onScrollTop,\n welcomeMessage,\n emptyState,\n onCopyMessage,\n onEditMessage,\n onSaveEdit,\n onCancelEdit,\n onRegenerateMessage,\n onFeedback,\n streamingMessageId,\n editingMessageId,\n feedbackStates = {},\n height = \"100%\",\n messageVariant = \"compact\",\n showAvatars = true,\n className,\n ...props\n}: ChatMessageListProps) {\n // Compute avatar visibility per role\n const getShowAvatar = (role: \"user\" | \"assistant\") => {\n if (typeof showAvatars === \"boolean\") return showAvatars\n if (role === \"user\") return showAvatars.user ?? true\n return showAvatars.ai ?? true\n }\n const scrollRef = React.useRef<HTMLDivElement>(null)\n const bottomRef = React.useRef<HTMLDivElement>(null)\n const [showScrollButton, setShowScrollButton] = React.useState(false)\n const [isAtBottom, setIsAtBottom] = React.useState(true)\n\n // Auto-scroll to bottom on new messages\n React.useEffect(() => {\n if (isAtBottom && scrollRef.current) {\n scrollRef.current.scrollTo({\n top: scrollRef.current.scrollHeight,\n behavior: \"smooth\"\n })\n }\n }, [messages, typing, isAtBottom])\n\n // Handle scroll events\n const handleScroll = React.useCallback(\n (e: React.UIEvent<HTMLDivElement>) => {\n const target = e.target as HTMLDivElement\n const { scrollTop, scrollHeight, clientHeight } = target\n\n // Check if at bottom (with 50px threshold)\n const atBottom = scrollHeight - scrollTop - clientHeight < 50\n setIsAtBottom(atBottom)\n setShowScrollButton(!atBottom)\n\n // Check if at top (for loading more)\n if (scrollTop === 0 && onScrollTop) {\n onScrollTop()\n }\n },\n [onScrollTop]\n )\n\n const scrollToBottom = () => {\n scrollRef.current?.scrollTo({\n top: scrollRef.current.scrollHeight,\n behavior: \"smooth\"\n })\n }\n\n const isEmpty = messages.length === 0 && !loading\n\n return (\n <div\n className={cn(\"relative flex flex-col min-h-0\", className)}\n style={height !== \"auto\" ? { height } : undefined}\n {...props}\n >\n {/* Scrollable message container */}\n <div\n ref={scrollRef}\n onScroll={handleScroll}\n className=\"flex-1 min-h-0 overflow-y-auto\"\n >\n <div className=\"flex flex-col gap-4 px-4 pt-4 max-w-4xl mx-auto w-full\">\n {/* Loading skeleton */}\n {loading && (\n <div className=\"space-y-4\">\n <MessageSkeleton />\n <MessageSkeleton />\n <MessageSkeleton />\n </div>\n )}\n\n {/* Empty/Welcome state */}\n {isEmpty && (\n <div className=\"flex-1 flex items-center justify-center py-8\">\n {welcomeMessage || emptyState || (\n <p className=\"text-muted-foreground text-sm\">\n Start a conversation\n </p>\n )}\n </div>\n )}\n\n {/* Messages */}\n {!loading &&\n messages.map((message) => (\n <MessageBubble\n key={message.id}\n role={message.role}\n content={message.content}\n timestamp={message.timestamp}\n status={message.status}\n attachments={message.attachments}\n streaming={message.id === streamingMessageId}\n variant={messageVariant}\n showAvatar={getShowAvatar(message.role)}\n onCopy={() => onCopyMessage?.(message)}\n onEdit={message.role === \"user\" ? () => onEditMessage?.(message) : undefined}\n onSaveEdit={onSaveEdit ? (newContent) => onSaveEdit(message, newContent) : undefined}\n onCancelEdit={onCancelEdit ? () => onCancelEdit(message) : undefined}\n isEditing={editingMessageId === message.id}\n onRegenerate={() => onRegenerateMessage?.(message)}\n onFeedback={(type) => onFeedback?.(message, type)}\n feedbackState={feedbackStates[message.id] ?? null}\n />\n ))}\n\n {/* Typing indicator */}\n {typing && !loading && (\n <div className={getShowAvatar(\"assistant\") ? \"\" : \"pl-0\"}>\n <TypingIndicator variant=\"thinking\" showAvatar={getShowAvatar(\"assistant\")} />\n </div>\n )}\n\n {/* Scroll anchor */}\n <div ref={bottomRef} />\n </div>\n </div>\n\n {/* Scroll to bottom button */}\n {showScrollButton && (\n <Button\n variant=\"secondary\"\n size=\"icon\"\n className=\"absolute bottom-4 right-4 h-9 w-9 rounded-full shadow-medium\"\n onClick={scrollToBottom}\n >\n <ArrowDown className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n )\n}\n\nexport type { ChatMessageListProps as ChatMessageListPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Spinner } from \"@/components/ui/spinner\"\nimport { AttachmentPreview, type Attachment } from \"./attachment-preview\"\nimport { VoiceInput } from \"./voice-input\"\nimport { ArrowUp, Paperclip, Upload } from \"lucide-react\"\n\n// ============================================================================\n// CHAT INPUT\n// Beautiful unified input with slots and drag-and-drop support\n// ============================================================================\n\nexport interface ChatInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Current input value */\n value: string\n /** Value change callback */\n onChange: (value: string) => void\n /** Send callback */\n onSend: () => void\n /** Attachment callback */\n onAttach?: (files: File[]) => void\n /** Placeholder text */\n placeholder?: string\n /** Disabled state */\n disabled?: boolean\n /** Loading/sending state */\n loading?: boolean\n /** Max character length */\n maxLength?: number\n /** Show character count */\n showCount?: boolean\n /** Current attachments */\n attachments?: Attachment[]\n /** Remove attachment callback */\n onRemoveAttachment?: (id: string) => void\n /** Voice transcript callback */\n onVoiceTranscript?: (text: string) => void\n /** Show voice input button */\n showVoice?: boolean\n /** Keyboard shortcut for send */\n submitShortcut?: \"Enter\" | \"CmdEnter\"\n /** Max rows for auto-resize */\n maxRows?: number\n /** Min rows */\n minRows?: number\n /** Show attachment button */\n showAttachButton?: boolean\n /** Attachment button click callback */\n onAttachClick?: () => void\n /** Show send button (default true, set false when using footerContent with custom send) */\n showSendButton?: boolean\n /** Optional footer content (e.g., persona/channel selectors in Playground) */\n footerContent?: React.ReactNode\n /** Content rendered BEFORE attach button (e.g., ToolsMenu) */\n leftSlot?: React.ReactNode\n /** Content rendered BEFORE voice/send buttons */\n rightSlot?: React.ReactNode\n /** Enable drag-and-drop for files */\n enableDragDrop?: boolean\n}\n\nexport function ChatInput({\n value,\n onChange,\n onSend,\n onAttach,\n placeholder = \"Ask Siena anything...\",\n disabled = false,\n loading = false,\n maxLength,\n showCount = false,\n attachments = [],\n onRemoveAttachment,\n onVoiceTranscript,\n showVoice = false,\n submitShortcut = \"CmdEnter\",\n maxRows = 6,\n minRows = 1,\n showAttachButton = true,\n onAttachClick,\n showSendButton = true,\n footerContent,\n leftSlot,\n rightSlot,\n enableDragDrop = false,\n className,\n ...props\n}: ChatInputProps) {\n const textareaRef = React.useRef<HTMLTextAreaElement>(null)\n const fileInputRef = React.useRef<HTMLInputElement>(null)\n const [isDragging, setIsDragging] = React.useState(false)\n const dragCounterRef = React.useRef(0)\n\n const canSend = value.trim().length > 0 || attachments.length > 0\n const isDisabled = disabled || loading\n\n // Auto-resize textarea\n const adjustHeight = React.useCallback(() => {\n const textarea = textareaRef.current\n if (!textarea) return\n\n textarea.style.height = \"0\"\n const lineHeight = 24\n const minHeight = lineHeight * minRows\n const maxHeight = lineHeight * maxRows\n const targetHeight = Math.min(Math.max(textarea.scrollHeight, minHeight), maxHeight)\n textarea.style.height = `${targetHeight}px`\n }, [minRows, maxRows])\n\n React.useEffect(() => {\n adjustHeight()\n }, [value, adjustHeight])\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n const isCmdEnter = (e.metaKey || e.ctrlKey) && e.key === \"Enter\"\n const isEnter = e.key === \"Enter\" && !e.shiftKey\n\n if (submitShortcut === \"CmdEnter\" && isCmdEnter && canSend && !isDisabled) {\n e.preventDefault()\n onSend()\n }\n\n if (submitShortcut === \"Enter\" && isEnter && canSend && !isDisabled) {\n e.preventDefault()\n onSend()\n }\n }\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || [])\n if (files.length > 0 && onAttach) {\n onAttach(files)\n }\n e.target.value = \"\"\n }\n\n const handleVoiceTranscript = (text: string) => {\n onChange(value + (value ? \" \" : \"\") + text)\n onVoiceTranscript?.(text)\n }\n\n // Drag and drop handlers\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!enableDragDrop || isDisabled) return\n\n dragCounterRef.current++\n if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {\n setIsDragging(true)\n }\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!enableDragDrop) return\n\n dragCounterRef.current--\n if (dragCounterRef.current === 0) {\n setIsDragging(false)\n }\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!enableDragDrop || isDisabled) return\n\n setIsDragging(false)\n dragCounterRef.current = 0\n\n const files = Array.from(e.dataTransfer.files)\n if (files.length > 0 && onAttach) {\n // Filter for accepted file types\n const acceptedFiles = files.filter((file) => {\n const isImage = file.type.startsWith(\"image/\")\n const isVideo = file.type.startsWith(\"video/\")\n const isPdf = file.type === \"application/pdf\"\n const isDoc = file.type.includes(\"document\") || file.name.endsWith(\".doc\") || file.name.endsWith(\".docx\")\n const isTxt = file.type === \"text/plain\"\n return isImage || isVideo || isPdf || isDoc || isTxt\n })\n if (acceptedFiles.length > 0) {\n onAttach(acceptedFiles)\n }\n }\n }\n\n return (\n <div className={cn(\"flex flex-col\", className)} {...props}>\n {/* Main input container */}\n <div\n className={cn(\n \"relative flex flex-col\",\n \"border border-border rounded-2xl bg-card\",\n \"shadow-soft\",\n \"transition-colors\",\n \"focus-within:border-muted-foreground/50\",\n isDisabled && \"opacity-50 cursor-not-allowed\",\n isDragging && \"border-primary border-dashed\"\n )}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n {/* Drag overlay */}\n {isDragging && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center rounded-2xl bg-primary/5 backdrop-blur-[1px]\">\n <div className=\"flex items-center gap-2 text-primary\">\n <Upload className=\"h-4 w-4\" />\n <span className=\"text-sm font-medium\">Drop files here</span>\n </div>\n </div>\n )}\n\n {/* Attachment previews - INSIDE container, above textarea */}\n {attachments.length > 0 && (\n <div className=\"px-4 pt-4 pb-2\">\n <AttachmentPreview\n attachments={attachments}\n onRemove={onRemoveAttachment}\n variant=\"inline\"\n showProgress\n enableLightbox\n />\n </div>\n )}\n\n {/* Input row */}\n <div className=\"flex items-center gap-2 px-4 py-3\">\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept=\"image/*,video/*,.pdf,.doc,.docx,.txt\"\n className=\"hidden\"\n onChange={handleFileSelect}\n disabled={isDisabled}\n />\n\n {/* LEFT SLOT - renders before attach button */}\n {leftSlot}\n\n {/* Attach button */}\n {showAttachButton && (\n <button\n type=\"button\"\n onClick={onAttachClick || (() => fileInputRef.current?.click())}\n disabled={isDisabled}\n className={cn(\n \"flex-shrink-0 flex items-center justify-center\",\n \"h-6 w-6\",\n \"text-muted-foreground/60 hover:text-muted-foreground\",\n \"transition-colors\",\n \"disabled:pointer-events-none\"\n )}\n >\n <Paperclip className=\"h-4 w-4\" />\n </button>\n )}\n\n {/* Textarea */}\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => {\n onChange(e.target.value)\n adjustHeight()\n }}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={isDisabled}\n maxLength={maxLength}\n rows={minRows}\n className={cn(\n \"flex-1 min-w-0 bg-transparent font-sans\",\n \"border-0 outline-none resize-none\",\n \"text-sm leading-6\",\n \"placeholder:text-muted-foreground/70\",\n \"disabled:cursor-not-allowed\"\n )}\n />\n\n {/* Right side actions */}\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n {/* Character count */}\n {showCount && maxLength && (\n <span\n className={cn(\n \"text-xs tabular-nums mr-2\",\n value.length > maxLength * 0.9\n ? \"text-siena-ochre\"\n : \"text-muted-foreground/50\",\n value.length >= maxLength && \"text-destructive\"\n )}\n >\n {value.length}/{maxLength}\n </span>\n )}\n\n {/* RIGHT SLOT - renders before voice/send */}\n {rightSlot}\n\n {/* Voice input */}\n {showVoice && (\n <VoiceInput\n onTranscript={handleVoiceTranscript}\n disabled={isDisabled}\n size=\"default\"\n showTooltip={false}\n className=\"text-muted-foreground/60 hover:text-muted-foreground\"\n />\n )}\n\n {/* Send button */}\n {showSendButton && (\n <Button\n type=\"button\"\n size=\"icon\"\n variant=\"ghost\"\n className={cn(\n \"h-8 w-8 rounded-full flex-shrink-0\",\n \"transition-all duration-150\",\n canSend && !isDisabled\n ? \"bg-foreground text-background hover:bg-foreground/90 active:bg-foreground/70\"\n : \"text-muted-foreground/40 hover:bg-transparent cursor-default\"\n )}\n disabled={!canSend || isDisabled}\n onClick={onSend}\n >\n {loading ? (\n <Spinner size=\"sm\" />\n ) : (\n <ArrowUp className=\"h-4 w-4\" />\n )}\n </Button>\n )}\n </div>\n </div>\n\n {/* Optional footer content */}\n {footerContent && (\n <div className=\"flex items-center gap-2 px-4 py-2\">\n {footerContent}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nexport type { ChatInputProps as ChatInputPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { Spinner } from \"@/components/ui/spinner\"\nimport { IconSelect, type IconSelectOption } from \"@/components/ui/icon-select\"\nimport { ChatInput } from \"./chat-input\"\nimport { VoiceInput } from \"./voice-input\"\nimport { type Attachment } from \"./attachment-preview\"\nimport { User, MessageSquare, Mail, ArrowUp, Paperclip } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\n// ============================================================================\n// PLAYGROUND INPUT\n// Wraps ChatInput with all actions in a unified footer toolbar\n// Layout: Textarea on top, all controls (attach, persona, channel, email, voice, send) in footer\n// IMPORTANT: This USES ChatInput, it does NOT replace it\n// ============================================================================\n\nexport interface Persona {\n id: string\n name: string\n avatar?: string\n description?: string\n}\n\nexport interface Channel {\n id: string\n name: string\n icon?: React.ReactNode\n}\n\nexport interface PlaygroundInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Current input value */\n value: string\n /** Value change callback */\n onChange: (value: string) => void\n /** Send callback */\n onSend: () => void\n /** Attachment callback */\n onAttach?: (files: File[]) => void\n /** Current attachments */\n attachments?: Attachment[]\n /** Remove attachment callback */\n onRemoveAttachment?: (id: string) => void\n /** Placeholder text */\n placeholder?: string\n /** Disabled state */\n disabled?: boolean\n /** Loading/sending state */\n loading?: boolean\n /** Available personas */\n personas?: Persona[]\n /** Selected persona ID */\n selectedPersona?: string\n /** Persona change callback */\n onPersonaChange?: (personaId: string) => void\n /** Available channels */\n channels?: Channel[]\n /** Selected channel ID */\n selectedChannel?: string\n /** Channel change callback */\n onChannelChange?: (channelId: string) => void\n /** Customer email */\n customerEmail?: string\n /** Customer email change callback */\n onCustomerEmailChange?: (email: string) => void\n /** Show persona selector */\n showPersonaSelector?: boolean\n /** Show channel selector */\n showChannelSelector?: boolean\n /** Show customer email input */\n showCustomerEmail?: boolean\n /** Show voice input button */\n showVoice?: boolean\n /** Enable drag-and-drop for files */\n enableDragDrop?: boolean\n}\n\nconst defaultPersonas: Persona[] = [\n { id: \"siena\", name: \"Siena\", description: \"AI Assistant\" },\n]\n\nconst defaultChannels: Channel[] = [\n { id: \"live-chat\", name: \"Live Chat\", icon: <MessageSquare className=\"h-4 w-4\" /> },\n]\n\nexport function PlaygroundInput({\n value,\n onChange,\n onSend,\n onAttach,\n attachments = [],\n onRemoveAttachment,\n placeholder = \"Test a customer interaction...\",\n disabled = false,\n loading = false,\n personas = defaultPersonas,\n selectedPersona,\n onPersonaChange,\n channels = defaultChannels,\n selectedChannel,\n onChannelChange,\n customerEmail = \"\",\n onCustomerEmailChange,\n showPersonaSelector = true,\n showChannelSelector = true,\n showCustomerEmail = true,\n showVoice = true,\n enableDragDrop = true,\n className,\n ...props\n}: PlaygroundInputProps) {\n const fileInputRef = React.useRef<HTMLInputElement>(null)\n const canSend = value.trim().length > 0 || attachments.length > 0\n const isDisabled = disabled || loading\n\n // Convert personas to IconSelect options\n const personaOptions: IconSelectOption[] = personas.map((persona) => ({\n value: persona.id,\n label: persona.name,\n icon: persona.avatar ? (\n <img src={persona.avatar} alt=\"\" className=\"h-4 w-4 rounded-full object-cover\" />\n ) : (\n <User className=\"h-4 w-4\" />\n ),\n }))\n\n // Convert channels to IconSelect options\n const channelOptions: IconSelectOption[] = channels.map((channel) => ({\n value: channel.id,\n label: channel.name,\n icon: channel.icon || <MessageSquare className=\"h-4 w-4\" />,\n }))\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || [])\n if (files.length > 0 && onAttach) {\n onAttach(files)\n }\n e.target.value = \"\"\n }\n\n const handleVoiceTranscript = (text: string) => {\n onChange(value + (value ? \" \" : \"\") + text)\n }\n\n // Build unified footer toolbar with ALL controls and actions\n const footerContent = (\n <>\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept=\"image/*,video/*,.pdf,.doc,.docx,.txt\"\n className=\"hidden\"\n onChange={handleFileSelect}\n disabled={isDisabled}\n />\n\n {/* Attach button */}\n <button\n type=\"button\"\n onClick={() => fileInputRef.current?.click()}\n disabled={isDisabled}\n className={cn(\n \"flex-shrink-0 p-1.5 rounded-md\",\n \"text-muted-foreground hover:text-foreground hover:bg-muted/50\",\n \"transition-colors\",\n \"disabled:pointer-events-none disabled:opacity-50\"\n )}\n >\n <Paperclip className=\"h-4 w-4\" />\n </button>\n\n {/* Controls group */}\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {showPersonaSelector && onPersonaChange && (\n <IconSelect\n options={personaOptions}\n value={selectedPersona || personas[0]?.id || \"\"}\n onChange={onPersonaChange}\n placeholder=\"Persona\"\n size=\"xs\"\n disabled={isDisabled}\n />\n )}\n\n {showChannelSelector && onChannelChange && (\n <IconSelect\n options={channelOptions}\n value={selectedChannel || channels[0]?.id || \"\"}\n onChange={onChannelChange}\n placeholder=\"Channel\"\n size=\"xs\"\n disabled={isDisabled}\n />\n )}\n\n {showCustomerEmail && onCustomerEmailChange && (\n <Input\n type=\"email\"\n value={customerEmail}\n onChange={(e) => onCustomerEmailChange(e.target.value)}\n placeholder=\"customer@example.com\"\n size=\"xs\"\n iconLeft={<Mail className=\"h-3.5 w-3.5\" />}\n autoExpand\n minWidth={120}\n maxWidth={280}\n disabled={isDisabled}\n />\n )}\n </div>\n\n {/* Spacer */}\n <div className=\"flex-1\" />\n\n {/* Voice input */}\n {showVoice && (\n <VoiceInput\n onTranscript={handleVoiceTranscript}\n disabled={isDisabled}\n size=\"default\"\n showTooltip={false}\n className=\"text-muted-foreground hover:text-foreground\"\n />\n )}\n\n {/* Send button */}\n <Button\n type=\"button\"\n size=\"icon\"\n variant=\"ghost\"\n className={cn(\n \"h-8 w-8 rounded-full flex-shrink-0\",\n \"transition-all duration-150\",\n canSend && !isDisabled\n ? \"bg-foreground text-background hover:bg-foreground/90 active:bg-foreground/70\"\n : \"text-muted-foreground/40 hover:bg-transparent cursor-default\"\n )}\n disabled={!canSend || isDisabled}\n onClick={onSend}\n >\n {loading ? (\n <Spinner size=\"sm\" />\n ) : (\n <ArrowUp className=\"h-4 w-4\" />\n )}\n </Button>\n </>\n )\n\n // Use ChatInput with hidden inline actions, all actions in footer\n return (\n <ChatInput\n value={value}\n onChange={onChange}\n onSend={onSend}\n onAttach={onAttach}\n attachments={attachments}\n onRemoveAttachment={onRemoveAttachment}\n placeholder={placeholder}\n disabled={disabled}\n loading={loading}\n showAttachButton={false}\n showVoice={false}\n showSendButton={false}\n enableDragDrop={enableDragDrop}\n footerContent={footerContent}\n className={className}\n {...props}\n />\n )\n}\n\nexport type { PlaygroundInputProps as PlaygroundInputPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronRight } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Switch } from \"@/components/ui/switch\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport {\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\n\n// ============================================================================\n// TOOLS - Two patterns:\n// 1. ToolsPopover - Standalone popover with trigger (design system demo)\n// 2. ToolsPanelContent - Reusable content for dropdown submenu (AttachmentMenu)\n// ============================================================================\n\nexport interface Tool {\n id: string\n name: string\n icon: React.ReactNode\n enabled: boolean\n}\n\nexport interface ToolProvider {\n id: string\n name: string\n icon: React.ReactNode\n badge?: string\n badgeVariant?: \"filled\" | \"soft\" | \"outline\"\n enabled: boolean\n tools: Tool[]\n}\n\n// ============================================================================\n// TOOLS PANEL CONTENT\n// Reusable two-panel layout for use in Popover or DropdownMenuSubContent\n// ============================================================================\n\nexport interface ToolsPanelContentProps {\n /** List of tool providers with their tools */\n providers: ToolProvider[]\n /** Currently selected provider ID */\n selectedProviderId: string | null\n /** Called when a provider is selected (clicked) */\n onSelectProvider: (providerId: string) => void\n /** Called when a provider's enabled state changes */\n onProviderToggle?: (providerId: string, enabled: boolean) => void\n /** Called when a tool's enabled state changes */\n onToolToggle?: (providerId: string, toolId: string, enabled: boolean) => void\n}\n\n// Small toggle switch styles (siena-sage green)\nconst smallSwitchStyles = cn(\n \"h-5 w-9\",\n \"data-[state=checked]:bg-[var(--siena-sage)]\",\n \"data-[state=unchecked]:bg-muted-foreground/20\",\n \"[&>span]:h-4 [&>span]:w-4\",\n \"[&>span]:data-[state=checked]:translate-x-4\",\n \"[&>span]:data-[state=unchecked]:translate-x-0.5\"\n)\n\nexport function ToolsPanelContent({\n providers,\n selectedProviderId,\n onSelectProvider,\n onProviderToggle,\n onToolToggle,\n}: ToolsPanelContentProps) {\n const selectedProvider = providers.find(p => p.id === selectedProviderId)\n\n return (\n <div className=\"flex min-h-[200px] max-h-[340px]\">\n {/* Left Panel - Providers */}\n <div className=\"w-[240px] border-r overflow-auto\">\n {providers.map(provider => (\n <ProviderRow\n key={provider.id}\n provider={provider}\n selected={selectedProviderId === provider.id}\n onSelect={() => onSelectProvider(provider.id)}\n onToggle={(enabled) => onProviderToggle?.(provider.id, enabled)}\n />\n ))}\n </div>\n\n {/* Right Panel - Tools */}\n <div className=\"flex-1 overflow-auto bg-muted/20\">\n {selectedProvider && selectedProvider.tools.length > 0 ? (\n selectedProvider.tools.map(tool => (\n <ToolRow\n key={tool.id}\n tool={tool}\n onToggle={(enabled) => onToolToggle?.(selectedProviderId!, tool.id, enabled)}\n />\n ))\n ) : (\n <div className=\"flex items-center justify-center h-full text-sm text-muted-foreground\">\n {selectedProvider ? \"No tools available\" : \"Select a provider\"}\n </div>\n )}\n </div>\n </div>\n )\n}\n\n// ============================================================================\n// TOOLS POPOVER\n// Standalone popover with trigger - for design system demo and direct usage\n// ============================================================================\n\nexport interface ToolsPopoverProps {\n /** List of tool providers with their tools */\n providers: ToolProvider[]\n /** Called when a provider's enabled state changes */\n onProviderToggle?: (providerId: string, enabled: boolean) => void\n /** Called when a tool's enabled state changes */\n onToolToggle?: (providerId: string, toolId: string, enabled: boolean) => void\n /** Controlled open state */\n open?: boolean\n /** Open change callback */\n onOpenChange?: (open: boolean) => void\n /** Custom trigger element (required for standalone usage) */\n trigger?: React.ReactNode\n /** Popover side */\n side?: \"top\" | \"bottom\" | \"left\" | \"right\"\n /** Popover alignment */\n align?: \"start\" | \"center\" | \"end\"\n}\n\nexport function ToolsPopover({\n providers,\n onProviderToggle,\n onToolToggle,\n open,\n onOpenChange,\n trigger,\n side = \"top\",\n align = \"start\",\n}: ToolsPopoverProps) {\n // Track which provider is selected (to show its tools in right panel)\n const [selectedProviderId, setSelectedProviderId] = React.useState<string | null>(\n providers.find(p => p.enabled)?.id || providers[0]?.id || null\n )\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={onOpenChange}>\n {trigger && <PopoverTrigger asChild>{trigger}</PopoverTrigger>}\n <PopoverContent\n className=\"w-[560px] p-0 overflow-hidden\"\n side={side}\n align={align}\n sideOffset={8}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <ToolsPanelContent\n providers={providers}\n selectedProviderId={selectedProviderId}\n onSelectProvider={setSelectedProviderId}\n onProviderToggle={onProviderToggle}\n onToolToggle={onToolToggle}\n />\n </PopoverContent>\n </PopoverPrimitive.Root>\n )\n}\n\n// ============================================================================\n// PROVIDER ROW\n// Left panel item - click to select, toggle on RIGHT\n// ============================================================================\n\ninterface ProviderRowProps {\n provider: ToolProvider\n selected: boolean\n onSelect: () => void\n onToggle: (enabled: boolean) => void\n}\n\nfunction ProviderRow({ provider, selected, onSelect, onToggle }: ProviderRowProps) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 px-3 py-2.5 cursor-pointer transition-colors\",\n selected ? \"bg-muted\" : \"hover:bg-muted/50\"\n )}\n onClick={onSelect}\n >\n {/* Icon */}\n <div className=\"w-5 h-5 flex-shrink-0 flex items-center justify-center text-muted-foreground\">\n {provider.icon}\n </div>\n\n {/* Name + Badge */}\n <div className=\"flex-1 min-w-0 flex items-center gap-1.5 overflow-hidden\">\n <span className=\"text-sm font-medium whitespace-nowrap\">{provider.name}</span>\n {provider.badge && (\n <Badge\n variant={provider.badgeVariant || \"soft\"}\n color=\"warning\"\n className=\"text-[10px] px-1.5 py-0 flex-shrink-0\"\n >\n {provider.badge}\n </Badge>\n )}\n </div>\n\n {/* Chevron */}\n <ChevronRight className=\"h-4 w-4 text-muted-foreground/50 flex-shrink-0\" />\n\n {/* Toggle - on the RIGHT (standard position) */}\n <Switch\n checked={provider.enabled}\n onCheckedChange={onToggle}\n onClick={(e) => e.stopPropagation()}\n className={smallSwitchStyles}\n />\n </div>\n )\n}\n\n// ============================================================================\n// TOOL ROW\n// Right panel item - toggle on RIGHT\n// ============================================================================\n\ninterface ToolRowProps {\n tool: Tool\n onToggle: (enabled: boolean) => void\n}\n\nfunction ToolRow({ tool, onToggle }: ToolRowProps) {\n return (\n <div className=\"flex items-center gap-2 px-3 py-2 hover:bg-muted/50 transition-colors\">\n {/* Icon */}\n <div className=\"w-4 h-4 flex-shrink-0 flex items-center justify-center text-muted-foreground\">\n {tool.icon}\n </div>\n\n {/* Name - no truncation */}\n <span className=\"flex-1 text-sm\">{tool.name}</span>\n\n {/* Toggle */}\n <Switch\n checked={tool.enabled}\n onCheckedChange={onToggle}\n className={smallSwitchStyles}\n />\n </div>\n )\n}\n\nexport type { Tool as ToolType, ToolProvider as ToolProviderType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n} from \"@/components/ui/dropdown-menu\"\nimport {\n Plus,\n Paperclip,\n Camera,\n FolderPlus,\n Check,\n Sparkles,\n Search,\n Globe,\n Palette,\n Plug,\n ChevronRight,\n Wrench,\n BookOpen,\n} from \"lucide-react\"\nimport { ToolsPanelContent, type ToolProvider } from \"./tools-popover\"\nimport { type Model } from \"./model-selector\"\nimport { Badge } from \"@/components/ui/badge\"\n\n// ============================================================================\n// ATTACHMENT MENU\n// Unified plus menu for adding files, screenshots, and tools\n// Like Claude: one + button that opens attach/tools options\n// Tools uses submenu pattern (like Claude's Connectors) - no race condition\n// ============================================================================\n\nexport interface Playbook {\n id: string\n name: string\n prompt: string\n}\n\nexport interface Integration {\n id: string\n name: string\n icon: React.ReactNode\n onClick: () => void\n hasSubmenu?: boolean\n}\n\nexport interface AIAction {\n id: string\n name: string\n icon: React.ReactNode\n active?: boolean\n onClick: () => void\n hasSubmenu?: boolean\n}\n\nexport interface AttachmentMenuProps {\n /** Callback when files are selected */\n onFileSelect: (files: File[]) => void\n /** Callback for screenshot capture */\n onScreenshot?: () => void\n /** Callback for add to project */\n onAddToProject?: () => void\n /** Playbooks (pre-made prompts) */\n playbooks?: Playbook[]\n /** Called when a playbook is selected */\n onPlaybookSelect?: (playbook: Playbook) => void\n /** External integrations (Google Drive, GitHub, etc.) */\n integrations?: Integration[]\n /** AI action toggles (Ask Siena, Research, Web search) */\n aiActions?: AIAction[]\n /** Tool providers for Tools submenu */\n toolProviders?: ToolProvider[]\n /** Called when a tool provider's enabled state changes */\n onToolProviderToggle?: (providerId: string, enabled: boolean) => void\n /** Called when a tool's enabled state changes */\n onToolToggle?: (providerId: string, toolId: string, enabled: boolean) => void\n /** Available models for model selector */\n models?: Model[]\n /** Selected model ID */\n selectedModelId?: string\n /** Called when model changes */\n onModelSelect?: (modelId: string) => void\n /** Trigger button variant */\n triggerVariant?: \"icon\" | \"text\"\n /** Disabled state */\n disabled?: boolean\n /** Custom trigger */\n trigger?: React.ReactNode\n /** Additional className */\n className?: string\n}\n\nexport function AttachmentMenu({\n onFileSelect,\n onScreenshot,\n onAddToProject,\n playbooks = [],\n onPlaybookSelect,\n integrations = [],\n aiActions = [],\n toolProviders,\n onToolProviderToggle,\n onToolToggle,\n models,\n selectedModelId,\n onModelSelect,\n triggerVariant = \"icon\",\n disabled = false,\n trigger,\n className,\n}: AttachmentMenuProps) {\n const fileInputRef = React.useRef<HTMLInputElement>(null)\n\n // Track selected provider for tools panel\n const [selectedProviderId, setSelectedProviderId] = React.useState<string | null>(\n toolProviders?.find(p => p.enabled)?.id || toolProviders?.[0]?.id || null\n )\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || [])\n if (files.length > 0) {\n onFileSelect(files)\n }\n e.target.value = \"\"\n }\n\n const defaultTrigger =\n triggerVariant === \"icon\" ? (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-muted-foreground hover:text-foreground\"\n disabled={disabled}\n >\n <Plus className=\"h-4 w-4\" />\n </Button>\n ) : (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"gap-2 text-muted-foreground hover:text-foreground\"\n disabled={disabled}\n >\n <Plus className=\"h-4 w-4\" />\n Add\n </Button>\n )\n\n // Count enabled tools for badge\n const enabledToolsCount = toolProviders?.reduce(\n (acc, p) => acc + (p.enabled ? p.tools.filter(t => t.enabled).length : 0),\n 0\n ) ?? 0\n\n return (\n <div className={cn(\"relative\", className)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n {trigger || defaultTrigger}\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" side=\"top\" className=\"w-56\">\n {/* Model selector */}\n {models && models.length > 0 && (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger className=\"gap-3\">\n <Sparkles className=\"h-4 w-4\" />\n <span className=\"flex-1\">\n {models.find(m => m.id === selectedModelId)?.name || \"Select model\"}\n </span>\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent className=\"w-72\" sideOffset={2}>\n {models.map((model) => (\n <DropdownMenuItem\n key={model.id}\n onClick={() => onModelSelect?.(model.id)}\n className=\"flex items-center justify-between\"\n >\n <div className=\"flex flex-col gap-0.5\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{model.name}</span>\n {model.badge && (\n <Badge\n variant=\"soft\"\n color=\"primary\"\n className=\"px-1.5 py-0 text-[10px]\"\n >\n {model.badge}\n </Badge>\n )}\n </div>\n {model.description && (\n <span className=\"text-xs text-muted-foreground\">\n {model.description}\n </span>\n )}\n </div>\n {model.id === selectedModelId && (\n <Check className=\"h-4 w-4 text-primary\" />\n )}\n </DropdownMenuItem>\n ))}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )}\n\n {/* File upload */}\n <DropdownMenuItem\n onClick={() => fileInputRef.current?.click()}\n className=\"gap-3\"\n >\n <Paperclip className=\"h-4 w-4\" />\n Add files or photos\n </DropdownMenuItem>\n\n {/* Screenshot */}\n {onScreenshot && (\n <DropdownMenuItem onClick={onScreenshot} className=\"gap-3\">\n <Camera className=\"h-4 w-4\" />\n Take a screenshot\n </DropdownMenuItem>\n )}\n\n {/* Add to project */}\n {onAddToProject && (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger className=\"gap-3\">\n <FolderPlus className=\"h-4 w-4\" />\n Add to project\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n <DropdownMenuItem onClick={onAddToProject}>\n Current project\n </DropdownMenuItem>\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )}\n\n {/* Playbooks - pre-made prompts */}\n {playbooks.length > 0 && (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger className=\"gap-3\">\n <BookOpen className=\"h-4 w-4\" />\n <span className=\"flex-1\">Playbooks</span>\n <span className=\"text-xs text-muted-foreground bg-muted px-1.5 py-0.5 rounded\">\n {playbooks.length}\n </span>\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent\n className=\"w-64\"\n sideOffset={2}\n >\n {playbooks.map((playbook) => (\n <DropdownMenuItem\n key={playbook.id}\n onClick={() => onPlaybookSelect?.(playbook)}\n className=\"gap-3\"\n >\n {playbook.name}\n </DropdownMenuItem>\n ))}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )}\n\n {/* Tools - submenu pattern (like Claude's Connectors) */}\n {toolProviders && toolProviders.length > 0 && (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger className=\"gap-3\">\n <Wrench className=\"h-4 w-4\" />\n <span className=\"flex-1\">Tools</span>\n {enabledToolsCount > 0 && (\n <span className=\"text-xs text-muted-foreground bg-muted px-1.5 py-0.5 rounded\">\n {enabledToolsCount}\n </span>\n )}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent\n className=\"w-[560px] p-0\"\n sideOffset={2}\n >\n <ToolsPanelContent\n providers={toolProviders}\n selectedProviderId={selectedProviderId}\n onSelectProvider={setSelectedProviderId}\n onProviderToggle={onToolProviderToggle}\n onToolToggle={onToolToggle}\n />\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )}\n\n {/* Integrations */}\n {integrations.length > 0 && (\n <>\n <DropdownMenuSeparator />\n {integrations.map((integration) =>\n integration.hasSubmenu ? (\n <DropdownMenuSub key={integration.id}>\n <DropdownMenuSubTrigger className=\"gap-3\">\n {integration.icon}\n {integration.name}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n <DropdownMenuItem onClick={integration.onClick}>\n Connect\n </DropdownMenuItem>\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n ) : (\n <DropdownMenuItem\n key={integration.id}\n onClick={integration.onClick}\n className=\"gap-3\"\n >\n {integration.icon}\n {integration.name}\n </DropdownMenuItem>\n )\n )}\n </>\n )}\n\n {/* AI Actions */}\n {aiActions.length > 0 && (\n <>\n <DropdownMenuSeparator />\n {aiActions.map((action) => (\n <DropdownMenuItem\n key={action.id}\n onClick={action.onClick}\n className=\"gap-3 justify-between\"\n >\n <span className=\"flex items-center gap-3\">\n {action.icon}\n {action.name}\n </span>\n {action.active && (\n <Check className=\"h-4 w-4 text-siena-sage\" />\n )}\n {action.hasSubmenu && (\n <ChevronRight className=\"h-4 w-4 text-muted-foreground\" />\n )}\n </DropdownMenuItem>\n ))}\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n className=\"hidden\"\n onChange={handleFileSelect}\n disabled={disabled}\n />\n </div>\n )\n}\n\n// Default integrations (UI only)\nexport const defaultIntegrations: Integration[] = [\n {\n id: \"google-drive\",\n name: \"Add from Google Drive\",\n icon: (\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7.71 3.5L1.15 15l3.43 5.93 6.56-11.36L7.71 3.5zM16.29 3.5L22.85 15l-3.43 5.93-6.56-11.36L16.29 3.5zM12 9.64L8.57 15.57h6.86L12 9.64zM8.57 15.57l-3.43 5.93h13.72l-3.43-5.93H8.57z\" />\n </svg>\n ),\n onClick: () => {},\n hasSubmenu: true,\n },\n {\n id: \"github\",\n name: \"Add from GitHub\",\n icon: (\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 2C6.477 2 2 6.477 2 12c0 4.42 2.865 8.166 6.839 9.489.5.092.682-.217.682-.482 0-.237-.008-.866-.013-1.7-2.782.603-3.369-1.34-3.369-1.34-.454-1.156-1.11-1.463-1.11-1.463-.908-.62.069-.608.069-.608 1.003.07 1.531 1.03 1.531 1.03.892 1.529 2.341 1.087 2.91.831.092-.646.35-1.086.636-1.336-2.22-.253-4.555-1.11-4.555-4.943 0-1.091.39-1.984 1.029-2.683-.103-.253-.446-1.27.098-2.647 0 0 .84-.268 2.75 1.026A9.578 9.578 0 0112 6.836c.85.004 1.705.114 2.504.336 1.909-1.294 2.747-1.026 2.747-1.026.546 1.377.202 2.394.1 2.647.64.699 1.028 1.592 1.028 2.683 0 3.842-2.339 4.687-4.566 4.935.359.309.678.919.678 1.852 0 1.336-.012 2.415-.012 2.743 0 .267.18.578.688.48C19.138 20.163 22 16.418 22 12c0-5.523-4.477-10-10-10z\" />\n </svg>\n ),\n onClick: () => {},\n hasSubmenu: true,\n },\n {\n id: \"hubspot\",\n name: \"Add from HubSpot\",\n icon: (\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M18.164 7.93V5.084a2.198 2.198 0 001.267-1.984 2.21 2.21 0 00-4.42 0c0 .873.511 1.627 1.249 1.984V7.93a5.732 5.732 0 00-3.532 1.828l-6.02-4.67a2.61 2.61 0 00.048-.468 2.57 2.57 0 10-2.57 2.57c.53 0 1.02-.164 1.428-.443l5.9 4.578a5.766 5.766 0 00-.173 1.41 5.766 5.766 0 00.243 1.663l-2.855 1.68a2.053 2.053 0 00-1.233-.415 2.066 2.066 0 102.066 2.066c0-.334-.08-.65-.222-.929l2.77-1.63a5.767 5.767 0 103.054-7.26z\" />\n </svg>\n ),\n onClick: () => {},\n hasSubmenu: true,\n },\n]\n\n// Default AI actions\nexport const defaultAIActions: AIAction[] = [\n {\n id: \"ask-siena\",\n name: \"Ask Siena\",\n icon: <Sparkles className=\"h-4 w-4\" />,\n onClick: () => {},\n },\n {\n id: \"research\",\n name: \"Research\",\n icon: <Search className=\"h-4 w-4\" />,\n onClick: () => {},\n },\n {\n id: \"web-search\",\n name: \"Web search\",\n icon: <Globe className=\"h-4 w-4\" />,\n active: true,\n onClick: () => {},\n },\n {\n id: \"use-style\",\n name: \"Use style\",\n icon: <Palette className=\"h-4 w-4\" />,\n onClick: () => {},\n hasSubmenu: true,\n },\n {\n id: \"connectors\",\n name: \"Connectors\",\n icon: <Plug className=\"h-4 w-4\" />,\n onClick: () => {},\n hasSubmenu: true,\n },\n]\n\n// Default playbooks (pre-made prompts)\nexport const defaultPlaybooks: Playbook[] = [\n { id: \"quality-score\", name: \"Quality Score\", prompt: \"What's our quality score?\" },\n { id: \"trends\", name: \"Trends\", prompt: \"Show me the latest trends\" },\n { id: \"weekly-cx-insights\", name: \"Weekly CX Insights\", prompt: \"Give me weekly CX insights\" },\n { id: \"automation\", name: \"Automation\", prompt: \"What's our automation rate?\" },\n { id: \"quality-review\", name: \"Quality Review\", prompt: \"Run a quality review\" },\n]\n\n// Default models\nexport const defaultModels: Model[] = [\n {\n id: \"siena-pro\",\n name: \"Siena Pro\",\n badge: \"NEW\",\n description: \"Most capable model for complex CX tasks\",\n },\n {\n id: \"siena-fast\",\n name: \"Siena Fast\",\n description: \"Quick responses for simple queries\",\n },\n {\n id: \"siena-lite\",\n name: \"Siena Lite\",\n description: \"Lightweight model for basic assistance\",\n },\n]\n\nexport type { AttachmentMenuProps as AttachmentMenuPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport { formatDistanceToNow } from \"date-fns\"\nimport {\n Plus,\n BookOpen,\n Calendar,\n Library,\n ChevronRight,\n MoreHorizontal,\n Trash2,\n PanelLeftClose,\n PanelLeft,\n Mail,\n Hash,\n CheckCircle2,\n XCircle,\n Clock,\n Download,\n FileText,\n Pencil,\n} from \"lucide-react\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/components/ui/alert-dialog\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\n// ============================================================================\n// CHAT SIDEBAR\n// Sidebar with conversation history and navigation sections\n// ============================================================================\n\n/** Channel type for scheduled runs */\nexport type ConversationChannel = \"email\" | \"slack\" | \"sms\" | \"whatsapp\"\n\n/** Status type for scheduled runs */\nexport type ConversationStatus = \"success\" | \"failed\" | \"pending\" | \"running\"\n\nexport interface Conversation {\n id: string\n title: string\n preview?: string\n timestamp: Date\n unread?: boolean\n /** Channel for scheduled runs (shows Mail/Hash icon) */\n channel?: ConversationChannel\n /** Status for scheduled runs (shows ✓/✗ indicator) */\n status?: ConversationStatus\n}\n\n/** Actions available in conversation context menu */\nexport interface ConversationActions {\n onExportMarkdown?: (id: string) => void\n onExportPdf?: (id: string) => void\n /** Called when user confirms rename with the new title */\n onRename?: (id: string, newTitle: string) => void\n onDelete?: (id: string) => void\n}\n\nexport interface SidebarSection {\n id: string\n label: string\n icon?: React.ReactNode\n onClick?: () => void\n badge?: string | number\n hasSubmenu?: boolean\n}\n\nexport interface ChatSidebarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n /** Conversation list */\n conversations: Conversation[]\n /** Active conversation ID */\n activeId?: string\n /** Callback when conversation is selected */\n onSelect: (id: string) => void\n /** Callback for new chat */\n onNew: () => void\n /** Custom navigation sections */\n sections?: SidebarSection[]\n /** Tab options for conversation filtering */\n tabs?: { id: string; label: string }[]\n /** Active tab */\n activeTab?: string\n /** Tab change callback */\n onTabChange?: (tabId: string) => void\n /** Context menu actions (shows ⋮ dropdown with Export/Rename/Delete) */\n conversationActions?: ConversationActions\n /** @deprecated Use conversationActions instead */\n onConversationMenu?: (id: string) => void\n /** @deprecated Use conversationActions.onDelete instead */\n onDelete?: (id: string) => void\n /** Width of sidebar */\n width?: string | number\n /** Collapsed state */\n collapsed?: boolean\n /** Callback to toggle collapse state */\n onCollapse?: () => void\n}\n\nconst defaultSections: SidebarSection[] = [\n {\n id: \"playbooks\",\n label: \"Playbooks\",\n icon: <BookOpen className=\"h-4 w-4\" />,\n },\n {\n id: \"scheduled\",\n label: \"Scheduled\",\n icon: <Calendar className=\"h-4 w-4\" />,\n },\n {\n id: \"library\",\n label: \"Library\",\n icon: <Library className=\"h-4 w-4\" />,\n },\n]\n\nconst defaultTabs = [\n { id: \"recents\", label: \"Recents\" },\n { id: \"scheduled\", label: \"Scheduled Runs\" },\n]\n\n// Helper to get channel icon\nconst getChannelIcon = (channel: ConversationChannel) => {\n switch (channel) {\n case \"email\": return <Mail className=\"h-4 w-4 text-muted-foreground\" />\n case \"slack\": return <Hash className=\"h-4 w-4 text-muted-foreground\" />\n case \"sms\": return <Mail className=\"h-4 w-4 text-muted-foreground\" />\n case \"whatsapp\": return <Mail className=\"h-4 w-4 text-muted-foreground\" />\n default: return null\n }\n}\n\n// Helper to get status icon\nconst getStatusIcon = (status: ConversationStatus) => {\n switch (status) {\n case \"success\": return <CheckCircle2 className=\"h-4 w-4 text-green-500\" />\n case \"failed\": return <XCircle className=\"h-4 w-4 text-red-500\" />\n case \"pending\": return <Clock className=\"h-4 w-4 text-muted-foreground\" />\n case \"running\": return <Clock className=\"h-4 w-4 text-primary animate-pulse\" />\n default: return null\n }\n}\n\nexport function ChatSidebar({\n conversations,\n activeId,\n onSelect,\n onNew,\n sections = defaultSections,\n tabs = defaultTabs,\n activeTab = \"recents\",\n onTabChange,\n conversationActions,\n onConversationMenu,\n onDelete,\n width = 280,\n collapsed = false,\n onCollapse,\n className,\n ...props\n}: ChatSidebarProps) {\n // State for delete confirmation dialog\n const [deleteDialogOpen, setDeleteDialogOpen] = React.useState(false)\n const [conversationToDelete, setConversationToDelete] = React.useState<Conversation | null>(null)\n\n // State for rename dialog\n const [renameDialogOpen, setRenameDialogOpen] = React.useState(false)\n const [conversationToRename, setConversationToRename] = React.useState<Conversation | null>(null)\n const [renameValue, setRenameValue] = React.useState(\"\")\n\n // Check if we have any actions to show the menu\n const hasActions = conversationActions && (\n conversationActions.onExportMarkdown ||\n conversationActions.onExportPdf ||\n conversationActions.onRename ||\n conversationActions.onDelete\n )\n if (collapsed) {\n return (\n <div\n className={cn(\n \"flex flex-col items-center py-4 border-r bg-card\",\n className\n )}\n style={{ width: 60 }}\n {...props}\n >\n {onCollapse && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-9 w-9 mb-2\"\n onClick={onCollapse}\n >\n <PanelLeft className=\"h-4 w-4\" />\n </Button>\n )}\n <Button\n variant=\"default\"\n size=\"icon\"\n className=\"h-9 w-9 rounded-full mb-4\"\n onClick={onNew}\n >\n <Plus className=\"h-4 w-4\" />\n </Button>\n {sections.map((section) => (\n <Button\n key={section.id}\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-9 w-9 mb-1\"\n onClick={section.onClick}\n >\n {section.icon}\n </Button>\n ))}\n </div>\n )\n }\n\n return (\n <div\n className={cn(\n \"flex flex-col border-r bg-card h-full\",\n className\n )}\n style={{ width }}\n {...props}\n >\n {/* Header with New Chat + Collapse */}\n <div className=\"p-3 flex items-center gap-2\">\n <Button\n onClick={onNew}\n className=\"flex-1 gap-2 justify-start\"\n variant=\"outline\"\n >\n <Plus className=\"h-4 w-4\" />\n New Chat\n </Button>\n {onCollapse && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-9 w-9 shrink-0\"\n onClick={onCollapse}\n >\n <PanelLeftClose className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n\n {/* Navigation Sections */}\n {sections.length > 0 && (\n <div className=\"px-2 pb-2 space-y-0.5\">\n {sections.map((section) => (\n <Button\n key={section.id}\n variant=\"ghost\"\n className=\"w-full justify-between h-9 px-3\"\n onClick={section.onClick}\n >\n <span className=\"flex items-center gap-3\">\n {section.icon}\n <span className=\"text-sm\">{section.label}</span>\n </span>\n <span className=\"flex items-center gap-2\">\n {section.badge && (\n <span className=\"text-xs text-muted-foreground\">\n {section.badge}\n </span>\n )}\n {section.hasSubmenu && (\n <ChevronRight className=\"h-3.5 w-3.5 text-muted-foreground\" />\n )}\n </span>\n </Button>\n ))}\n </div>\n )}\n\n {/* Tabs */}\n {tabs.length > 1 && (\n <div className=\"px-4 pt-3\">\n <Tabs value={activeTab} onValueChange={onTabChange}>\n <TabsList className=\"w-full\">\n {tabs.map((tab) => (\n <TabsTrigger\n key={tab.id}\n value={tab.id}\n className=\"flex-1 text-xs\"\n >\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n </div>\n )}\n\n {/* Conversation List */}\n <ScrollArea className=\"flex-1\">\n <div className=\"p-2 space-y-0.5\">\n {conversations.length === 0 ? (\n <div className=\"py-8 text-center text-sm text-muted-foreground\">\n No conversations yet\n </div>\n ) : (\n conversations.map((conversation) => (\n <div\n key={conversation.id}\n className={cn(\n \"group relative rounded-lg px-3 py-2.5 cursor-pointer\",\n \"hover:bg-accent transition-colors\",\n activeId === conversation.id && \"bg-accent\"\n )}\n onClick={() => onSelect(conversation.id)}\n >\n {/* Content with optional channel icon */}\n <div className=\"flex items-start gap-2.5\">\n {/* Channel icon (for scheduled runs) */}\n {conversation.channel && (\n <span className=\"mt-0.5 shrink-0\">\n {getChannelIcon(conversation.channel)}\n </span>\n )}\n\n {/* Title and timestamp */}\n <div className=\"flex-1 min-w-0\">\n <span\n className={cn(\n \"text-sm truncate block\",\n conversation.unread && \"font-medium\"\n )}\n >\n {conversation.title}\n </span>\n <div className=\"flex items-center gap-1.5\">\n <span className=\"text-xs text-muted-foreground\">\n {formatDistanceToNow(conversation.timestamp, {\n addSuffix: true,\n })}\n </span>\n {/* Status icon (for scheduled runs) - in timestamp row */}\n {conversation.status && (\n <>\n <span className=\"text-xs text-muted-foreground\">•</span>\n <span className=\"[&>svg]:h-3 [&>svg]:w-3\">\n {getStatusIcon(conversation.status)}\n </span>\n </>\n )}\n </div>\n </div>\n </div>\n\n {/* Context menu (new conversationActions) */}\n {hasActions && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6 opacity-0 group-hover:opacity-100 absolute right-2 top-2\"\n onClick={(e) => e.stopPropagation()}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-48\">\n {conversationActions?.onExportMarkdown && (\n <DropdownMenuItem\n onClick={(e) => {\n e.stopPropagation()\n conversationActions.onExportMarkdown!(conversation.id)\n }}\n >\n <Download className=\"h-4 w-4 mr-2\" />\n Export as Markdown\n </DropdownMenuItem>\n )}\n {conversationActions?.onExportPdf && (\n <DropdownMenuItem\n onClick={(e) => {\n e.stopPropagation()\n conversationActions.onExportPdf!(conversation.id)\n }}\n >\n <FileText className=\"h-4 w-4 mr-2\" />\n Export as PDF\n </DropdownMenuItem>\n )}\n {conversationActions?.onRename && (\n <DropdownMenuItem\n onClick={(e) => {\n e.stopPropagation()\n setConversationToRename(conversation)\n setRenameValue(conversation.title)\n setRenameDialogOpen(true)\n }}\n >\n <Pencil className=\"h-4 w-4 mr-2\" />\n Rename\n </DropdownMenuItem>\n )}\n {conversationActions?.onDelete && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={(e) => {\n e.stopPropagation()\n setConversationToDelete(conversation)\n setDeleteDialogOpen(true)\n }}\n className=\"text-destructive focus:text-destructive\"\n >\n <Trash2 className=\"h-4 w-4 mr-2\" />\n Delete chat\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {/* Legacy: Menu button (deprecated) */}\n {!hasActions && onConversationMenu && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6 opacity-0 group-hover:opacity-100 absolute right-2 top-2\"\n onClick={(e) => {\n e.stopPropagation()\n onConversationMenu(conversation.id)\n }}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n )}\n\n {/* Legacy: Delete button with confirmation (deprecated) */}\n {!hasActions && onDelete && !onConversationMenu && (\n <AlertDialog>\n <AlertDialogTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6 opacity-0 group-hover:opacity-100 absolute right-2 top-2\"\n onClick={(e) => e.stopPropagation()}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Delete conversation?</AlertDialogTitle>\n <AlertDialogDescription>\n This will permanently delete "{conversation.title}". This action cannot be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={() => onDelete(conversation.id)}\n className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n >\n Delete\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )}\n\n {/* Unread indicator */}\n {conversation.unread && !conversation.status && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2 h-2 w-2 rounded-full bg-primary\" />\n )}\n </div>\n ))\n )}\n </div>\n </ScrollArea>\n\n {/* Delete confirmation dialog (for conversationActions) */}\n <AlertDialog open={deleteDialogOpen} onOpenChange={setDeleteDialogOpen}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Delete conversation?</AlertDialogTitle>\n <AlertDialogDescription>\n This will permanently delete "{conversationToDelete?.title}". This action cannot be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel onClick={() => setConversationToDelete(null)}>\n Cancel\n </AlertDialogCancel>\n <AlertDialogAction\n onClick={() => {\n if (conversationToDelete && conversationActions?.onDelete) {\n conversationActions.onDelete(conversationToDelete.id)\n }\n setConversationToDelete(null)\n }}\n className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n >\n Delete\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n\n {/* Rename dialog (for conversationActions) */}\n <Dialog open={renameDialogOpen} onOpenChange={setRenameDialogOpen}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Rename Conversation</DialogTitle>\n <DialogDescription>\n Enter a new name for this conversation\n </DialogDescription>\n </DialogHeader>\n <Input\n value={renameValue}\n onChange={(e) => setRenameValue(e.target.value)}\n placeholder=\"Conversation name\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && renameValue.trim()) {\n if (conversationToRename && conversationActions?.onRename) {\n conversationActions.onRename(conversationToRename.id, renameValue.trim())\n }\n setRenameDialogOpen(false)\n setConversationToRename(null)\n }\n }}\n />\n <DialogFooter>\n <Button\n variant=\"outline\"\n onClick={() => {\n setRenameDialogOpen(false)\n setConversationToRename(null)\n }}\n >\n Cancel\n </Button>\n <Button\n onClick={() => {\n if (conversationToRename && conversationActions?.onRename && renameValue.trim()) {\n conversationActions.onRename(conversationToRename.id, renameValue.trim())\n }\n setRenameDialogOpen(false)\n setConversationToRename(null)\n }}\n disabled={!renameValue.trim()}\n >\n Rename\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n )\n}\n\nexport type { ChatSidebarProps as ChatSidebarPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { ChatAvatar } from \"./chat-avatar\"\nimport { X, Share, Download, Settings, PanelLeftClose, PanelLeft } from \"lucide-react\"\n\n// ============================================================================\n// CHAT HEADER\n// Header component for chat interfaces with actions\n// ============================================================================\n\nexport interface ChatHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Chat title */\n title?: string\n /** Subtitle or description */\n subtitle?: string\n /** Custom avatar element */\n avatar?: React.ReactNode\n /** Header actions (share, download, etc.) */\n actions?: React.ReactNode\n /** Close callback (shows X button) */\n onClose?: () => void\n /** Sidebar toggle callback */\n onToggleSidebar?: () => void\n /** Is sidebar collapsed */\n sidebarCollapsed?: boolean\n /** Variant affects styling */\n variant?: \"full\" | \"compact\"\n /** Show share button */\n showShare?: boolean\n /** Share callback */\n onShare?: () => void\n /** Show download button */\n showDownload?: boolean\n /** Download callback */\n onDownload?: () => void\n /** Show settings button */\n showSettings?: boolean\n /** Settings callback */\n onSettings?: () => void\n}\n\nexport function ChatHeader({\n title = \"Chat\",\n subtitle,\n avatar,\n actions,\n onClose,\n onToggleSidebar,\n sidebarCollapsed = false,\n variant = \"full\",\n showShare = false,\n onShare,\n showDownload = false,\n onDownload,\n showSettings = false,\n onSettings,\n className,\n ...props\n}: ChatHeaderProps) {\n // In compact mode, don't show subtitle by default (cleaner look for widgets)\n const showSubtitle = variant === \"full\" && subtitle\n\n return (\n <header\n className={cn(\n \"flex items-center justify-between gap-3 border-b bg-card px-4\",\n variant === \"full\" && \"h-14\",\n variant === \"compact\" && \"h-11\",\n className\n )}\n {...props}\n >\n {/* Left section */}\n <div className=\"flex items-center gap-2.5 min-w-0\">\n {/* Sidebar toggle */}\n {onToggleSidebar && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 flex-shrink-0\"\n onClick={onToggleSidebar}\n >\n {sidebarCollapsed ? (\n <PanelLeft className=\"h-4 w-4\" />\n ) : (\n <PanelLeftClose className=\"h-4 w-4\" />\n )}\n </Button>\n )}\n\n {/* Avatar - only in full mode by default */}\n {avatar || (variant === \"full\" && <ChatAvatar type=\"ai\" size=\"sm\" />)}\n\n {/* Title - simple and clean */}\n <h1\n className={cn(\n \"font-medium truncate\",\n variant === \"full\" && \"text-base\",\n variant === \"compact\" && \"text-sm\"\n )}\n >\n {title}\n </h1>\n {showSubtitle && (\n <span className=\"text-xs text-muted-foreground truncate hidden sm:inline\">\n {subtitle}\n </span>\n )}\n </div>\n\n {/* Right section - Actions */}\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n {/* Custom actions */}\n {actions}\n\n {/* Share button */}\n {showShare && onShare && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-muted-foreground hover:text-foreground\"\n onClick={onShare}\n >\n <Share className=\"h-4 w-4\" />\n </Button>\n )}\n\n {/* Download button */}\n {showDownload && onDownload && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-muted-foreground hover:text-foreground\"\n onClick={onDownload}\n >\n <Download className=\"h-4 w-4\" />\n </Button>\n )}\n\n {/* Settings button */}\n {showSettings && onSettings && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-muted-foreground hover:text-foreground\"\n onClick={onSettings}\n >\n <Settings className=\"h-4 w-4\" />\n </Button>\n )}\n\n {/* Close button */}\n {onClose && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-muted-foreground hover:text-foreground\"\n onClick={onClose}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n </header>\n )\n}\n\nexport type { ChatHeaderProps as ChatHeaderPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { ChatHeader } from \"./chat-header\"\nimport { ChatSidebar, type Conversation, type SidebarSection } from \"./chat-sidebar\"\nimport { ChatMessageList } from \"./chat-message-list\"\nimport { ChatInput } from \"./chat-input\"\nimport { type Model } from \"./model-selector\"\nimport { type Message, type Attachment } from \"./message-bubble\"\n\n// ============================================================================\n// CHAT WINDOW\n// Full-screen chat interface for AskSiena (internal Claude-like tool)\n// ============================================================================\n\nexport interface ChatWindowProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current messages */\n messages: Message[]\n /** Current input value */\n inputValue: string\n /** Input change callback */\n onInputChange: (value: string) => void\n /** Send message callback */\n onSend: () => void\n /** Conversations for sidebar */\n conversations?: Conversation[]\n /** Active conversation ID */\n activeConversationId?: string\n /** Conversation select callback */\n onConversationSelect?: (id: string) => void\n /** New chat callback */\n onNewChat?: () => void\n /** Sidebar sections */\n sidebarSections?: SidebarSection[]\n /** Header title */\n title?: string\n /** Header subtitle */\n subtitle?: string\n /** Show typing indicator */\n typing?: boolean\n /** Loading messages */\n loadingMessages?: boolean\n /** Currently streaming message ID */\n streamingMessageId?: string\n /** Message feedback states */\n feedbackStates?: Record<string, \"up\" | \"down\" | null>\n /** Copy message callback */\n onCopyMessage?: (message: Message) => void\n /** Edit message callback */\n onEditMessage?: (message: Message) => void\n /** Regenerate message callback */\n onRegenerateMessage?: (message: Message) => void\n /** Feedback callback */\n onFeedback?: (message: Message, type: \"up\" | \"down\") => void\n /** Current attachments */\n attachments?: Attachment[]\n /** Attach files callback */\n onAttach?: (files: File[]) => void\n /** Remove attachment callback */\n onRemoveAttachment?: (id: string) => void\n /** Voice transcript callback */\n onVoiceTranscript?: (text: string) => void\n /** Available models */\n models?: Model[]\n /** Selected model ID */\n selectedModel?: string\n /** Model change callback */\n onModelChange?: (id: string) => void\n /** Share callback */\n onShare?: () => void\n /** Download callback */\n onDownload?: () => void\n /** Welcome message component */\n welcomeMessage?: React.ReactNode\n /** Input disclaimer text */\n disclaimer?: string\n /** Sidebar collapsed state */\n sidebarCollapsed?: boolean\n /** Sidebar toggle callback */\n onToggleSidebar?: () => void\n /** Default sidebar width */\n sidebarWidth?: number\n /** Show header actions */\n showHeaderActions?: boolean\n}\n\nconst defaultModels: Model[] = [\n { id: \"opus\", name: \"Opus 4.5\", badge: \"NEW\" },\n { id: \"sonnet\", name: \"Sonnet 4\" },\n { id: \"haiku\", name: \"Haiku 3.5\" },\n]\n\nexport function ChatWindow({\n messages,\n inputValue,\n onInputChange,\n onSend,\n conversations = [],\n activeConversationId,\n onConversationSelect,\n onNewChat,\n sidebarSections,\n title = \"Ask Siena\",\n subtitle,\n typing = false,\n loadingMessages = false,\n streamingMessageId,\n feedbackStates = {},\n onCopyMessage,\n onEditMessage,\n onRegenerateMessage,\n onFeedback,\n attachments = [],\n onAttach,\n onRemoveAttachment,\n onVoiceTranscript,\n models = defaultModels,\n selectedModel,\n onModelChange,\n onShare,\n onDownload,\n welcomeMessage,\n disclaimer,\n sidebarCollapsed = false,\n onToggleSidebar,\n sidebarWidth = 280,\n showHeaderActions = true,\n className,\n ...props\n}: ChatWindowProps) {\n const handleAttachClick = React.useRef<(() => void) | null>(null)\n\n return (\n <div\n className={cn(\"flex h-screen bg-background overflow-hidden\", className)}\n {...props}\n >\n {/* Sidebar */}\n {onConversationSelect && onNewChat && (\n <ChatSidebar\n conversations={conversations}\n activeId={activeConversationId}\n onSelect={onConversationSelect}\n onNew={onNewChat}\n sections={sidebarSections}\n collapsed={sidebarCollapsed}\n width={sidebarWidth}\n className=\"flex-shrink-0\"\n />\n )}\n\n {/* Main content area */}\n <div className=\"flex flex-col flex-1 min-w-0\">\n {/* Header */}\n <ChatHeader\n title={title}\n subtitle={subtitle}\n onToggleSidebar={onToggleSidebar}\n sidebarCollapsed={sidebarCollapsed}\n showShare={showHeaderActions && !!onShare}\n onShare={onShare}\n showDownload={showHeaderActions && !!onDownload}\n onDownload={onDownload}\n variant=\"full\"\n />\n\n {/* Messages */}\n <ChatMessageList\n messages={messages}\n loading={loadingMessages}\n typing={typing}\n streamingMessageId={streamingMessageId}\n feedbackStates={feedbackStates}\n onCopyMessage={onCopyMessage}\n onEditMessage={onEditMessage}\n onRegenerateMessage={onRegenerateMessage}\n onFeedback={onFeedback}\n welcomeMessage={welcomeMessage}\n className=\"flex-1\"\n />\n\n {/* Input area */}\n <div className=\"p-4\">\n <div className=\"max-w-4xl mx-auto\">\n <ChatInput\n value={inputValue}\n onChange={onInputChange}\n onSend={onSend}\n onAttach={onAttach}\n attachments={attachments}\n onRemoveAttachment={onRemoveAttachment}\n placeholder=\"Ask me anything...\"\n showVoice={!!onVoiceTranscript}\n showAttachButton\n />\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport type { ChatWindowProps as ChatWindowPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Sheet, SheetContent } from \"@/components/ui/sheet\"\nimport { ChatHeader } from \"./chat-header\"\nimport { ChatMessageList } from \"./chat-message-list\"\nimport { ChatInput } from \"./chat-input\"\nimport { AttachmentMenu } from \"./attachment-menu\"\nimport { SuggestionChips } from \"./suggestion-chips\"\nimport { type Message, type Attachment } from \"./message-bubble\"\n\n// ============================================================================\n// CHAT PANEL\n// Side panel chat interface for embedded assistant (automations, settings)\n// ============================================================================\n\nexport interface ChatPanelProps {\n /** Panel open state */\n open: boolean\n /** Open state change callback */\n onOpenChange: (open: boolean) => void\n /** Panel side */\n side?: \"left\" | \"right\"\n /** Panel size */\n size?: \"sm\" | \"default\" | \"lg\"\n /** Current messages */\n messages: Message[]\n /** Current input value */\n inputValue: string\n /** Input change callback */\n onInputChange: (value: string) => void\n /** Send message callback */\n onSend: () => void\n /** Header title */\n title?: string\n /** Header subtitle */\n subtitle?: string\n /** Show typing indicator */\n typing?: boolean\n /** Loading messages */\n loadingMessages?: boolean\n /** Currently streaming message ID */\n streamingMessageId?: string\n /** Message feedback states */\n feedbackStates?: Record<string, \"up\" | \"down\" | null>\n /** Copy message callback */\n onCopyMessage?: (message: Message) => void\n /** Regenerate message callback */\n onRegenerateMessage?: (message: Message) => void\n /** Feedback callback */\n onFeedback?: (message: Message, type: \"up\" | \"down\") => void\n /** Current attachments */\n attachments?: Attachment[]\n /** Attach files callback */\n onAttach?: (files: File[]) => void\n /** Remove attachment callback */\n onRemoveAttachment?: (id: string) => void\n /** Voice transcript callback */\n onVoiceTranscript?: (text: string) => void\n /** Welcome message component */\n welcomeMessage?: React.ReactNode\n /** Suggestion chips for quick actions */\n suggestions?: string[]\n /** Suggestion select callback */\n onSuggestionSelect?: (suggestion: string) => void\n /** Input placeholder */\n placeholder?: string\n /** Input disclaimer text */\n disclaimer?: string\n /** Show attachment menu */\n showAttachments?: boolean\n /** Custom header actions */\n headerActions?: React.ReactNode\n /** Panel className */\n className?: string\n}\n\nconst sizeMap = {\n sm: \"w-80\", // 320px\n default: \"w-[400px]\",\n lg: \"w-[480px]\",\n}\n\nexport function ChatPanel({\n open,\n onOpenChange,\n side = \"right\",\n size = \"default\",\n messages,\n inputValue,\n onInputChange,\n onSend,\n title = \"AI Assistant\",\n subtitle,\n typing = false,\n loadingMessages = false,\n streamingMessageId,\n feedbackStates = {},\n onCopyMessage,\n onRegenerateMessage,\n onFeedback,\n attachments = [],\n onAttach,\n onRemoveAttachment,\n onVoiceTranscript,\n welcomeMessage,\n suggestions = [],\n onSuggestionSelect,\n placeholder = \"Ask a question...\",\n disclaimer,\n showAttachments = true,\n headerActions,\n className,\n}: ChatPanelProps) {\n const isEmpty = messages.length === 0\n\n const handleSuggestionSelect = (suggestion: string) => {\n onInputChange(suggestion)\n onSuggestionSelect?.(suggestion)\n }\n\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent\n side={side}\n className={cn(\n \"flex flex-col p-0\",\n sizeMap[size],\n className\n )}\n >\n {/* Header */}\n <ChatHeader\n title={title}\n subtitle={subtitle}\n onClose={() => onOpenChange(false)}\n actions={headerActions}\n variant=\"compact\"\n className=\"border-b\"\n />\n\n {/* Messages */}\n <ChatMessageList\n messages={messages}\n loading={loadingMessages}\n typing={typing}\n streamingMessageId={streamingMessageId}\n feedbackStates={feedbackStates}\n onCopyMessage={onCopyMessage}\n onRegenerateMessage={onRegenerateMessage}\n onFeedback={onFeedback}\n welcomeMessage={welcomeMessage}\n className=\"flex-1\"\n />\n\n {/* Suggestions (shown when empty) */}\n {isEmpty && suggestions.length > 0 && (\n <div className=\"px-4 pb-2\">\n <SuggestionChips\n suggestions={suggestions}\n onSelect={handleSuggestionSelect}\n variant=\"outline\"\n />\n </div>\n )}\n\n {/* Input area */}\n <div className=\"border-t bg-card p-3\">\n <ChatInput\n value={inputValue}\n onChange={onInputChange}\n onSend={onSend}\n onAttach={onAttach}\n attachments={attachments}\n onRemoveAttachment={onRemoveAttachment}\n placeholder={placeholder}\n showVoice={!!onVoiceTranscript}\n showAttachButton={showAttachments}\n />\n </div>\n </SheetContent>\n </Sheet>\n )\n}\n\nexport type { ChatPanelProps as ChatPanelPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { ChatAvatar } from \"./chat-avatar\"\nimport { ChatHeader } from \"./chat-header\"\nimport { ChatMessageList } from \"./chat-message-list\"\nimport { ChatInput } from \"./chat-input\"\nimport { SuggestionChips } from \"./suggestion-chips\"\nimport { type Message, type Attachment } from \"./message-bubble\"\nimport { Sparkles, X } from \"lucide-react\"\n\n// ============================================================================\n// CHAT WIDGET\n// Floating chat widget for customer-facing live chat (Playground mode)\n// ============================================================================\n\nexport interface ChatWidgetProps {\n /** Widget open state */\n open: boolean\n /** Open state change callback */\n onOpenChange: (open: boolean) => void\n /** Widget position */\n position?: \"bottom-right\" | \"bottom-left\"\n /** Trigger icon */\n triggerIcon?: React.ReactNode\n /** Trigger label (for tooltip) */\n triggerLabel?: string\n /** Unread message count */\n unreadCount?: number\n /** Current messages */\n messages: Message[]\n /** Current input value */\n inputValue: string\n /** Input change callback */\n onInputChange: (value: string) => void\n /** Send message callback */\n onSend: () => void\n /** Header title */\n title?: string\n /** Header subtitle */\n subtitle?: string\n /** Show typing indicator */\n typing?: boolean\n /** Loading messages */\n loadingMessages?: boolean\n /** Currently streaming message ID */\n streamingMessageId?: string\n /** Message feedback states */\n feedbackStates?: Record<string, \"up\" | \"down\" | null>\n /** Feedback callback */\n onFeedback?: (message: Message, type: \"up\" | \"down\") => void\n /** Copy message callback */\n onCopyMessage?: (message: Message) => void\n /** Current attachments */\n attachments?: Attachment[]\n /** Attach files callback (images only for widget) */\n onAttach?: (files: File[]) => void\n /** Remove attachment callback */\n onRemoveAttachment?: (id: string) => void\n /** Welcome message component */\n welcomeMessage?: React.ReactNode\n /** Suggestion chips for quick actions */\n suggestions?: string[]\n /** Suggestion select callback */\n onSuggestionSelect?: (suggestion: string) => void\n /** Input placeholder */\n placeholder?: string\n /** Widget width */\n width?: number\n /** Widget height */\n height?: number\n /** Custom header avatar */\n headerAvatar?: React.ReactNode\n /** Custom trigger button className */\n triggerClassName?: string\n /** Widget className */\n className?: string\n}\n\nexport function ChatWidget({\n open,\n onOpenChange,\n position = \"bottom-right\",\n triggerIcon,\n triggerLabel = \"Chat with us\",\n unreadCount,\n messages,\n inputValue,\n onInputChange,\n onSend,\n title = \"Ask Siena\",\n subtitle = \"AI Assistant\",\n typing = false,\n loadingMessages = false,\n streamingMessageId,\n feedbackStates = {},\n onFeedback,\n onCopyMessage,\n attachments = [],\n onAttach,\n onRemoveAttachment,\n welcomeMessage,\n suggestions = [],\n onSuggestionSelect,\n placeholder = \"Type a message...\",\n width = 420,\n height = 640,\n headerAvatar,\n triggerClassName,\n className,\n}: ChatWidgetProps) {\n const isEmpty = messages.length === 0\n\n const handleSuggestionSelect = (suggestion: string) => {\n onInputChange(suggestion)\n onSuggestionSelect?.(suggestion)\n }\n\n const positionClasses = {\n \"bottom-right\": \"bottom-4 right-4\",\n \"bottom-left\": \"bottom-4 left-4\",\n }\n\n // Default welcome message\n const defaultWelcome = (\n <div className=\"flex flex-col items-center text-center py-8 px-4\">\n <ChatAvatar type=\"ai\" size=\"lg\" className=\"mb-4\" />\n <h3 className=\"font-medium text-lg mb-2\">Hi there!</h3>\n <p className=\"text-muted-foreground text-sm\">\n How can I help you today?\n </p>\n </div>\n )\n\n return (\n <div className={cn(\"fixed z-50\", positionClasses[position])}>\n {/* Chat window */}\n {open && (\n <div\n className={cn(\n \"absolute mb-4 rounded-2xl overflow-hidden bg-card border shadow-medium\",\n \"animate-in fade-in-0 duration-100\", // Fast, simple animation\n \"flex flex-col will-change-[opacity]\",\n position === \"bottom-right\" && \"right-0 bottom-full\",\n position === \"bottom-left\" && \"left-0 bottom-full\",\n className\n )}\n style={{ width, height, contain: \"layout\" }}\n >\n {/* Header - clean and minimal */}\n <ChatHeader\n title={title}\n avatar={headerAvatar}\n onClose={() => onOpenChange(false)}\n variant=\"compact\"\n className=\"shrink-0\"\n />\n\n {/* Messages - min-h-0 enables flex overflow, overflow-hidden contains scroll */}\n <div className=\"flex-1 min-h-0 overflow-hidden\">\n <ChatMessageList\n messages={messages}\n loading={loadingMessages}\n typing={typing}\n streamingMessageId={streamingMessageId}\n feedbackStates={feedbackStates}\n onCopyMessage={onCopyMessage}\n onFeedback={onFeedback}\n welcomeMessage={welcomeMessage || defaultWelcome}\n className=\"h-full bg-background\"\n />\n </div>\n\n {/* Suggestions (shown when empty) */}\n {isEmpty && suggestions.length > 0 && (\n <div className=\"shrink-0 px-4 pb-2 bg-background\">\n <SuggestionChips\n suggestions={suggestions}\n onSelect={handleSuggestionSelect}\n variant=\"filled\"\n />\n </div>\n )}\n\n {/* Input area */}\n <div className=\"shrink-0 border-t bg-card p-3\">\n <ChatInput\n value={inputValue}\n onChange={onInputChange}\n onSend={onSend}\n onAttach={onAttach}\n attachments={attachments}\n onRemoveAttachment={onRemoveAttachment}\n placeholder={placeholder}\n showVoice={false}\n showAttachButton={!!onAttach}\n submitShortcut=\"Enter\"\n maxRows={4}\n />\n </div>\n </div>\n )}\n\n {/* Trigger button */}\n <Button\n size=\"lg\"\n className={cn(\n \"h-14 w-14 rounded-full shadow-large\",\n \"transition-transform hover:scale-105 active:scale-95\",\n open && \"bg-muted hover:bg-muted text-muted-foreground\",\n triggerClassName\n )}\n onClick={() => onOpenChange(!open)}\n aria-label={open ? \"Close chat\" : triggerLabel}\n >\n {open ? (\n <X className=\"h-6 w-6\" />\n ) : (\n <>\n {triggerIcon || <Sparkles className=\"h-6 w-6\" />}\n {/* Unread badge */}\n {!open && unreadCount && unreadCount > 0 && (\n <span className=\"absolute -top-1 -right-1 h-5 w-5 rounded-full bg-destructive text-destructive-foreground text-xs font-medium flex items-center justify-center\">\n {unreadCount > 9 ? \"9+\" : unreadCount}\n </span>\n )}\n </>\n )}\n </Button>\n </div>\n )\n}\n\nexport type { ChatWidgetProps as ChatWidgetPropsType }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Lock, Globe, Check, Copy, Link2 } from \"lucide-react\"\nimport { toast } from \"sonner\"\n\n// ============================================================================\n// SHARE DIALOG\n// Modal for sharing conversations with Private/Public visibility toggle\n// ============================================================================\n\nexport interface ShareDialogProps {\n /** Trigger element (button, etc.) */\n trigger?: React.ReactNode\n /** Dialog title */\n title?: string\n /** The shareable URL */\n shareUrl?: string\n /** Callback when visibility changes */\n onVisibilityChange?: (visibility: \"private\" | \"public\") => void\n /** Default visibility state */\n defaultVisibility?: \"private\" | \"public\"\n /** Alternative to trigger - children as trigger */\n children?: React.ReactNode\n /** Control open state externally */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n}\n\nexport function ShareDialog({\n trigger,\n title = \"Share conversation\",\n shareUrl = \"https://siena.ai/share/abc123...\",\n onVisibilityChange,\n defaultVisibility = \"private\",\n children,\n open,\n onOpenChange,\n}: ShareDialogProps) {\n const [visibility, setVisibility] = React.useState<\"private\" | \"public\">(defaultVisibility)\n const [copied, setCopied] = React.useState(false)\n\n const handleVisibilityChange = (v: \"private\" | \"public\") => {\n setVisibility(v)\n onVisibilityChange?.(v)\n }\n\n const handleCopy = () => {\n navigator.clipboard.writeText(shareUrl)\n setCopied(true)\n toast.success(\"Link copied to clipboard\")\n setTimeout(() => setCopied(false), 2000)\n }\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogTrigger asChild>\n {trigger || children}\n </DialogTrigger>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>\n Only messages up until now will be shared\n </DialogDescription>\n </DialogHeader>\n\n {/* Visibility Options */}\n <div className=\"space-y-2 mt-2\">\n <button\n type=\"button\"\n onClick={() => handleVisibilityChange(\"private\")}\n className={cn(\n \"w-full flex items-center gap-3 p-3 rounded-lg border transition-colors text-left\",\n visibility === \"private\"\n ? \"border-primary bg-primary/5\"\n : \"border-border hover:bg-muted\"\n )}\n >\n <Lock className=\"h-5 w-5 text-muted-foreground\" />\n <div className=\"flex-1\">\n <p className=\"font-medium text-sm\">Private</p>\n <p className=\"text-xs text-muted-foreground\">Only you have access</p>\n </div>\n {visibility === \"private\" && <Check className=\"h-4 w-4 text-primary\" />}\n </button>\n\n <button\n type=\"button\"\n onClick={() => handleVisibilityChange(\"public\")}\n className={cn(\n \"w-full flex items-center gap-3 p-3 rounded-lg border transition-colors text-left\",\n visibility === \"public\"\n ? \"border-primary bg-primary/5\"\n : \"border-border hover:bg-muted\"\n )}\n >\n <Globe className=\"h-5 w-5 text-muted-foreground\" />\n <div className=\"flex-1\">\n <p className=\"font-medium text-sm\">Public access</p>\n <p className=\"text-xs text-muted-foreground\">Anyone with the link can view</p>\n </div>\n {visibility === \"public\" && <Check className=\"h-4 w-4 text-primary\" />}\n </button>\n </div>\n\n {/* Share Link (only visible when public) */}\n {visibility === \"public\" && (\n <div className=\"flex items-center gap-2 mt-4\">\n <div className=\"flex-1 flex items-center gap-2 px-3 py-2 bg-muted rounded-lg overflow-hidden\">\n <Link2 className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n <span className=\"text-sm text-muted-foreground truncate\">{shareUrl}</span>\n </div>\n <Button onClick={handleCopy} size=\"sm\" className=\"shrink-0\">\n {copied ? <Check className=\"h-4 w-4\" /> : <Copy className=\"h-4 w-4\" />}\n <span className=\"ml-1.5\">{copied ? \"Copied\" : \"Copy\"}</span>\n </Button>\n </div>\n )}\n </DialogContent>\n </Dialog>\n )\n}\n\nexport type { ShareDialogProps as ShareDialogPropsType }\n","\"use client\"\n\n// ============================================================================\n// DATA TABLE\n// A flexible, sortable, filterable table built on TanStack Table\n//\n// Usage:\n// const columns = [\n// { accessorKey: \"name\", header: \"Name\" },\n// { accessorKey: \"email\", header: \"Email\" },\n// ]\n// <DataTable columns={columns} data={users} />\n//\n// With search:\n// <DataTable columns={columns} data={users} searchKey=\"name\" searchPlaceholder=\"Search users...\" />\n// ============================================================================\n\nimport * as React from \"react\"\nimport {\n ColumnDef,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport { ChevronDown, ChevronUp, ChevronsUpDown, Search } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n searchKey?: string\n searchPlaceholder?: string\n showColumnToggle?: boolean\n showPagination?: boolean\n pageSize?: number\n emptyMessage?: string\n}\n\n// ----------------------------------------------------------------------------\n// Sort Header Helper\n// ----------------------------------------------------------------------------\n\ninterface DataTableColumnHeaderProps<TData, TValue>\n extends React.HTMLAttributes<HTMLDivElement> {\n column: {\n getCanSort: () => boolean\n getIsSorted: () => false | \"asc\" | \"desc\"\n toggleSorting: (desc?: boolean) => void\n }\n title: string\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>\n }\n\n return (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\"-ml-3 h-8 data-[state=open]:bg-accent\", className)}\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n >\n <span>{title}</span>\n {column.getIsSorted() === \"desc\" ? (\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n ) : column.getIsSorted() === \"asc\" ? (\n <ChevronUp className=\"ml-2 h-4 w-4\" />\n ) : (\n <ChevronsUpDown className=\"ml-2 h-4 w-4\" />\n )}\n </Button>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Main Component\n// ----------------------------------------------------------------------------\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n searchKey,\n searchPlaceholder = \"Search...\",\n showColumnToggle = false,\n showPagination = true,\n pageSize = 10,\n emptyMessage = \"No results found.\",\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([])\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({})\n const [rowSelection, setRowSelection] = React.useState({})\n\n const table = useReactTable({\n data,\n columns,\n initialState: {\n pagination: {\n pageSize,\n },\n },\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n },\n })\n\n return (\n <div className=\"w-full space-y-4\">\n {/* Toolbar */}\n {(searchKey || showColumnToggle) && (\n <div className=\"flex items-center justify-between gap-4\">\n {searchKey && (\n <div className=\"relative max-w-sm flex-1\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder={searchPlaceholder}\n value={(table.getColumn(searchKey)?.getFilterValue() as string) ?? \"\"}\n onChange={(event) =>\n table.getColumn(searchKey)?.setFilterValue(event.target.value)\n }\n className=\"pl-9\"\n />\n </div>\n )}\n {showColumnToggle && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n Columns <ChevronDown className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) =>\n column.toggleVisibility(!!value)\n }\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n )}\n\n {/* Table */}\n <div className=\"rounded-xl border border-border overflow-hidden\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id} className=\"bg-muted/50 hover:bg-muted/50 border-b\">\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id} className=\"font-semibold text-muted-foreground text-xs uppercase tracking-wide\">\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </TableHead>\n )\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n className=\"transition-colors\"\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center text-muted-foreground\"\n >\n {emptyMessage}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination */}\n {showPagination && (\n <div className=\"flex items-center justify-between gap-4\">\n <div className=\"text-sm text-muted-foreground\">\n {table.getFilteredSelectedRowModel().rows.length > 0 && (\n <span>\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n </span>\n )}\n {table.getFilteredRowModel().rows.length} row(s)\n </div>\n <div className=\"flex items-center gap-4\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Rows per page</span>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value))\n }}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}\n","// ============================================================================\n// EMPTY STATE\n// A flexible component for empty, error, and loading states\n//\n// Usage:\n// <EmptyState\n// icon={<FileX className=\"h-12 w-12\" />}\n// title=\"No results found\"\n// description=\"Try adjusting your search or filters\"\n// action={<Button>Clear filters</Button>}\n// />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode\n title: string\n description?: string\n action?: React.ReactNode\n size?: \"sm\" | \"default\" | \"lg\"\n}\n\nexport function EmptyState({\n icon,\n title,\n description,\n action,\n size = \"default\",\n className,\n ...props\n}: EmptyStateProps) {\n const sizeClasses = {\n sm: \"py-8\",\n default: \"py-12\",\n lg: \"py-16\",\n }\n\n const iconSizeClasses = {\n sm: \"[&>svg]:h-8 [&>svg]:w-8\",\n default: \"[&>svg]:h-12 [&>svg]:w-12\",\n lg: \"[&>svg]:h-16 [&>svg]:w-16\",\n }\n\n const titleSizeClasses = {\n sm: \"text-base\",\n default: \"text-lg\",\n lg: \"text-xl\",\n }\n\n return (\n <div\n data-slot=\"empty-state\"\n className={cn(\n \"flex flex-col items-center justify-center text-center\",\n sizeClasses[size],\n className\n )}\n {...props}\n >\n {icon && (\n <div\n className={cn(\n \"mb-4 text-muted-foreground/50\",\n iconSizeClasses[size]\n )}\n >\n {icon}\n </div>\n )}\n <h3\n className={cn(\n \"font-semibold text-foreground\",\n titleSizeClasses[size]\n )}\n >\n {title}\n </h3>\n {description && (\n <p className=\"mt-1.5 max-w-sm text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n {action && <div className=\"mt-4\">{action}</div>}\n </div>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// STAT CARD\n// Dashboard statistic card with value, label, and optional trend indicator\n//\n// Usage:\n// <StatCard\n// label=\"Total Revenue\"\n// value=\"$45,231.89\"\n// trend={{ value: 20.1, direction: \"up\" }}\n// icon={<DollarSign className=\"h-4 w-4\" />}\n// />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface TrendData {\n value: number\n direction: \"up\" | \"down\" | \"neutral\"\n label?: string\n}\n\ninterface StatCardProps extends React.HTMLAttributes<HTMLDivElement> {\n label: string\n value: string | number\n description?: string\n icon?: React.ReactNode\n trend?: TrendData\n loading?: boolean\n}\n\n// ----------------------------------------------------------------------------\n// Trend Badge Sub-component\n// ----------------------------------------------------------------------------\n\nexport function TrendBadge({\n value,\n direction,\n label,\n className,\n}: TrendData & { className?: string }) {\n const Icon = direction === \"up\"\n ? TrendingUp\n : direction === \"down\"\n ? TrendingDown\n : Minus\n\n // Siena sage for positive, muted for negative/neutral\n const colorClasses = {\n up: \"bg-siena-sage/20 text-siena-sage\",\n down: \"bg-muted text-muted-foreground\",\n neutral: \"bg-muted text-muted-foreground\",\n }\n\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-0.5 rounded-full px-2 py-0.5 text-xs font-medium\",\n colorClasses[direction],\n className\n )}\n >\n <Icon className=\"h-3 w-3\" />\n <span>\n {direction !== \"neutral\" && (direction === \"up\" ? \"+\" : \"\")}\n {value}%\n </span>\n {label && (\n <span className=\"font-normal ml-1\">{label}</span>\n )}\n </div>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Skeleton\n// ----------------------------------------------------------------------------\n\nfunction StatCardSkeleton() {\n return (\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between pb-2\">\n <div className=\"h-4 w-24 animate-pulse rounded bg-muted\" />\n <div className=\"h-4 w-4 animate-pulse rounded bg-muted\" />\n </CardHeader>\n <CardContent>\n <div className=\"h-8 w-32 animate-pulse rounded bg-muted\" />\n <div className=\"mt-2 h-3 w-20 animate-pulse rounded bg-muted\" />\n </CardContent>\n </Card>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Main Component\n// ----------------------------------------------------------------------------\n\nexport function StatCard({\n label,\n value,\n description,\n icon,\n trend,\n loading,\n className,\n ...props\n}: StatCardProps) {\n if (loading) {\n return <StatCardSkeleton />\n }\n\n return (\n <Card className={cn(className)} {...props}>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium text-muted-foreground\">\n {label}\n </CardTitle>\n {icon && (\n <div className=\"text-muted-foreground\">\n {icon}\n </div>\n )}\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{value}</div>\n {(trend || description) && (\n <div className=\"mt-1 flex items-center gap-2\">\n {trend && <TrendBadge {...trend} />}\n {description && !trend && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n </CardContent>\n </Card>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// CHART CARD\n// Dashboard card wrapper for charts with header, description, and footer\n//\n// Usage:\n// <ChartCard\n// title=\"Revenue Over Time\"\n// description=\"Monthly revenue for the past 6 months\"\n// footer={<TrendBadge value={12} direction=\"up\" label=\"vs last period\" />}\n// >\n// <ChartContainer config={chartConfig}>\n// <AreaChart data={data}>...</AreaChart>\n// </ChartContainer>\n// </ChartCard>\n// ============================================================================\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\ninterface ChartCardProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string\n description?: string\n footer?: React.ReactNode\n action?: React.ReactNode\n loading?: boolean\n children: React.ReactNode\n}\n\n// ----------------------------------------------------------------------------\n// Skeleton\n// ----------------------------------------------------------------------------\n\nfunction ChartCardSkeleton({ className }: { className?: string }) {\n return (\n <Card className={cn(className)}>\n <CardHeader>\n <div className=\"h-5 w-32 animate-pulse rounded bg-muted\" />\n <div className=\"h-4 w-48 animate-pulse rounded bg-muted\" />\n </CardHeader>\n <CardContent>\n <div className=\"h-[200px] w-full animate-pulse rounded bg-muted\" />\n </CardContent>\n <CardFooter>\n <div className=\"h-4 w-24 animate-pulse rounded bg-muted\" />\n </CardFooter>\n </Card>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Main Component\n// ----------------------------------------------------------------------------\n\nexport function ChartCard({\n title,\n description,\n footer,\n action,\n loading,\n children,\n className,\n ...props\n}: ChartCardProps) {\n if (loading) {\n return <ChartCardSkeleton className={className} />\n }\n\n return (\n <Card className={cn(className)} {...props}>\n <CardHeader className=\"flex flex-row items-start justify-between\">\n <div className=\"space-y-1\">\n <CardTitle>{title}</CardTitle>\n {description && <CardDescription>{description}</CardDescription>}\n </div>\n {action && <div className=\"shrink-0\">{action}</div>}\n </CardHeader>\n <CardContent>{children}</CardContent>\n {footer && (\n <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n {footer}\n </CardFooter>\n )}\n </Card>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// FILTER DROPDOWN\n// Multi-select dropdown filter with checkboxes and search\n//\n// Usage:\n// <FilterDropdown\n// label=\"Status\"\n// options={[\n// { value: \"active\", label: \"Active\" },\n// { value: \"pending\", label: \"Pending\" },\n// ]}\n// selected={[\"active\"]}\n// onChange={(values) => setSelected(values)}\n// />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { Check, ChevronDown, X, Search } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport { Separator } from \"@/components/ui/separator\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface FilterOption {\n value: string\n label: string\n icon?: React.ReactNode\n count?: number\n}\n\ninterface FilterDropdownProps {\n label: string\n options: FilterOption[]\n selected: string[]\n onChange: (values: string[]) => void\n showSearch?: boolean\n searchPlaceholder?: string\n showCounts?: boolean\n maxDisplayed?: number\n className?: string\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function FilterDropdown({\n label,\n options,\n selected,\n onChange,\n showSearch = false,\n searchPlaceholder = \"Search...\",\n showCounts = false,\n maxDisplayed = 2,\n className,\n}: FilterDropdownProps) {\n const [open, setOpen] = React.useState(false)\n const [searchQuery, setSearchQuery] = React.useState(\"\")\n\n const filteredOptions = options.filter((option) =>\n option.label.toLowerCase().includes(searchQuery.toLowerCase())\n )\n\n const handleToggle = (value: string) => {\n if (selected.includes(value)) {\n onChange(selected.filter((v) => v !== value))\n } else {\n onChange([...selected, value])\n }\n }\n\n const handleSelectAll = () => {\n onChange(options.map((o) => o.value))\n }\n\n const handleClearAll = () => {\n onChange([])\n }\n\n const selectedLabels = selected\n .map((value) => options.find((o) => o.value === value)?.label)\n .filter(Boolean)\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"h-9 justify-between gap-2\", className)}\n >\n <span className=\"text-muted-foreground\">{label}</span>\n {selected.length > 0 && (\n <>\n <Separator orientation=\"vertical\" className=\"h-4\" />\n <div className=\"flex items-center gap-1\">\n {selectedLabels.slice(0, maxDisplayed).map((label) => (\n <Badge key={label} variant=\"soft\" color=\"default\" size=\"sm\">\n {label}\n </Badge>\n ))}\n {selected.length > maxDisplayed && (\n <Badge variant=\"soft\" color=\"default\" size=\"sm\">\n +{selected.length - maxDisplayed}\n </Badge>\n )}\n </div>\n </>\n )}\n <ChevronDown className=\"ml-auto h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-56 p-0\" align=\"start\">\n {showSearch && (\n <div className=\"p-2 pb-0\">\n <div className=\"relative\">\n <Search className=\"absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder={searchPlaceholder}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"h-8 pl-8\"\n />\n </div>\n </div>\n )}\n\n <div className=\"flex items-center justify-between gap-2 px-2 py-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 text-xs\"\n onClick={handleSelectAll}\n >\n Select all\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 text-xs\"\n onClick={handleClearAll}\n disabled={selected.length === 0}\n >\n Clear\n </Button>\n </div>\n\n <Separator />\n\n <div className=\"max-h-64 overflow-auto p-2\">\n {filteredOptions.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n No options found\n </div>\n ) : (\n <div className=\"space-y-1\">\n {filteredOptions.map((option) => {\n const isSelected = selected.includes(option.value)\n return (\n <label\n key={option.value}\n className={cn(\n \"flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors\",\n \"hover:bg-accent hover:text-accent-foreground\",\n isSelected && \"bg-accent/50\"\n )}\n >\n <Checkbox\n checked={isSelected}\n onCheckedChange={() => handleToggle(option.value)}\n />\n {option.icon && (\n <span className=\"shrink-0 text-muted-foreground\">\n {option.icon}\n </span>\n )}\n <span className=\"flex-1 truncate\">{option.label}</span>\n {showCounts && option.count !== undefined && (\n <span className=\"text-xs text-muted-foreground\">\n {option.count}\n </span>\n )}\n </label>\n )\n })}\n </div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// DATE RANGE PICKER\n// Calendar-based date range picker with presets\n//\n// Usage:\n// <DateRangePicker\n// value={{ from: new Date(), to: new Date() }}\n// onChange={(range) => setDateRange(range)}\n// />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { format, subDays, subMonths, startOfMonth, endOfMonth } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\nimport type { DateRange } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface DatePreset {\n label: string\n getValue: () => DateRange\n}\n\ninterface DateRangePickerProps {\n value?: DateRange\n onChange?: (range: DateRange | undefined) => void\n presets?: DatePreset[]\n showPresets?: boolean\n placeholder?: string\n align?: \"start\" | \"center\" | \"end\"\n /** Use compact date format (shorter, no year unless different years) */\n compact?: boolean\n className?: string\n}\n\n// ----------------------------------------------------------------------------\n// Default Presets\n// ----------------------------------------------------------------------------\n\nconst defaultPresets: DatePreset[] = [\n {\n label: \"Today\",\n getValue: () => {\n const today = new Date()\n return { from: today, to: today }\n },\n },\n {\n label: \"Yesterday\",\n getValue: () => {\n const yesterday = subDays(new Date(), 1)\n return { from: yesterday, to: yesterday }\n },\n },\n {\n label: \"Last 7 days\",\n getValue: () => ({\n from: subDays(new Date(), 6),\n to: new Date(),\n }),\n },\n {\n label: \"Last 14 days\",\n getValue: () => ({\n from: subDays(new Date(), 13),\n to: new Date(),\n }),\n },\n {\n label: \"Last 30 days\",\n getValue: () => ({\n from: subDays(new Date(), 29),\n to: new Date(),\n }),\n },\n {\n label: \"This month\",\n getValue: () => ({\n from: startOfMonth(new Date()),\n to: new Date(),\n }),\n },\n {\n label: \"Last month\",\n getValue: () => {\n const lastMonth = subMonths(new Date(), 1)\n return {\n from: startOfMonth(lastMonth),\n to: endOfMonth(lastMonth),\n }\n },\n },\n]\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function DateRangePicker({\n value,\n onChange,\n presets = defaultPresets,\n showPresets = true,\n placeholder = \"Pick a date range\",\n align = \"start\",\n compact = false,\n className,\n}: DateRangePickerProps) {\n const [open, setOpen] = React.useState(false)\n\n const formatDateRange = (range: DateRange | undefined) => {\n if (!range?.from) return placeholder\n\n // Single date\n if (!range.to || range.from.toDateString() === range.to.toDateString()) {\n return compact\n ? format(range.from, \"MMM d\")\n : format(range.from, \"MMM d, yyyy\")\n }\n\n // Date range\n if (compact) {\n // Same year - omit year entirely\n if (range.from.getFullYear() === range.to.getFullYear()) {\n return `${format(range.from, \"MMM d\")} - ${format(range.to, \"MMM d\")}`\n }\n // Different years - show abbreviated year\n return `${format(range.from, \"MMM d, ''yy\")} - ${format(range.to, \"MMM d, ''yy\")}`\n }\n\n return `${format(range.from, \"MMM d, yyyy\")} - ${format(range.to, \"MMM d, yyyy\")}`\n }\n\n const handlePresetClick = (preset: DatePreset) => {\n onChange?.(preset.getValue())\n setOpen(false)\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"h-9 justify-start gap-2 text-left font-normal min-w-0\",\n !value && \"text-muted-foreground\",\n className\n )}\n >\n <CalendarIcon className=\"h-4 w-4 shrink-0\" />\n <span className=\"truncate\">{formatDateRange(value)}</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align={align}>\n <div className=\"flex\">\n {showPresets && (\n <div className=\"border-r py-2 px-1 w-[140px]\">\n {presets.map((preset) => (\n <Button\n key={preset.label}\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start text-sm h-8 px-3\"\n onClick={() => handlePresetClick(preset)}\n >\n {preset.label}\n </Button>\n ))}\n </div>\n )}\n <div className=\"p-2\">\n <Calendar\n mode=\"range\"\n defaultMonth={value?.from}\n selected={value}\n onSelect={onChange}\n numberOfMonths={1}\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// CATEGORY FILTER CHIPS\n// Horizontal scrollable filter chips with counts for memory categories\n// ============================================================================\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { ScrollArea, ScrollBar } from \"@/components/ui/scroll-area\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface FilterChip {\n id: string\n emoji?: string\n label: string\n count: number\n}\n\ninterface CategoryFilterChipsProps {\n chips: FilterChip[]\n value: string | null\n onChange: (id: string | null) => void\n showAllOption?: boolean\n allLabel?: string\n className?: string\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function CategoryFilterChips({\n chips,\n value,\n onChange,\n showAllOption = true,\n allLabel = \"All\",\n className,\n}: CategoryFilterChipsProps) {\n const totalCount = chips.reduce((sum, chip) => sum + chip.count, 0)\n\n return (\n <ScrollArea className={cn(\"w-full whitespace-nowrap\", className)}>\n <div className=\"flex items-center gap-2 pb-2\">\n {showAllOption && (\n <button\n onClick={() => onChange(null)}\n className=\"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-full\"\n >\n <Badge\n variant={value === null ? \"filled\" : \"soft\"}\n color={value === null ? \"primary\" : \"default\"}\n size=\"lg\"\n className=\"cursor-pointer hover:opacity-80 transition-opacity\"\n >\n {allLabel}: {totalCount}\n </Badge>\n </button>\n )}\n {chips.map((chip) => (\n <button\n key={chip.id}\n onClick={() => onChange(chip.id)}\n className=\"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-full\"\n >\n <Badge\n variant={value === chip.id ? \"filled\" : \"soft\"}\n color={value === chip.id ? \"primary\" : \"default\"}\n size=\"lg\"\n className=\"cursor-pointer hover:opacity-80 transition-opacity\"\n >\n {chip.emoji && <span>{chip.emoji}</span>}\n {chip.label}: {chip.count}\n </Badge>\n </button>\n ))}\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// INSIGHT REPORT\n// Displays a formatted insight report with recommendations and trends\n// ============================================================================\n\nimport * as React from \"react\"\nimport { Download, TrendingUp, TrendingDown, Minus } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface Recommendation {\n id: string\n text: string\n trend: \"up\" | \"down\" | \"neutral\"\n}\n\nexport interface TrendSection {\n id: string\n title: string\n content: string\n bullets?: string[]\n}\n\nexport interface InsightReportData {\n id: string\n dateRange: {\n from: Date\n to: Date\n }\n memoriesAnalyzed: number\n recommendations: Recommendation[]\n overview: string\n trends: TrendSection[]\n generatedAt: Date\n}\n\ninterface InsightReportProps {\n report: InsightReportData\n onDownload?: () => void\n className?: string\n}\n\n// ----------------------------------------------------------------------------\n// Helper Components\n// ----------------------------------------------------------------------------\n\nfunction TrendIcon({ trend }: { trend: \"up\" | \"down\" | \"neutral\" }) {\n const iconClass = \"h-4 w-4\"\n switch (trend) {\n case \"up\":\n return <TrendingUp className={cn(iconClass, \"text-siena-sage\")} />\n case \"down\":\n return <TrendingDown className={cn(iconClass, \"text-destructive\")} />\n default:\n return <Minus className={cn(iconClass, \"text-muted-foreground\")} />\n }\n}\n\nfunction formatDateRange(from: Date, to: Date): string {\n const formatDate = (d: Date) =>\n d.toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\", year: \"numeric\" })\n return `${formatDate(from)} - ${formatDate(to)}`\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function InsightReport({ report, onDownload, className }: InsightReportProps) {\n const handleDownload = () => {\n if (onDownload) {\n onDownload()\n } else {\n // Default download behavior - create text file\n const content = `\nInsight Report\n${formatDateRange(report.dateRange.from, report.dateRange.to)}\n${report.memoriesAnalyzed} memories analyzed\n\nOVERVIEW\n${report.overview}\n\nKEY RECOMMENDATIONS\n${report.recommendations.map((r, i) => `${i + 1}. ${r.text}`).join(\"\\n\")}\n\nTRENDS\n${report.trends.map((t) => `\n${t.title}\n${t.content}\n${t.bullets ? t.bullets.map((b) => `• ${b}`).join(\"\\n\") : \"\"}\n`).join(\"\\n\")}\n `.trim()\n\n const blob = new Blob([content], { type: \"text/plain\" })\n const url = URL.createObjectURL(blob)\n const a = document.createElement(\"a\")\n a.href = url\n a.download = `insight-report-${report.id}.txt`\n a.click()\n URL.revokeObjectURL(url)\n }\n }\n\n return (\n <Card className={cn(\"\", className)}>\n <CardHeader className=\"pb-4\">\n <div className=\"flex items-start justify-between\">\n <div className=\"space-y-1\">\n <h3 className=\"font-semibold text-lg\">Insight Report</h3>\n <p className=\"text-sm text-muted-foreground\">\n {formatDateRange(report.dateRange.from, report.dateRange.to)}\n </p>\n </div>\n <Button variant=\"outline\" size=\"sm\" onClick={handleDownload}>\n <Download className=\"h-4 w-4 mr-2\" />\n Download\n </Button>\n </div>\n <Badge variant=\"soft\" color=\"primary\" className=\"w-fit mt-2\">\n {report.memoriesAnalyzed} memories analyzed\n </Badge>\n </CardHeader>\n <CardContent className=\"space-y-6\">\n {/* Key Recommendations */}\n <div className=\"space-y-3\">\n <h4 className=\"text-sm font-semibold text-muted-foreground uppercase tracking-wide\">\n Key Recommendations\n </h4>\n <ul className=\"space-y-3\">\n {report.recommendations.map((rec, index) => (\n <li key={rec.id} className=\"flex items-start gap-3\">\n <div className=\"flex-shrink-0 mt-0.5\">\n <TrendIcon trend={rec.trend} />\n </div>\n <span className=\"text-sm\">{rec.text}</span>\n </li>\n ))}\n </ul>\n </div>\n\n {/* Overview */}\n <div className=\"space-y-2\">\n <h4 className=\"text-sm font-semibold text-muted-foreground uppercase tracking-wide\">\n Overview\n </h4>\n <p className=\"text-sm text-muted-foreground leading-relaxed\">{report.overview}</p>\n </div>\n\n {/* Trends (Expandable) */}\n {report.trends.length > 0 && (\n <div className=\"space-y-2\">\n <h4 className=\"text-sm font-semibold text-muted-foreground uppercase tracking-wide\">\n Trends\n </h4>\n <Accordion type=\"multiple\" className=\"w-full\">\n {report.trends.map((trend) => (\n <AccordionItem key={trend.id} value={trend.id}>\n <AccordionTrigger className=\"text-left\">\n {trend.title}\n </AccordionTrigger>\n <AccordionContent>\n <div className=\"space-y-3\">\n <p className=\"text-sm text-muted-foreground leading-relaxed\">\n {trend.content}\n </p>\n {trend.bullets && trend.bullets.length > 0 && (\n <ul className=\"space-y-2 pl-4\">\n {trend.bullets.map((bullet, idx) => (\n <li\n key={idx}\n className=\"text-sm text-muted-foreground list-disc\"\n >\n {bullet}\n </li>\n ))}\n </ul>\n )}\n </div>\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n </div>\n )}\n </CardContent>\n </Card>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// REPORT CARD\n// Card component for displaying report summaries with clickable tags\n// Matches the original Siena design - one report per row, clean layout\n// ============================================================================\n\nimport * as React from \"react\"\nimport { Download, Eye } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface Report {\n id: string\n dateRange: {\n from: Date\n to: Date\n }\n generatedAt: Date\n memoriesAnalyzed: number\n tags: string[]\n}\n\ninterface ReportCardProps {\n report: Report\n onView?: (report: Report) => void\n onDownload?: (report: Report) => void\n onTagClick?: (tag: string) => void\n className?: string\n}\n\n// ----------------------------------------------------------------------------\n// Helper Functions\n// ----------------------------------------------------------------------------\n\nfunction formatDateRange(from: Date, to: Date): string {\n const formatDate = (d: Date) =>\n d.toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\", year: \"numeric\" })\n return `${formatDate(from)} - ${formatDate(to)}`\n}\n\nfunction formatGeneratedDate(date: Date): string {\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n })\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function ReportCard({\n report,\n onView,\n onDownload,\n onTagClick,\n className,\n}: ReportCardProps) {\n return (\n <Card className={cn(\"hover:shadow-medium transition-shadow\", className)}>\n <CardContent className=\"px-4 py-3\">\n {/* Header Row: Title + Actions */}\n <div className=\"flex items-start justify-between gap-4 mb-2\">\n <div>\n <h3 className=\"font-semibold text-base\">\n {formatDateRange(report.dateRange.from, report.dateRange.to)}\n </h3>\n <p className=\"text-sm text-muted-foreground mt-0.5\">\n Generated on {formatGeneratedDate(report.generatedAt)} • {report.memoriesAnalyzed} memories analyzed\n </p>\n </div>\n <div className=\"flex items-center gap-2 shrink-0\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onView?.(report)}\n >\n <Eye className=\"h-4 w-4\" />\n View\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onDownload?.(report)}\n >\n <Download className=\"h-4 w-4\" />\n Download\n </Button>\n </div>\n </div>\n\n {/* Tags - All use soft+primary (coral) style */}\n <div className=\"flex flex-wrap gap-1.5\">\n {report.tags.map((tag, index) => (\n <Badge\n key={index}\n variant=\"soft\"\n color=\"primary\"\n size=\"sm\"\n className={cn(\n onTagClick && \"cursor-pointer hover:bg-primary/25 transition-colors\"\n )}\n onClick={() => onTagClick?.(tag)}\n >\n {tag}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// WORKSPACE SELECTOR\n// Dropdown selector for switching between workspaces/organizations\n//\n// Usage:\n// <WorkspaceSelector\n// workspaces={[{ id: \"1\", name: \"Acme Inc\", logo: \"A\" }]}\n// activeWorkspace=\"1\"\n// onWorkspaceChange={(id) => console.log(id)}\n// />\n// ============================================================================\n\nimport * as React from \"react\"\nimport { Check, ChevronsUpDown, Plus, Search } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from \"@/components/ui/sidebar\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface Workspace {\n id: string\n name: string\n logo?: string | React.ReactNode\n plan?: string\n}\n\ninterface WorkspaceSelectorProps {\n workspaces: Workspace[]\n activeWorkspace: string\n onWorkspaceChange?: (workspaceId: string) => void\n onCreateWorkspace?: () => void\n showSearch?: boolean\n searchPlaceholder?: string\n className?: string\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function WorkspaceSelector({\n workspaces,\n activeWorkspace,\n onWorkspaceChange,\n onCreateWorkspace,\n showSearch = true,\n searchPlaceholder = \"Search workspaces...\",\n className,\n}: WorkspaceSelectorProps) {\n const { isMobile } = useSidebar()\n const [searchQuery, setSearchQuery] = React.useState(\"\")\n\n const currentWorkspace = workspaces.find((w) => w.id === activeWorkspace)\n\n const filteredWorkspaces = workspaces.filter((workspace) =>\n workspace.name.toLowerCase().includes(searchQuery.toLowerCase())\n )\n\n const renderLogo = (workspace: Workspace) => {\n if (typeof workspace.logo === \"string\") {\n return (\n <span className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-primary text-[10px] font-semibold text-primary-foreground\">\n {workspace.logo}\n </span>\n )\n }\n if (workspace.logo) {\n return workspace.logo\n }\n return (\n <span className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-primary text-[10px] font-semibold text-primary-foreground\">\n {workspace.name.charAt(0).toUpperCase()}\n </span>\n )\n }\n\n return (\n <SidebarMenu className={className}>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n {currentWorkspace && renderLogo(currentWorkspace)}\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">\n {currentWorkspace?.name ?? \"Select workspace\"}\n </span>\n {currentWorkspace?.plan && (\n <span className=\"truncate text-xs text-muted-foreground\">\n {currentWorkspace.plan}\n </span>\n )}\n </div>\n <ChevronsUpDown className=\"ml-auto h-4 w-4 shrink-0 opacity-50\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56\"\n align=\"start\"\n side={isMobile ? \"bottom\" : \"right\"}\n sideOffset={4}\n >\n {showSearch && (\n <>\n <div className=\"p-2\">\n <div className=\"relative\">\n <Search className=\"absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder={searchPlaceholder}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"h-8 pl-8\"\n />\n </div>\n </div>\n <DropdownMenuSeparator />\n </>\n )}\n <div className=\"max-h-64 overflow-auto\">\n {filteredWorkspaces.map((workspace) => (\n <DropdownMenuItem\n key={workspace.id}\n onClick={() => onWorkspaceChange?.(workspace.id)}\n className=\"gap-2 p-2\"\n >\n {renderLogo(workspace)}\n <div className=\"flex-1 truncate\">{workspace.name}</div>\n {workspace.id === activeWorkspace && (\n <Check className=\"h-4 w-4 shrink-0\" />\n )}\n </DropdownMenuItem>\n ))}\n {filteredWorkspaces.length === 0 && (\n <div className=\"p-2 text-center text-sm text-muted-foreground\">\n No workspaces found\n </div>\n )}\n </div>\n {onCreateWorkspace && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onCreateWorkspace} className=\"gap-2 p-2\">\n <div className=\"flex h-6 w-6 items-center justify-center rounded-md border border-dashed\">\n <Plus className=\"h-4 w-4\" />\n </div>\n <span>Add workspace</span>\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// NAV MAIN\n// Main navigation section with collapsible groups and items\n//\n// Usage:\n// <NavMain\n// items={[\n// {\n// title: \"Dashboard\",\n// icon: Home,\n// url: \"/dashboard\",\n// isActive: true,\n// },\n// {\n// title: \"Inbox\",\n// icon: Inbox,\n// badge: \"12\",\n// items: [\n// { title: \"Support\", url: \"/inbox/support\" },\n// { title: \"Social\", url: \"/inbox/social\" },\n// ],\n// },\n// ]}\n// />\n// ============================================================================\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport { ChevronRight, type LucideIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\"\nimport {\n SidebarGroup,\n SidebarGroupLabel,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n} from \"@/components/ui/sidebar\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface NavSubItem {\n title: string\n url: string\n isActive?: boolean\n}\n\nexport interface NavItem {\n title: string\n url?: string\n icon?: LucideIcon\n isActive?: boolean\n badge?: string | number\n badgeVariant?: \"filled\" | \"soft\" | \"outline\" | \"ghost\"\n badgeColor?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"error\"\n items?: NavSubItem[]\n}\n\ninterface NavMainProps {\n items: NavItem[]\n label?: string\n className?: string\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function NavMain({ items, label, className }: NavMainProps) {\n return (\n <SidebarGroup className={className}>\n {label && <SidebarGroupLabel>{label}</SidebarGroupLabel>}\n <SidebarMenu>\n {items.map((item) =>\n item.items && item.items.length > 0 ? (\n <NavCollapsible key={item.title} item={item} />\n ) : (\n <NavLink key={item.title} item={item} />\n )\n )}\n </SidebarMenu>\n </SidebarGroup>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Sub-components\n// ----------------------------------------------------------------------------\n\nfunction NavLink({ item }: { item: NavItem }) {\n return (\n <SidebarMenuItem>\n <SidebarMenuButton\n asChild\n isActive={item.isActive}\n tooltip={item.title}\n >\n <Link href={item.url ?? \"#\"}>\n {item.icon && <item.icon className=\"h-4 w-4\" />}\n <span>{item.title}</span>\n {item.badge !== undefined && (\n <Badge\n variant={item.badgeVariant ?? \"soft\"}\n color={item.badgeColor ?? \"default\"}\n size=\"sm\"\n className=\"ml-auto min-w-5 justify-center\"\n >\n {item.badge}\n </Badge>\n )}\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n )\n}\n\nfunction NavCollapsible({ item }: { item: NavItem }) {\n const hasActiveChild = item.items?.some((subItem) => subItem.isActive)\n const [isOpen, setIsOpen] = React.useState(item.isActive || hasActiveChild)\n\n return (\n <Collapsible\n open={isOpen}\n onOpenChange={setIsOpen}\n className=\"group/collapsible\"\n >\n <SidebarMenuItem>\n <CollapsibleTrigger asChild>\n <SidebarMenuButton\n tooltip={item.title}\n isActive={item.isActive}\n >\n {item.icon && <item.icon className=\"h-4 w-4\" />}\n <span>{item.title}</span>\n {item.badge !== undefined && (\n <Badge\n variant={item.badgeVariant ?? \"soft\"}\n color={item.badgeColor ?? \"default\"}\n size=\"sm\"\n className=\"ml-auto min-w-5 justify-center\"\n >\n {item.badge}\n </Badge>\n )}\n <ChevronRight\n className={cn(\n \"ml-auto h-4 w-4 shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-90\"\n )}\n />\n </SidebarMenuButton>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <SidebarMenuSub>\n {item.items?.map((subItem) => (\n <SidebarMenuSubItem key={subItem.title}>\n <SidebarMenuSubButton\n asChild\n isActive={subItem.isActive}\n >\n <Link href={subItem.url}>\n <span>{subItem.title}</span>\n </Link>\n </SidebarMenuSubButton>\n </SidebarMenuSubItem>\n ))}\n </SidebarMenuSub>\n </CollapsibleContent>\n </SidebarMenuItem>\n </Collapsible>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// USER MENU\n// User avatar dropdown with profile and settings options\n//\n// Usage:\n// <UserMenu\n// user={{\n// name: \"John Doe\",\n// email: \"john@example.com\",\n// avatar: \"/avatars/john.jpg\",\n// }}\n// onSignOut={() => signOut()}\n// />\n// ============================================================================\n\nimport * as React from \"react\"\nimport {\n ChevronsUpDown,\n LogOut,\n Settings,\n User,\n CreditCard,\n Bell,\n} from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from \"@/components/ui/sidebar\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface UserData {\n name: string\n email: string\n avatar?: string\n}\n\nexport interface UserMenuItem {\n label: string\n icon?: React.ElementType\n onClick?: () => void\n href?: string\n}\n\ninterface UserMenuProps {\n user: UserData\n menuItems?: UserMenuItem[]\n onSignOut?: () => void\n className?: string\n}\n\n// ----------------------------------------------------------------------------\n// Default Menu Items\n// ----------------------------------------------------------------------------\n\nconst defaultMenuItems: UserMenuItem[] = [\n { label: \"Profile\", icon: User },\n { label: \"Settings\", icon: Settings },\n { label: \"Billing\", icon: CreditCard },\n { label: \"Notifications\", icon: Bell },\n]\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function UserMenu({\n user,\n menuItems = defaultMenuItems,\n onSignOut,\n className,\n}: UserMenuProps) {\n const { isMobile } = useSidebar()\n\n const getInitials = (name: string) => {\n return name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n }\n\n return (\n <SidebarMenu className={className}>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">\n {getInitials(user.name)}\n </AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{user.name}</span>\n <span className=\"truncate text-xs text-muted-foreground\">\n {user.email}\n </span>\n </div>\n <ChevronsUpDown className=\"ml-auto h-4 w-4 shrink-0 opacity-50\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56\"\n align=\"end\"\n side={isMobile ? \"bottom\" : \"right\"}\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">\n {getInitials(user.name)}\n </AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{user.name}</span>\n <span className=\"truncate text-xs text-muted-foreground\">\n {user.email}\n </span>\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n {menuItems.map((item) => (\n <DropdownMenuItem\n key={item.label}\n onClick={item.onClick}\n className=\"gap-2\"\n >\n {item.icon && <item.icon className=\"h-4 w-4\" />}\n <span>{item.label}</span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuGroup>\n {onSignOut && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onSignOut} className=\"gap-2\">\n <LogOut className=\"h-4 w-4\" />\n <span>Sign out</span>\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// CHANGELOG SHEET\n// Minimalist side drawer showing recent updates (Linear-style)\n//\n// Usage:\n// <ChangelogSheet\n// releases={releases}\n// open={open}\n// onOpenChange={setOpen}\n// />\n// ============================================================================\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport { ChevronRight, ExternalLink } from \"lucide-react\"\nimport {\n Sheet,\n SheetContent,\n SheetHeader,\n SheetBody,\n SheetFooter,\n} from \"@/components/ui/sheet\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { cn } from \"@/lib/utils\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport type ProductTag =\n | \"support\"\n | \"shopping\"\n | \"social\"\n | \"reviews\"\n | \"platform\"\n | \"intelligence\"\n\nexport interface ChangeItem {\n text: string\n product?: ProductTag\n}\n\nexport interface ReleaseHighlight {\n title: string\n description: string\n image?: string\n}\n\nexport interface Release {\n date: string\n /** Theme/title for this release (e.g., \"Policies Engine\"). Falls back to highlight.title if not provided. */\n title?: string\n highlight?: ReleaseHighlight\n features?: ChangeItem[]\n improvements?: ChangeItem[]\n fixes?: ChangeItem[]\n}\n\ninterface ChangelogSheetProps {\n releases: Release[]\n open: boolean\n onOpenChange: (open: boolean) => void\n viewAllHref?: string\n /** Number of releases to show (default: 2) */\n maxReleases?: number\n}\n\n// ----------------------------------------------------------------------------\n// Product Badge Config (SHARED - exported for /whats-new page)\n// ----------------------------------------------------------------------------\n\n// Product config with dot colors (CSS variables for consistency)\nexport const productConfig: Record<ProductTag, { label: string; dotColor: string }> = {\n support: { label: \"Support\", dotColor: \"bg-primary\" },\n shopping: { label: \"Shopping\", dotColor: \"bg-[var(--siena-sage)]\" },\n social: { label: \"Social\", dotColor: \"bg-[var(--siena-ochre)]\" },\n reviews: { label: \"Reviews\", dotColor: \"bg-muted-foreground\" },\n platform: { label: \"Platform\", dotColor: \"bg-violet-500\" },\n intelligence: { label: \"Intelligence\", dotColor: \"bg-primary\" },\n}\n\n// ----------------------------------------------------------------------------\n// Shared Utilities (exported for /whats-new page)\n// ----------------------------------------------------------------------------\n\nexport function formatShortDate(dateStr: string): string {\n const parts = dateStr.split(\" \")\n if (parts.length >= 2) {\n const month = parts[0].slice(0, 3)\n const day = parts[1].replace(\",\", \"\")\n return `${month} ${day}`\n }\n return dateStr\n}\n\nexport function getReleaseTitle(release: Release): string {\n return release.title || release.highlight?.title || \"Updates\"\n}\n\n// ----------------------------------------------------------------------------\n// Product Badge Component (SHARED - for consistent badge rendering)\n// ----------------------------------------------------------------------------\n\nexport function ProductBadge({ product }: { product: ProductTag }) {\n const config = productConfig[product]\n return (\n <Badge\n variant=\"outline\"\n size=\"sm\"\n className=\"mr-1.5 text-[10px] px-1.5 py-0 font-normal\"\n >\n <span className={cn(\"h-1.5 w-1.5 rounded-full\", config.dotColor)} />\n {config.label}\n </Badge>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function ChangelogSheet({\n releases,\n open,\n onOpenChange,\n viewAllHref = \"/whats-new\",\n maxReleases = 2,\n}: ChangelogSheetProps) {\n const visibleReleases = releases.slice(0, maxReleases)\n const hasMore = releases.length > maxReleases\n\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent className=\"sm:max-w-lg\">\n {/* Header - matches nav height (h-14) */}\n <SheetHeader className=\"h-14 flex-row items-center justify-start py-0 gap-0\">\n <Link\n href={viewAllHref}\n className=\"flex items-center gap-1.5 text-lg font-semibold hover:text-primary transition-colors\"\n >\n Changelog\n <ExternalLink className=\"h-4 w-4\" />\n </Link>\n </SheetHeader>\n\n <SheetBody className=\"space-y-0\">\n {visibleReleases.map((release, index) => (\n <React.Fragment key={release.date + index}>\n {index > 0 && <Separator className=\"my-5\" />}\n <ReleaseSection release={release} />\n </React.Fragment>\n ))}\n </SheetBody>\n\n {/* View all footer */}\n {hasMore && (\n <SheetFooter className=\"border-t-0 pt-0\">\n <Button variant=\"ghost\" size=\"sm\" asChild className=\"w-full text-muted-foreground\">\n <Link href={viewAllHref}>\n View all releases\n </Link>\n </Button>\n </SheetFooter>\n )}\n </SheetContent>\n </Sheet>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Release Section\n// ----------------------------------------------------------------------------\n\nfunction ReleaseSection({ release }: { release: Release }) {\n const hasContent =\n release.highlight ||\n (release.features && release.features.length > 0) ||\n (release.improvements && release.improvements.length > 0) ||\n (release.fixes && release.fixes.length > 0)\n\n if (!hasContent) return null\n\n const title = getReleaseTitle(release)\n\n return (\n <div>\n {/* Date · Title header */}\n <div className=\"flex items-center gap-2 text-xs mb-2\">\n <span className=\"text-muted-foreground\">{formatShortDate(release.date)}</span>\n <span className=\"text-muted-foreground\">·</span>\n <span className=\"font-medium text-foreground\">{title}</span>\n </div>\n\n {/* Highlight description (if exists) */}\n {release.highlight?.description && (\n <p className=\"text-xs text-muted-foreground leading-relaxed mb-3\">\n {release.highlight.description}\n </p>\n )}\n\n {/* Highlight image */}\n {release.highlight?.image && (\n <div className=\"mb-3 rounded-lg overflow-hidden border\">\n <img\n src={release.highlight.image}\n alt={title}\n className=\"w-full h-auto\"\n />\n </div>\n )}\n\n {/* Features */}\n {release.features && release.features.length > 0 && (\n <ChangeSection title=\"Features\" items={release.features} />\n )}\n\n {/* Improvements */}\n {release.improvements && release.improvements.length > 0 && (\n <ChangeSection\n title=\"Improvements\"\n items={release.improvements}\n defaultCollapsed={!!release.features}\n />\n )}\n\n {/* Fixes */}\n {release.fixes && release.fixes.length > 0 && (\n <ChangeSection\n title=\"Fixes\"\n items={release.fixes}\n defaultCollapsed={!!(release.features || release.improvements)}\n />\n )}\n </div>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Change Section (collapsible, minimal)\n// ----------------------------------------------------------------------------\n\nfunction ChangeSection({\n title,\n items,\n defaultCollapsed = false,\n}: {\n title: string\n items: ChangeItem[]\n defaultCollapsed?: boolean\n}) {\n const [collapsed, setCollapsed] = React.useState(defaultCollapsed)\n\n return (\n <div className=\"mb-2\">\n <button\n onClick={() => setCollapsed(!collapsed)}\n className=\"flex items-center gap-1 text-xs font-medium mb-1.5 hover:text-primary transition-colors w-full text-left\"\n >\n <ChevronRight\n className={cn(\n \"h-3 w-3 text-muted-foreground transition-transform\",\n !collapsed && \"rotate-90\"\n )}\n />\n <span>{title}</span>\n </button>\n\n {!collapsed && (\n <ul className=\"space-y-1.5 pl-4\">\n {items.map((item, index) => (\n <li key={index} className=\"text-xs text-muted-foreground leading-relaxed\">\n {item.product && <ProductBadge product={item.product} />}\n <span>{item.text}</span>\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Sample Data (realistic changelog entries)\n// ----------------------------------------------------------------------------\n\nexport const sampleReleases: Release[] = [\n {\n date: \"January 15, 2026\",\n title: \"Policies Engine\",\n highlight: {\n title: \"Policies Engine\",\n description:\n \"Define rules and guardrails that govern AI behavior. Set up escalation triggers, compliance requirements, and custom response policies.\",\n },\n features: [\n { text: \"Policy editor with conditions and actions\", product: \"platform\" },\n { text: \"Policy conflict detection and resolution\", product: \"platform\" },\n { text: \"Bulk policy import/export via CSV\", product: \"platform\" },\n { text: \"Policy templates for common use cases\", product: \"platform\" },\n { text: \"Policy version history and rollback\", product: \"platform\" },\n { text: \"Real-time policy simulation testing\", product: \"platform\" },\n ],\n improvements: [\n { text: \"Faster conversation loading in Inbox (2x improvement)\", product: \"support\" },\n { text: \"Improved sentiment analysis accuracy to 94%\", product: \"intelligence\" },\n { text: \"Reduced memory footprint for large conversations\", product: \"platform\" },\n { text: \"Better handling of multi-language conversations\", product: \"support\" },\n { text: \"Smoother animations in conversation view\", product: \"platform\" },\n { text: \"Enhanced keyboard shortcuts throughout the app\", product: \"platform\" },\n { text: \"Faster search indexing for customer data\", product: \"intelligence\" },\n ],\n fixes: [\n { text: \"Fixed timezone display in scheduled messages\", product: \"support\" },\n { text: \"Resolved memory sync issues with Shopify\", product: \"platform\" },\n { text: \"Fixed duplicate notifications on reconnect\", product: \"platform\" },\n { text: \"Corrected attachment preview for PDFs\", product: \"support\" },\n { text: \"Fixed avatar not updating after profile change\", product: \"platform\" },\n { text: \"Resolved search filter not persisting on refresh\", product: \"support\" },\n ],\n },\n {\n date: \"January 8, 2026\",\n title: \"Social Automations\",\n features: [\n { text: \"Shopping cart abandonment automation\", product: \"shopping\" },\n { text: \"Instagram DM auto-responses\", product: \"social\" },\n { text: \"TikTok comment moderation\", product: \"social\" },\n { text: \"Twitter/X mention monitoring\", product: \"social\" },\n { text: \"Cross-platform social inbox\", product: \"social\" },\n ],\n improvements: [\n { text: \"Better product recommendation accuracy (+15%)\", product: \"shopping\" },\n { text: \"Reduced response latency by 40%\", product: \"support\" },\n { text: \"Improved Instagram story mention detection\", product: \"social\" },\n { text: \"Enhanced product catalog sync from Shopify\", product: \"shopping\" },\n { text: \"Smarter conversation routing based on intent\", product: \"support\" },\n { text: \"Better handling of emoji-only messages\", product: \"social\" },\n { text: \"Improved image recognition for product matching\", product: \"shopping\" },\n { text: \"Faster social media webhook processing\", product: \"social\" },\n ],\n fixes: [\n { text: \"Fixed review sentiment misclassification\", product: \"reviews\" },\n { text: \"Resolved Facebook Messenger connection drops\", product: \"social\" },\n { text: \"Fixed order status not updating in real-time\", product: \"shopping\" },\n { text: \"Corrected Instagram post attribution\", product: \"social\" },\n { text: \"Fixed WhatsApp media not displaying correctly\", product: \"social\" },\n ],\n },\n {\n date: \"January 2, 2026\",\n title: \"CX Intelligence Dashboard\",\n highlight: {\n title: \"CX Intelligence Dashboard\",\n description:\n \"Get actionable insights from your customer interactions with the new CX Intelligence dashboard. Analyze trends, sentiment patterns, and agent performance.\",\n },\n improvements: [\n { text: \"Enhanced reporting filters with date ranges\", product: \"intelligence\" },\n { text: \"Export reports to PDF and CSV\", product: \"platform\" },\n { text: \"Real-time dashboard updates\", product: \"intelligence\" },\n { text: \"Custom metric definitions\", product: \"intelligence\" },\n ],\n fixes: [\n { text: \"Fixed chart rendering on Safari\", product: \"platform\" },\n { text: \"Corrected timezone in report exports\", product: \"intelligence\" },\n ],\n },\n {\n date: \"December 20, 2025\",\n title: \"Memory System\",\n features: [\n { text: \"Customer memory categories\", product: \"platform\" },\n { text: \"Memory search and filtering\", product: \"platform\" },\n { text: \"Automatic memory extraction from conversations\", product: \"platform\" },\n ],\n improvements: [\n { text: \"Memory sync performance improved 3x\", product: \"platform\" },\n { text: \"Better deduplication of similar memories\", product: \"platform\" },\n { text: \"Enhanced privacy controls for sensitive data\", product: \"platform\" },\n ],\n fixes: [\n { text: \"Fixed memory not persisting after browser refresh\", product: \"platform\" },\n ],\n },\n {\n date: \"December 15, 2025\",\n title: \"Shopping Agent Launch\",\n highlight: {\n title: \"Shopping Agent\",\n description:\n \"Introducing the Shopping Agent - your AI-powered shopping assistant that helps customers find products, track orders, and complete purchases.\",\n },\n features: [\n { text: \"Product recommendations based on browsing history\", product: \"shopping\" },\n { text: \"Order tracking integration with major carriers\", product: \"shopping\" },\n { text: \"Abandoned cart recovery with personalized messaging\", product: \"shopping\" },\n { text: \"Size and fit recommendations\", product: \"shopping\" },\n ],\n improvements: [\n { text: \"Faster Shopify product sync\", product: \"shopping\" },\n { text: \"Better handling of out-of-stock items\", product: \"shopping\" },\n ],\n fixes: [\n { text: \"Fixed price formatting for international currencies\", product: \"shopping\" },\n { text: \"Resolved product image loading issues\", product: \"shopping\" },\n ],\n },\n]\n","\"use client\"\n\n// ============================================================================\n// HELP MENU\n// Popover menu for help, documentation, and support links\n// Includes built-in ChangelogSheet functionality\n//\n// Usage:\n// <HelpMenu />\n//\n// With custom items:\n// <HelpMenu\n// items={[\n// { label: \"Documentation\", icon: Book, href: \"/docs\" },\n// { label: \"Changelog\", icon: Bell }, // Auto-wired to changelog sheet\n// ]}\n// />\n// ============================================================================\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport {\n HelpCircle,\n Gift,\n Bell,\n Settings,\n ExternalLink,\n} from \"lucide-react\"\n\nimport { ThemeToggle } from \"@/components/ui/theme-toggle\"\nimport { ChangelogSheet, sampleReleases } from \"@/components/app/changelog-sheet\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from \"@/components/ui/sidebar\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface HelpMenuItem {\n label: string\n icon?: React.ElementType\n description?: string\n href?: string\n onClick?: () => void\n external?: boolean\n}\n\ninterface HelpMenuProps {\n items?: HelpMenuItem[]\n triggerLabel?: string\n className?: string\n}\n\n// ----------------------------------------------------------------------------\n// Default Menu Items\n// ----------------------------------------------------------------------------\n\nconst defaultHelpItems: HelpMenuItem[] = [\n { label: \"Refer & Earn\", icon: Gift, href: \"#\" },\n { label: \"Changelog\", icon: Bell }, // onClick wired internally to changelog sheet\n { label: \"Settings\", icon: Settings, href: \"#\" },\n { label: \"Help & Support\", icon: HelpCircle, href: \"#\" },\n]\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function HelpMenu({\n items = defaultHelpItems,\n triggerLabel = \"Help\",\n className,\n}: HelpMenuProps) {\n const { isMobile } = useSidebar()\n const [changelogOpen, setChangelogOpen] = React.useState(false)\n\n // Process items to auto-wire \"Changelog\" to changelog sheet\n const processedItems = items.map((item) => {\n if (item.label === \"Changelog\" && !item.onClick && !item.href) {\n return { ...item, onClick: () => setChangelogOpen(true) }\n }\n return item\n })\n\n return (\n <>\n <SidebarMenu className={className}>\n <SidebarMenuItem>\n <Popover>\n <PopoverTrigger asChild>\n <SidebarMenuButton\n tooltip={triggerLabel}\n className=\"data-[state=open]:bg-sidebar-accent\"\n >\n <HelpCircle className=\"h-4 w-4\" />\n <span>{triggerLabel}</span>\n </SidebarMenuButton>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-72 p-2\"\n align=\"start\"\n side={isMobile ? \"top\" : \"right\"}\n sideOffset={8}\n >\n <div className=\"flex flex-col gap-1\">\n {processedItems.map((item) => (\n <HelpMenuLink key={item.label} item={item} />\n ))}\n </div>\n {/* Theme Toggle */}\n <div className=\"border-t mt-2 pt-2 flex items-center justify-between px-2\">\n <span className=\"text-sm text-muted-foreground\">Theme</span>\n <ThemeToggle size=\"icon-sm\" variant=\"ghost\" />\n </div>\n </PopoverContent>\n </Popover>\n </SidebarMenuItem>\n </SidebarMenu>\n\n {/* Changelog Sheet - always available */}\n <ChangelogSheet\n releases={sampleReleases}\n open={changelogOpen}\n onOpenChange={setChangelogOpen}\n />\n </>\n )\n}\n\n// ----------------------------------------------------------------------------\n// Sub-components\n// ----------------------------------------------------------------------------\n\nfunction HelpMenuLink({ item }: { item: HelpMenuItem }) {\n const content = (\n <div\n className={cn(\n \"flex items-start gap-3 rounded-md p-2 transition-colors\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"cursor-pointer\"\n )}\n onClick={item.onClick}\n >\n {item.icon && (\n <item.icon className=\"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground\" />\n )}\n <div className=\"flex-1 space-y-0.5\">\n <div className=\"flex items-center gap-1 text-sm font-medium\">\n {item.label}\n {item.external && (\n <ExternalLink className=\"h-3 w-3 text-muted-foreground\" />\n )}\n </div>\n {item.description && (\n <p className=\"text-xs text-muted-foreground\">{item.description}</p>\n )}\n </div>\n </div>\n )\n\n if (item.href) {\n if (item.external) {\n return (\n <a href={item.href} target=\"_blank\" rel=\"noopener noreferrer\">\n {content}\n </a>\n )\n }\n return <Link href={item.href}>{content}</Link>\n }\n\n return content\n}\n","\"use client\"\n\n// ============================================================================\n// APP SIDEBAR\n// Complete application sidebar with workspace, navigation, help, and user menu\n//\n// Usage:\n// <AppSidebar\n// workspaces={workspaces}\n// activeWorkspace=\"workspace-1\"\n// navigation={navItems}\n// user={currentUser}\n// />\n//\n// Full example with provider:\n// <SidebarProvider>\n// <AppSidebar {...props} />\n// <SidebarInset>\n// {/* Your app content */}\n// </SidebarInset>\n// </SidebarProvider>\n// ============================================================================\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarHeader,\n SidebarRail,\n SidebarSeparator,\n} from \"@/components/ui/sidebar\"\n\nimport { WorkspaceSelector, type Workspace } from \"./workspace-selector\"\nimport { NavMain, type NavItem } from \"./nav-main\"\nimport { UserMenu, type UserData, type UserMenuItem } from \"./user-menu\"\nimport { HelpMenu, type HelpMenuItem } from \"./help-menu\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface NavSection {\n label?: string\n items: NavItem[]\n}\n\ninterface AppSidebarProps extends React.ComponentProps<typeof Sidebar> {\n // Workspace\n workspaces?: Workspace[]\n activeWorkspace?: string\n onWorkspaceChange?: (workspaceId: string) => void\n onCreateWorkspace?: () => void\n\n // Navigation - supports either flat items or sections\n navigation?: NavItem[] | NavSection[]\n\n // User\n user?: UserData\n userMenuItems?: UserMenuItem[]\n onSignOut?: () => void\n\n // Help\n helpItems?: HelpMenuItem[]\n showHelp?: boolean\n\n // Customization\n header?: React.ReactNode\n footer?: React.ReactNode\n}\n\n// ----------------------------------------------------------------------------\n// Type Guard\n// ----------------------------------------------------------------------------\n\nfunction isNavSections(nav: NavItem[] | NavSection[]): nav is NavSection[] {\n return nav.length > 0 && \"items\" in nav[0]\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function AppSidebar({\n workspaces,\n activeWorkspace,\n onWorkspaceChange,\n onCreateWorkspace,\n navigation,\n user,\n userMenuItems,\n onSignOut,\n helpItems,\n showHelp = true,\n header,\n footer,\n className,\n ...props\n}: AppSidebarProps) {\n return (\n <Sidebar collapsible=\"icon\" className={cn(className)} {...props}>\n <SidebarHeader>\n {header}\n {workspaces && activeWorkspace && (\n <WorkspaceSelector\n workspaces={workspaces}\n activeWorkspace={activeWorkspace}\n onWorkspaceChange={onWorkspaceChange}\n onCreateWorkspace={onCreateWorkspace}\n />\n )}\n </SidebarHeader>\n\n <SidebarContent>\n {navigation && (\n isNavSections(navigation) ? (\n navigation.map((section, index) => (\n <NavMain\n key={section.label ?? index}\n items={section.items}\n label={section.label}\n />\n ))\n ) : (\n <NavMain items={navigation} />\n )\n )}\n </SidebarContent>\n\n <SidebarFooter>\n {footer}\n {showHelp && <HelpMenu items={helpItems} />}\n {showHelp && user && <SidebarSeparator />}\n {user && (\n <UserMenu\n user={user}\n menuItems={userMenuItems}\n onSignOut={onSignOut}\n />\n )}\n </SidebarFooter>\n\n <SidebarRail />\n </Sidebar>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// PAGE HEADER\n// Page header with title, description, breadcrumbs, and actions\n//\n// Usage:\n// <PageHeader\n// title=\"Dashboard\"\n// description=\"Overview of your store's performance\"\n// actions={<Button>Export</Button>}\n// />\n//\n// With breadcrumbs:\n// <PageHeader\n// title=\"Order Details\"\n// breadcrumbs={[\n// { label: \"Orders\", href: \"/orders\" },\n// { label: \"#12345\" },\n// ]}\n// />\n// ============================================================================\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport { ChevronRight } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { SidebarTrigger } from \"@/components/ui/sidebar\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\nexport interface PageBreadcrumbItem {\n label: string\n href?: string\n}\n\ninterface PageHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string\n description?: string\n breadcrumbs?: PageBreadcrumbItem[]\n actions?: React.ReactNode\n showSidebarTrigger?: boolean\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function PageHeader({\n title,\n description,\n breadcrumbs,\n actions,\n showSidebarTrigger = true,\n className,\n ...props\n}: PageHeaderProps) {\n return (\n <header\n className={cn(\n \"flex shrink-0 flex-col gap-4 border-b bg-background px-4 py-4 md:px-6\",\n className\n )}\n {...props}\n >\n {/* Top row: sidebar trigger + breadcrumbs */}\n {(showSidebarTrigger || breadcrumbs) && (\n <div className=\"flex items-center gap-2\">\n {showSidebarTrigger && (\n <>\n <SidebarTrigger className=\"-ml-1\" />\n <Separator orientation=\"vertical\" className=\"mr-2 h-4\" />\n </>\n )}\n {breadcrumbs && breadcrumbs.length > 0 && (\n <nav className=\"flex items-center gap-1 text-sm text-muted-foreground\">\n {breadcrumbs.map((item, index) => (\n <React.Fragment key={item.label}>\n {index > 0 && <ChevronRight className=\"h-4 w-4\" />}\n {item.href ? (\n <Link\n href={item.href}\n className=\"hover:text-foreground transition-colors\"\n >\n {item.label}\n </Link>\n ) : (\n <span className=\"text-foreground font-medium\">\n {item.label}\n </span>\n )}\n </React.Fragment>\n ))}\n </nav>\n )}\n </div>\n )}\n\n {/* Main row: title + actions */}\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"space-y-1\">\n <h1 className=\"text-2xl font-semibold tracking-tight\">{title}</h1>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n </header>\n )\n}\n","\"use client\"\n\n// ============================================================================\n// APP LAYOUT\n// Complete application layout wrapper with sidebar, header, and content area\n//\n// Usage:\n// <AppLayout\n// sidebar={<AppSidebar {...sidebarProps} />}\n// header={<PageHeader title=\"Dashboard\" />}\n// >\n// {/* Page content */}\n// </AppLayout>\n//\n// Or with inline props:\n// <AppLayout\n// workspaces={workspaces}\n// activeWorkspace=\"1\"\n// navigation={navItems}\n// user={user}\n// pageTitle=\"Dashboard\"\n// >\n// {/* Page content */}\n// </AppLayout>\n// ============================================================================\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { SidebarInset, SidebarProvider } from \"@/components/ui/sidebar\"\n\nimport { AppSidebar, type NavSection } from \"./sidebar\"\nimport { PageHeader, type PageBreadcrumbItem } from \"./page-header\"\nimport type { Workspace, NavItem, UserData, UserMenuItem, HelpMenuItem } from \"./sidebar\"\n\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\n\ninterface AppLayoutProps {\n children: React.ReactNode\n\n // Option 1: Pass pre-built sidebar component\n sidebar?: React.ReactNode\n\n // Option 2: Pass sidebar props directly\n workspaces?: Workspace[]\n activeWorkspace?: string\n onWorkspaceChange?: (workspaceId: string) => void\n navigation?: NavItem[] | NavSection[]\n user?: UserData\n userMenuItems?: UserMenuItem[]\n onSignOut?: () => void\n helpItems?: HelpMenuItem[]\n\n // Option 1: Pass pre-built header component\n header?: React.ReactNode\n\n // Option 2: Pass header props directly\n pageTitle?: string\n pageDescription?: string\n breadcrumbs?: PageBreadcrumbItem[]\n pageActions?: React.ReactNode\n\n // Sidebar state\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n\n // Content customization\n contentClassName?: string\n className?: string\n}\n\n// ----------------------------------------------------------------------------\n// Component\n// ----------------------------------------------------------------------------\n\nexport function AppLayout({\n children,\n sidebar,\n workspaces,\n activeWorkspace,\n onWorkspaceChange,\n navigation,\n user,\n userMenuItems,\n onSignOut,\n helpItems,\n header,\n pageTitle,\n pageDescription,\n breadcrumbs,\n pageActions,\n defaultOpen = true,\n open,\n onOpenChange,\n contentClassName,\n className,\n}: AppLayoutProps) {\n // Build sidebar if not provided\n const sidebarElement = sidebar ?? (\n <AppSidebar\n workspaces={workspaces}\n activeWorkspace={activeWorkspace}\n onWorkspaceChange={onWorkspaceChange}\n navigation={navigation}\n user={user}\n userMenuItems={userMenuItems}\n onSignOut={onSignOut}\n helpItems={helpItems}\n />\n )\n\n // Build header if not provided but props exist\n const headerElement =\n header ??\n (pageTitle ? (\n <PageHeader\n title={pageTitle}\n description={pageDescription}\n breadcrumbs={breadcrumbs}\n actions={pageActions}\n />\n ) : null)\n\n return (\n <SidebarProvider\n defaultOpen={defaultOpen}\n open={open}\n onOpenChange={onOpenChange}\n className={cn(className)}\n >\n {sidebarElement}\n <SidebarInset>\n {headerElement}\n <div className={cn(\"flex-1 overflow-auto p-4 md:p-6\", contentClassName)}>\n {children}\n </div>\n </SidebarInset>\n </SidebarProvider>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Eye, EyeOff, Copy, Check, RotateCw } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\nimport { toast } from \"sonner\"\n\ninterface ApiKeyDisplayProps {\n apiKey: string\n label?: string\n description?: string\n onRegenerate?: () => void\n className?: string\n}\n\nexport function ApiKeyDisplay({\n apiKey,\n label = \"API Key\",\n description,\n onRegenerate,\n className,\n}: ApiKeyDisplayProps) {\n const [isVisible, setIsVisible] = React.useState(false)\n const [copied, setCopied] = React.useState(false)\n\n const maskedKey = apiKey.slice(0, 8) + \"•\".repeat(Math.min(24, apiKey.length - 12)) + apiKey.slice(-4)\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(apiKey)\n setCopied(true)\n toast.success(\"API key copied to clipboard\")\n setTimeout(() => setCopied(false), 2000)\n }\n\n return (\n <div className={cn(\"space-y-3\", className)}>\n {label && (\n <div className=\"space-y-1\">\n <label className=\"text-sm font-medium\">{label}</label>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n\n <div className=\"flex items-center h-10 w-full rounded-md border border-input bg-transparent pl-3 pr-1 text-sm focus-within:ring-1 focus-within:ring-ring/40 transition-shadow\">\n <span className=\"flex-1 font-mono text-sm truncate select-all\">\n {isVisible ? apiKey : maskedKey}\n </span>\n\n <div className=\"flex items-center gap-0.5 ml-2\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"text-muted-foreground hover:text-foreground\"\n onClick={() => setIsVisible(!isVisible)}\n aria-label={isVisible ? \"Hide API key\" : \"Show API key\"}\n >\n {isVisible ? (\n <EyeOff className=\"h-4 w-4\" />\n ) : (\n <Eye className=\"h-4 w-4\" />\n )}\n </Button>\n\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"text-muted-foreground hover:text-foreground\"\n onClick={handleCopy}\n aria-label=\"Copy API key\"\n >\n {copied ? (\n <Check className=\"h-4 w-4 text-[var(--siena-sage)]\" />\n ) : (\n <Copy className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n </div>\n\n {onRegenerate && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onRegenerate}\n >\n <RotateCw className=\"h-4 w-4 mr-2\" />\n Regenerate key\n </Button>\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Users, Search, MoreVertical, Mail, Trash, Shield } from \"lucide-react\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { cn } from \"@/lib/utils\"\n\nexport type MemberRole = \"owner\" | \"administrator\" | \"agent\" | \"viewer\"\nexport type MemberStatus = \"accepted\" | \"pending\" | \"registered\"\n\nexport interface TeamMember {\n id: string\n name: string\n email: string\n avatar?: string\n role: MemberRole\n status: MemberStatus\n}\n\ninterface TeamMemberListProps {\n members: TeamMember[]\n onInvite?: (email: string, role: MemberRole) => void\n onRemove?: (memberId: string) => void\n onChangeRole?: (memberId: string, role: MemberRole) => void\n onResendInvite?: (memberId: string) => void\n className?: string\n}\n\n// Color mappings for the unified Badge component\nconst roleColorMap: Record<MemberRole, \"primary\" | \"success\" | \"warning\" | \"default\"> = {\n owner: \"primary\",\n administrator: \"success\",\n agent: \"warning\",\n viewer: \"default\",\n}\n\nconst statusColorMap: Record<MemberStatus, \"success\" | \"warning\" | \"default\"> = {\n accepted: \"success\",\n pending: \"warning\",\n registered: \"default\",\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\nfunction getAvatarColor(name: string): string {\n const colors = [\n \"bg-primary/20 text-primary\",\n \"bg-siena-sage/20 text-siena-sage\",\n \"bg-siena-ochre/20 text-siena-ochre\",\n \"bg-siena-chocolate/20 text-siena-chocolate\",\n ]\n const index = name.charCodeAt(0) % colors.length\n return colors[index]\n}\n\nexport function TeamMemberList({\n members,\n onInvite,\n onRemove,\n onChangeRole,\n onResendInvite,\n className,\n}: TeamMemberListProps) {\n const [email, setEmail] = React.useState(\"\")\n const [role, setRole] = React.useState<MemberRole>(\"agent\")\n const [search, setSearch] = React.useState(\"\")\n\n const filteredMembers = members.filter(\n (member) =>\n member.name.toLowerCase().includes(search.toLowerCase()) ||\n member.email.toLowerCase().includes(search.toLowerCase())\n )\n\n const handleInvite = () => {\n if (email && onInvite) {\n onInvite(email, role)\n setEmail(\"\")\n }\n }\n\n return (\n <div className={cn(\"space-y-6\", className)}>\n {/* Header */}\n <div className=\"flex flex-col sm:flex-row sm:items-center justify-between gap-4\">\n <div className=\"flex items-center gap-3\">\n <Users className=\"h-5 w-5 text-muted-foreground\" />\n <h2 className=\"text-xl font-semibold\">Your team</h2>\n </div>\n <div className=\"relative w-full sm:w-64\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Search for people\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n </div>\n\n {/* Manage Members Section */}\n <div className=\"space-y-4\">\n <h3 className=\"font-medium\">Manage members</h3>\n\n {/* Invite Form */}\n <div className=\"flex gap-2\">\n <div className=\"relative flex-1\">\n <Users className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Enter your coworker's email\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n className=\"pl-9\"\n type=\"email\"\n />\n </div>\n <Select value={role} onValueChange={(v) => setRole(v as MemberRole)}>\n <SelectTrigger className=\"w-40\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"administrator\">Administrator</SelectItem>\n <SelectItem value=\"agent\">Agent</SelectItem>\n <SelectItem value=\"viewer\">Viewer</SelectItem>\n </SelectContent>\n </Select>\n <Button onClick={handleInvite} disabled={!email}>\n Invite\n </Button>\n </div>\n </div>\n\n {/* Members List */}\n <div className=\"border rounded-lg divide-y\">\n {filteredMembers.map((member) => (\n <div\n key={member.id}\n className=\"flex items-center gap-4 p-4 hover:bg-muted/50 transition-colors\"\n >\n <Avatar className={cn(\"h-10 w-10\", !member.avatar && getAvatarColor(member.name))}>\n <AvatarImage src={member.avatar} alt={member.name} />\n <AvatarFallback className={getAvatarColor(member.name)}>\n {getInitials(member.name)}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium truncate\">{member.name}</p>\n <p className=\"text-sm text-muted-foreground truncate\">\n {member.email}\n </p>\n </div>\n <Badge variant=\"soft\" color={statusColorMap[member.status]}>\n {member.status.charAt(0).toUpperCase() + member.status.slice(1)}\n </Badge>\n <Badge variant=\"soft\" color={roleColorMap[member.role]}>\n {member.role.charAt(0).toUpperCase() + member.role.slice(1)}\n </Badge>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\">\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {member.status === \"pending\" && onResendInvite && (\n <DropdownMenuItem onClick={() => onResendInvite(member.id)}>\n <Mail className=\"h-4 w-4 mr-2\" />\n Resend invite\n </DropdownMenuItem>\n )}\n {member.role !== \"owner\" && onChangeRole && (\n <DropdownMenuItem onClick={() => onChangeRole(member.id, \"administrator\")}>\n <Shield className=\"h-4 w-4 mr-2\" />\n Change role\n </DropdownMenuItem>\n )}\n {member.role !== \"owner\" && onRemove && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => onRemove(member.id)}\n variant=\"destructive\"\n >\n <Trash className=\"h-4 w-4 mr-2\" />\n Remove member\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n ))}\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ExternalLink } from \"lucide-react\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { cn } from \"@/lib/utils\"\n\nexport type IntegrationType = \"action\" | \"channel\" | \"app\" | \"native\"\n\ninterface IntegrationCardProps {\n icon: React.ReactNode\n title: string\n description: string\n type?: IntegrationType\n badges?: string[]\n learnMoreHref?: string\n onClick?: () => void\n installed?: boolean\n className?: string\n}\n\n// Color mappings for the unified Badge component\nconst typeColorMap: Record<IntegrationType, \"default\" | \"primary\" | \"success\" | \"warning\"> = {\n action: \"default\",\n channel: \"primary\",\n app: \"success\",\n native: \"warning\",\n}\n\nexport function IntegrationCard({\n icon,\n title,\n description,\n type,\n badges = [],\n learnMoreHref,\n onClick,\n installed,\n className,\n}: IntegrationCardProps) {\n return (\n <div\n className={cn(\n \"group relative flex flex-col p-4 bg-card border rounded-xl hover:shadow-medium transition-all duration-200 cursor-pointer\",\n installed && \"ring-1 ring-siena-sage/30\",\n className\n )}\n onClick={onClick}\n >\n <div className=\"flex items-start gap-4\">\n {/* Icon */}\n <div className=\"shrink-0 h-12 w-12 rounded-lg bg-muted flex items-center justify-center overflow-hidden\">\n {icon}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0 space-y-1\">\n <div className=\"flex items-center justify-between gap-2\">\n <h3 className=\"font-medium truncate\">{title}</h3>\n {learnMoreHref && (\n <a\n href={learnMoreHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"shrink-0 text-sm text-muted-foreground hover:text-foreground flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity\"\n onClick={(e) => e.stopPropagation()}\n >\n Learn more\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n )}\n </div>\n <p className=\"text-sm text-muted-foreground line-clamp-2\">\n {description}\n </p>\n </div>\n </div>\n\n {/* Badges */}\n {(type || badges.length > 0) && (\n <div className=\"flex flex-wrap gap-2 mt-3 pt-3 border-t\">\n {type && (\n <Badge variant=\"soft\" color={typeColorMap[type]}>\n {type.charAt(0).toUpperCase() + type.slice(1)}\n </Badge>\n )}\n {badges.map((badge) => (\n <Badge key={badge} variant=\"outline\" color=\"default\">\n {badge}\n </Badge>\n ))}\n </div>\n )}\n\n {/* Installed indicator */}\n {installed && (\n <div className=\"absolute top-2 right-2\">\n <div className=\"h-2 w-2 rounded-full bg-siena-sage\" />\n </div>\n )}\n </div>\n )\n}\n\n/* Section Header Component - for \"App Store\" style headers with Learn more link */\ninterface SectionHeaderProps {\n icon?: React.ReactNode\n title: string\n count?: number\n description?: string\n learnMoreHref?: string\n actions?: React.ReactNode\n className?: string\n}\n\nexport function SectionHeader({\n icon,\n title,\n count,\n description,\n learnMoreHref,\n actions,\n className,\n}: SectionHeaderProps) {\n return (\n <div className={cn(\"flex items-start justify-between gap-4 py-4 border-b\", className)}>\n <div className=\"flex items-start gap-3\">\n {icon && (\n <div className=\"shrink-0 h-10 w-10 rounded-lg bg-muted flex items-center justify-center\">\n {icon}\n </div>\n )}\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <h2 className=\"text-lg font-semibold\">{title}</h2>\n {count !== undefined && (\n <Badge variant=\"soft\" color=\"default\" size=\"sm\">\n {count}\n </Badge>\n )}\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground max-w-2xl\">\n {description}\n </p>\n )}\n </div>\n </div>\n <div className=\"flex items-center gap-3\">\n {learnMoreHref && (\n <a\n href={learnMoreHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-sm text-muted-foreground hover:text-foreground flex items-center gap-1\"\n >\n Learn more\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n )}\n {actions}\n </div>\n </div>\n )\n}\n","import { Button } from \"@/components/ui/button\";\n\ninterface HeroProps {\n label?: string;\n title: string;\n titleAccent?: string;\n description: string;\n primaryCta: {\n label: string;\n href: string;\n };\n secondaryCta?: {\n label: string;\n href: string;\n };\n}\n\nexport function Hero({\n label,\n title,\n titleAccent,\n description,\n primaryCta,\n secondaryCta,\n}: HeroProps) {\n return (\n <section className=\"section\">\n <div className=\"container-tight text-center\">\n {label && (\n <span className=\"label mb-6 block\">{label}</span>\n )}\n\n <h1 className=\"mb-8\">\n {titleAccent ? (\n <>\n {title}\n <br />\n <span className=\"text-siena\">{titleAccent}</span>\n </>\n ) : (\n title\n )}\n </h1>\n\n <p className=\"text-large mb-10 max-w-xl mx-auto\">\n {description}\n </p>\n\n <div className=\"flex items-center justify-center gap-4\">\n <Button size=\"lg\" className=\"transition-shadow hover:shadow-soft\" asChild>\n <a href={primaryCta.href}>{primaryCta.label}</a>\n </Button>\n {secondaryCta && (\n <Button size=\"lg\" variant=\"outline\" asChild>\n <a href={secondaryCta.href}>{secondaryCta.label}</a>\n </Button>\n )}\n </div>\n </div>\n </section>\n );\n}\n","import { Card, CardContent } from \"@/components/ui/card\";\n\ninterface Feature {\n icon: React.ReactNode;\n title: string;\n description: string;\n}\n\ninterface FeatureGridProps {\n label?: string;\n title?: string;\n description?: string;\n features: Feature[];\n columns?: 2 | 3 | 4;\n}\n\nexport function FeatureGrid({\n label,\n title,\n description,\n features,\n columns = 3,\n}: FeatureGridProps) {\n const gridCols = {\n 2: \"md:grid-cols-2\",\n 3: \"md:grid-cols-3\",\n 4: \"md:grid-cols-2 lg:grid-cols-4\",\n };\n\n return (\n <section className=\"section\">\n <div className=\"container-wide\">\n {(label || title || description) && (\n <div className=\"text-center mb-16\">\n {label && <span className=\"label mb-4 block\">{label}</span>}\n {title && <h2 className=\"mb-4\">{title}</h2>}\n {description && (\n <p className=\"text-large max-w-2xl mx-auto\">\n {description}\n </p>\n )}\n </div>\n )}\n\n <div className={`grid grid-cols-1 ${gridCols[columns]} gap-8`}>\n {features.map((feature, index) => (\n <Card\n key={index}\n className=\"transition-shadow hover:shadow-soft hover-lift\"\n >\n <CardContent className=\"p-8\">\n <div className=\"w-12 h-12 rounded-xl bg-primary/10 flex items-center justify-center mb-6\">\n {feature.icon}\n </div>\n <h3 className=\"mb-3\">{feature.title}</h3>\n <p className=\"text-muted-foreground\">\n {feature.description}\n </p>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","import { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent } from \"@/components/ui/card\";\n\ninterface ProductCardProps {\n icon: React.ReactNode;\n name: string;\n tagline: string;\n description: string;\n features: string[];\n href: string;\n badge?: string;\n featured?: boolean;\n comingSoon?: boolean;\n accentColor?: \"terracotta\" | \"sage\" | \"ochre\";\n}\n\nexport function ProductCard({\n icon,\n name,\n tagline,\n description,\n features,\n href,\n badge,\n featured = false,\n comingSoon = false,\n accentColor = \"terracotta\",\n}: ProductCardProps) {\n const accentClasses = {\n terracotta: \"bg-primary/10 text-primary\",\n sage: \"bg-[var(--siena-sage)]/10 text-[var(--siena-sage)]\",\n ochre: \"bg-[var(--siena-ochre)]/10 text-[var(--siena-ochre)]\",\n };\n\n return (\n <Card\n className={`h-full transition-shadow hover-lift ${\n featured ? \"shadow-soft\" : \"hover:shadow-soft\"\n }`}\n >\n <CardContent className=\"flex flex-col h-full p-8\">\n {/* Header */}\n <div className=\"flex items-start justify-between mb-6\">\n <div className={`w-12 h-12 rounded-xl flex items-center justify-center ${accentClasses[accentColor]}`}>\n {icon}\n </div>\n {badge && (\n <Badge\n variant=\"filled\"\n color={comingSoon ? \"default\" : \"primary\"}\n >\n {badge}\n </Badge>\n )}\n </div>\n\n {/* Content */}\n <h3 className=\"mb-2\">{name}</h3>\n <p className=\"text-muted-foreground font-medium mb-4\">{tagline}</p>\n <p className=\"text-muted-foreground mb-6 flex-1\">{description}</p>\n\n {/* Features */}\n <ul className=\"space-y-3 mb-8\">\n {features.map((feature, index) => (\n <li key={index} className=\"flex items-center gap-3 text-sm\">\n <svg\n className=\"w-4 h-4 text-primary flex-shrink-0\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n <span className=\"text-muted-foreground\">{feature}</span>\n </li>\n ))}\n </ul>\n\n {/* CTA */}\n <Button\n variant={featured ? \"default\" : \"outline\"}\n className={`w-full ${featured ? \"shadow-soft\" : \"\"}`}\n disabled={comingSoon}\n asChild={!comingSoon}\n >\n {comingSoon ? (\n <span>Coming Soon</span>\n ) : (\n <a href={href}>Learn more →</a>\n )}\n </Button>\n </CardContent>\n </Card>\n );\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Card, CardContent } from \"@/components/ui/card\";\n\ninterface CTASectionProps {\n title: string;\n description?: string;\n primaryCta: {\n label: string;\n href: string;\n };\n secondaryCta?: {\n label: string;\n href: string;\n };\n variant?: \"default\" | \"card\" | \"warm\";\n}\n\nexport function CTASection({\n title,\n description,\n primaryCta,\n secondaryCta,\n variant = \"default\",\n}: CTASectionProps) {\n if (variant === \"card\") {\n return (\n <section className=\"section-sm\">\n <div className=\"container-tight\">\n <Card className=\"shadow-soft text-center\">\n <CardContent className=\"p-12\">\n <h2 className=\"mb-4\">{title}</h2>\n {description && (\n <p className=\"text-large mb-8\">{description}</p>\n )}\n <div className=\"flex items-center justify-center gap-4\">\n <Button size=\"lg\" className=\"transition-shadow hover:shadow-soft\" asChild>\n <a href={primaryCta.href}>{primaryCta.label}</a>\n </Button>\n {secondaryCta && (\n <Button size=\"lg\" variant=\"outline\" asChild>\n <a href={secondaryCta.href}>{secondaryCta.label}</a>\n </Button>\n )}\n </div>\n </CardContent>\n </Card>\n </div>\n </section>\n );\n }\n\n if (variant === \"warm\") {\n return (\n <section className=\"section bg-primary/5\">\n <div className=\"container-tight text-center\">\n <h2 className=\"mb-4\">{title}</h2>\n {description && (\n <p className=\"text-large mb-8\">{description}</p>\n )}\n <div className=\"flex items-center justify-center gap-4\">\n <Button size=\"lg\" className=\"transition-shadow hover:shadow-soft\" asChild>\n <a href={primaryCta.href}>{primaryCta.label}</a>\n </Button>\n {secondaryCta && (\n <Button size=\"lg\" variant=\"outline\" asChild>\n <a href={secondaryCta.href}>{secondaryCta.label}</a>\n </Button>\n )}\n </div>\n </div>\n </section>\n );\n }\n\n // Default variant\n return (\n <section className=\"section\">\n <div className=\"container-tight text-center\">\n <h2 className=\"mb-4\">{title}</h2>\n {description && (\n <p className=\"text-large mb-8\">{description}</p>\n )}\n <div className=\"flex items-center justify-center gap-4\">\n <Button size=\"lg\" className=\"transition-shadow hover:shadow-soft\" asChild>\n <a href={primaryCta.href}>{primaryCta.label}</a>\n </Button>\n {secondaryCta && (\n <Button size=\"lg\" variant=\"outline\" asChild>\n <a href={secondaryCta.href}>{secondaryCta.label}</a>\n </Button>\n )}\n </div>\n </div>\n </section>\n );\n}\n","interface LogoCloudProps {\n title?: string;\n logos: {\n name: string;\n logo: React.ReactNode;\n }[];\n}\n\nexport function LogoCloud({ title, logos }: LogoCloudProps) {\n return (\n <section className=\"py-16 border-y border-border bg-secondary/30\">\n <div className=\"container-wide\">\n {title && (\n <p className=\"text-center text-muted-foreground text-sm mb-8 uppercase tracking-widest\">\n {title}\n </p>\n )}\n\n <div className=\"flex flex-wrap items-center justify-center gap-8 md:gap-12\">\n {logos.map((logo, index) => (\n <div\n key={index}\n className=\"opacity-60 hover:opacity-100 transition-opacity\"\n title={logo.name}\n >\n {logo.logo}\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n\n// Placeholder logos for demo\nexport function PlaceholderLogo({ name }: { name: string }) {\n return (\n <div className=\"h-8 px-4 flex items-center justify-center text-sm font-medium text-muted-foreground\">\n {name}\n </div>\n );\n}\n","// Single source of truth for version\n// Reads from package.json at build time\n\nexport const VERSION = \"3.2.7\"\n"]}
|