@mikenotthepope/substrateui 0.1.0 → 0.1.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/utils.ts","../components/ui/Button.tsx","../components/ui/Badge.tsx","../components/ui/Card.tsx","../components/ui/Menu.tsx","../components/ui/Drawer.tsx","../components/ui/Avatar.tsx","../components/ui/Tabs.tsx","../components/ui/Label.tsx","../components/ui/Input.tsx","../components/ui/Textarea.tsx","../components/ui/Checkbox.tsx","../components/ui/RadioGroup.tsx","../components/ui/Select.tsx","../components/ui/Switch.tsx","../components/ui/Slider.tsx","../components/ui/Text.tsx","../components/ui/FormLayout.tsx","../components/ui/Link.tsx","../components/ui/Alert.tsx","../components/ui/IconButton.tsx","../components/ui/Loader.tsx","../components/ui/Dialog.tsx","../components/ui/Divider.tsx","../components/ui/Stack.tsx","../components/ui/Flex.tsx","../components/ui/Grid.tsx","../components/ui/Container.tsx","../components/ui/Accordion.tsx","../components/ui/ScrollArea.tsx","../components/ui/Skeleton.tsx","../components/ui/Progress.tsx","../components/ui/Tooltip.tsx","../components/ui/Collapsible.tsx","../components/ui/HoverCard.tsx","../components/ui/Popover.tsx","../components/ui/ContextMenu.tsx","../components/ui/DropdownMenu.tsx","../components/ui/Table.tsx","../components/ui/Menubar.tsx","../components/ui/NavigationMenu.tsx","../components/ui/Resizable.tsx","../components/ui/Chart.tsx","../components/ui/Sonner.tsx","../components/ThemeProvider.tsx","../components/ui/Marquee.tsx","../components/ui/ImageCard.tsx","../components/ui/InputOTP.tsx","../components/ui/AlertDialog.tsx","../components/ui/Breadcrumb.tsx","../components/ui/Calendar.tsx","../components/ui/Carousel.tsx","../components/ui/Pagination.tsx","../components/ui/Sheet.tsx","../components/ui/Form.tsx","../components/ui/Command.tsx","../components/ui/Combobox.tsx","../components/ui/DataTable.tsx","../components/ui/Sidebar.tsx","../hooks/use-mobile.ts","../components/CardGrid/CardGrid.tsx","../components/NavBar/NavBar.tsx","../components/Page/Page.tsx","../components/SectionNav/SectionNav.tsx","../components/TwoColumnLayout/TwoColumnLayout.tsx","../components/ThemeToggle.tsx","../lib/create-theme.ts","../components/landing/Hero.tsx","../components/landing/Section.tsx","../components/landing/Footer.tsx","../components/landing/PricingTable.tsx","../components/landing/FeatureSection.tsx","../components/landing/Testimonial.tsx","../components/landing/LogoCloud.tsx","../components/landing/CTABanner.tsx","../components/landing/FAQ.tsx","../components/landing/StatsBar.tsx","../components/landing/AnnouncementBanner.tsx","../components/landing/NewsletterSignup.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { ClassNameValue, twMerge } from \"tailwind-merge\";\n\nexport function cn(...classes: ClassNameValue[]) {\n return twMerge(clsx(classes));\n}\n","import { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport React, { ButtonHTMLAttributes } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const buttonVariants = cva(\n \"font-head transition-all rounded outline-hidden cursor-pointer duration-200 font-medium flex justify-center items-center disabled:opacity-60 disabled:cursor-not-allowed\",\n {\n variants: {\n variant: {\n default:\n \"shadow-md hover:shadow active:shadow-none bg-primary text-primary-foreground border-2 border-border transition hover:translate-y-1 active:translate-y-2 active:translate-x-1 hover:bg-primary-hover\",\n secondary:\n \"shadow-md hover:shadow active:shadow-none bg-secondary shadow-primary text-secondary-foreground border-2 border-border transition hover:translate-y-1 active:translate-y-2 active:translate-x-1 hover:bg-secondary-hover\",\n outline:\n \"shadow-md hover:shadow active:shadow-none bg-transparent border-2 transition hover:translate-y-1 active:translate-y-2 active:translate-x-1\",\n link: \"bg-transparent hover:underline\",\n ghost: \"bg-transparent hover:bg-accent\",\n },\n size: {\n sm: \"px-3 py-1 text-sm shadow hover:shadow-none\",\n md: \"px-4 py-1.5 text-base\",\n lg: \"px-6 lg:px-8 py-2 lg:py-3 text-md lg:text-lg\",\n icon: \"p-2\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n },\n);\n\nexport interface IButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, IButtonProps>(\n (\n {\n children,\n size = \"md\",\n className = \"\",\n variant = \"default\",\n asChild = false,\n ...props\n }: IButtonProps,\n forwardedRef,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={forwardedRef}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nButton.displayName = \"Button\";\n","import { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport React, { HTMLAttributes } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const badgeVariants = cva(\n \"font-head uppercase border-2 border-border inline-flex items-center\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n destructive: \"bg-destructive text-destructive-foreground\",\n outline: \"bg-transparent text-foreground\",\n },\n size: {\n sm: \"px-1.5 py-0.5 text-xs\",\n md: \"px-2 py-0.5 text-xs\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface IBadgeProps\n extends HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n asChild?: boolean;\n}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, IBadgeProps>(\n (\n {\n children,\n size = \"md\",\n className = \"\",\n variant = \"default\",\n asChild = false,\n ...props\n }: IBadgeProps,\n forwardedRef,\n ) => {\n const Comp = asChild ? Slot : \"span\";\n return (\n <Comp\n ref={forwardedRef}\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nBadge.displayName = \"Badge\";\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const cardVariants = cva(\n \"bg-card text-card-foreground border-2 border-border\",\n {\n variants: {\n variant: {\n default: \"shadow-md\",\n outlined: \"shadow-none\",\n elevated: \"shadow-lg\",\n interactive:\n \"shadow-md hover:shadow active:shadow-none transition-all hover:translate-y-1 active:translate-y-2 active:translate-x-1 cursor-pointer\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface ICardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n asChild?: boolean;\n}\n\nconst CardRoot = React.forwardRef<HTMLDivElement, ICardProps>(\n (\n {\n children,\n className = \"\",\n variant = \"default\",\n asChild = false,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"div\";\n return (\n <Comp\n ref={ref}\n className={cn(cardVariants({ variant }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\nCardRoot.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"p-4 border-b-2 border-border\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"Card.Header\";\n\nconst CardBody = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-4\", className)} {...props} />\n));\nCardBody.displayName = \"Card.Body\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"p-4 border-t-2 border-border flex items-center gap-2\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"Card.Footer\";\n\nconst CardComponent = Object.assign(CardRoot, {\n Header: CardHeader,\n Body: CardBody,\n Footer: CardFooter,\n});\n\nexport { CardComponent as Card };\n","\"use client\";\n\nimport { cn } from \"@/lib/utils\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport React, { ComponentPropsWithoutRef } from \"react\";\n\nconst Menu = DropdownMenu.Root;\nconst Trigger = DropdownMenu.Trigger;\n\ntype IMenuContent = ComponentPropsWithoutRef<typeof DropdownMenu.Content>;\n\nconst Content = ({ className, ...props }: IMenuContent) => (\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n side=\"bottom\"\n align=\"start\"\n className={cn(\n \"bg-card border-2 shadow-md absolute top-2 min-w-20\",\n className,\n )}\n {...props}\n />\n </DropdownMenu.Portal>\n);\n\nconst MenuItem = React.forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DropdownMenu.Item>\n>(({ className, ...props }, ref) => (\n <DropdownMenu.Item\n ref={ref}\n className={cn(\n \"relative text-card-foreground flex cursor-default select-none items-center rounded-xs px-2 py-1.5 text-sm outline-hidden transition-colors hover:bg-primary focus:bg-primary data-disabled:pointer-events-none data-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n));\nMenuItem.displayName = \"MenuItem\";\n\nconst MenuComponent = Object.assign(Menu, {\n Trigger,\n Content,\n Item: MenuItem,\n});\n\nexport { MenuComponent as Menu };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\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-overlay\",\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=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-2 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-2 data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className,\n )}\n {...props}\n >\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(\"flex flex-col gap-1.5 p-4\", className)}\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(\n \"text-foreground text-xl font-head font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nconst DrawerComponent = Object.assign(Drawer, {\n Trigger: DrawerTrigger,\n Portal: DrawerPortal,\n Overlay: DrawerOverlay,\n Close: DrawerClose,\n Content: DrawerContent,\n Header: DrawerHeader,\n Footer: DrawerFooter,\n Title: DrawerTitle,\n Description: DrawerDescription,\n});\n\nexport { DrawerComponent as Drawer };\n","import * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cn } from \"@/lib/utils\";\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 border-2 rounded-full overflow-hidden\",\n className,\n )}\n {...props}\n />\n));\nAvatar.displayName = \"Avatar\";\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = \"Avatar.Image\";\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-primary text-primary-foreground font-head text-sm\",\n className,\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = \"Avatar.Fallback\";\n\nconst AvatarComponent = Object.assign(Avatar, {\n Image: AvatarImage,\n Fallback: AvatarFallback,\n});\n\nexport { AvatarComponent as Avatar };\n","\"use client\";\n\nimport { cn } from \"@/lib/utils\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { MoreHorizontal } from \"lucide-react\";\nimport React, {\n ComponentPropsWithoutRef,\n createContext,\n useContext,\n useState,\n} from \"react\";\n\n// Context to share value control between Tabs root and MoreItem\nconst TabsValueContext = createContext<{\n setValue: (value: string) => void;\n}>({ setValue: () => {} });\n\ninterface TabsProps\n extends Omit<\n ComponentPropsWithoutRef<typeof TabsPrimitive.Root>,\n \"value\" | \"onValueChange\"\n > {\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nfunction TabsRoot({\n className,\n defaultValue,\n value: controlledValue,\n onValueChange,\n ...props\n}: TabsProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n const setValue = (v: string) => {\n if (!isControlled) setInternalValue(v);\n onValueChange?.(v);\n };\n\n return (\n <TabsValueContext.Provider value={{ setValue }}>\n <TabsPrimitive.Root\n className={cn(\"flex flex-col\", className)}\n value={currentValue}\n onValueChange={setValue}\n {...props}\n />\n </TabsValueContext.Provider>\n );\n}\nTabsRoot.displayName = \"Tabs\";\n\nconst TabsList = React.forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"flex items-center gap-0 border-b-2 bg-background\",\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = \"TabsList\";\n\nconst TabsTrigger = React.forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"font-head text-sm px-4 py-2 cursor-pointer transition-colors\",\n \"text-muted-foreground hover:text-foreground\",\n \"border-b-2 border-transparent -mb-0.5\",\n \"data-[state=active]:text-foreground data-[state=active]:border-primary\",\n \"outline-hidden focus-visible:ring-2 focus-visible:ring-primary\",\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = \"TabsTrigger\";\n\nconst TabsContent = React.forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\"pt-4 outline-hidden\", className)}\n {...props}\n />\n));\nTabsContent.displayName = \"TabsContent\";\n\ninterface TabsMoreProps {\n children: React.ReactNode;\n className?: string;\n label?: string;\n}\n\nfunction TabsMore({ children, className, label = \"More\" }: TabsMoreProps) {\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger\n className={cn(\n \"font-head text-sm px-4 py-2 cursor-pointer transition-colors\",\n \"text-muted-foreground hover:text-foreground\",\n \"border-b-2 border-transparent -mb-0.5\",\n \"outline-hidden focus-visible:ring-2 focus-visible:ring-primary\",\n \"flex items-center gap-1\",\n className,\n )}\n >\n {label}\n <MoreHorizontal className=\"size-4\" />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n side=\"bottom\"\n align=\"start\"\n className=\"bg-card border-2 shadow-md absolute top-2 min-w-20 z-50\"\n >\n {children}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\nTabsMore.displayName = \"TabsMore\";\n\ninterface TabsMoreItemProps {\n value: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst TabsMoreItem = React.forwardRef<HTMLDivElement, TabsMoreItemProps>(\n ({ value, children, className, ...props }, ref) => {\n const { setValue } = useContext(TabsValueContext);\n\n return (\n <DropdownMenu.Item\n ref={ref}\n className={cn(\n \"relative text-card-foreground flex cursor-default select-none items-center px-3 py-1.5 text-sm font-head outline-hidden transition-colors hover:bg-primary focus:bg-primary\",\n className,\n )}\n onSelect={() => setValue(value)}\n {...props}\n >\n {children}\n </DropdownMenu.Item>\n );\n },\n);\nTabsMoreItem.displayName = \"TabsMoreItem\";\n\nconst TabsComponent = Object.assign(TabsRoot, {\n List: TabsList,\n Trigger: TabsTrigger,\n Content: TabsContent,\n More: TabsMore,\n MoreItem: TabsMoreItem,\n});\n\nexport { TabsComponent as Tabs };\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Label = React.forwardRef<\n React.ComponentRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\n \"font-sans text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className,\n )}\n {...props}\n />\n));\nLabel.displayName = \"Label\";\n","import React, { InputHTMLAttributes } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type IInputProps = InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = React.forwardRef<HTMLInputElement, IInputProps>(\n ({ type = \"text\", className, ...props }, ref) => (\n <input\n ref={ref}\n type={type}\n className={cn(\n \"flex h-10 w-full border-2 bg-input px-4 py-2 font-sans text-sm shadow-md transition placeholder:text-muted-foreground focus:outline-none focus:shadow-xs focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n props[\"aria-invalid\"] &&\n \"border-destructive text-destructive shadow-xs shadow-destructive\",\n className,\n )}\n {...props}\n />\n ),\n);\nInput.displayName = \"Input\";\n","import React, { TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ITextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, ITextareaProps>(\n ({ className, ...props }, ref) => (\n <textarea\n ref={ref}\n rows={4}\n className={cn(\n \"flex w-full border-2 bg-background px-4 py-2 font-sans text-sm shadow-md transition placeholder:text-muted-foreground focus:outline-none focus:shadow-xs disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n ),\n);\nTextarea.displayName = \"Textarea\";\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nconst checkboxVariants = cva(\"border-2 shrink-0 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50\", {\n variants: {\n variant: {\n default:\n \"data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n outline: \"\",\n solid:\n \"data-[state=checked]:bg-foreground data-[state=checked]:text-background\",\n },\n size: {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nexport interface ICheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {}\n\nexport const Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n ICheckboxProps\n>(({ className, size, variant, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(checkboxVariants({ size, variant }), className)}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center h-full w-full\">\n <Check className=\"h-full w-full\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = \"Checkbox\";\n","import * as React from \"react\";\nimport * as RadioPrimitive from \"@radix-ui/react-radio-group\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst radioVariants = cva(\"border-2 border-border shrink-0 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50\", {\n variants: {\n variant: {\n default: \"\",\n outline: \"\",\n solid: \"\",\n },\n size: {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nconst radioIndicatorVariants = cva(\"flex\", {\n variants: {\n variant: {\n default: \"bg-primary border-2 border-border\",\n outline: \"border-2 border-border\",\n solid: \"bg-border\",\n },\n size: {\n sm: \"h-2 w-2\",\n md: \"h-2.5 w-2.5\",\n lg: \"h-3.5 w-3.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nconst RadioGroupRoot = React.forwardRef<\n React.ComponentRef<typeof RadioPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <RadioPrimitive.Root\n ref={ref}\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n));\nRadioGroupRoot.displayName = \"RadioGroup\";\n\nexport interface IRadioGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof RadioPrimitive.Item>,\n VariantProps<typeof radioVariants> {}\n\nconst RadioGroupItem = React.forwardRef<\n React.ComponentRef<typeof RadioPrimitive.Item>,\n IRadioGroupItemProps\n>(({ className, size, variant, children, ...props }, ref) => (\n <RadioPrimitive.Item\n ref={ref}\n className={cn(radioVariants({ size, variant }), className)}\n {...props}\n >\n <RadioPrimitive.Indicator className=\"flex justify-center items-center\">\n <span className={radioIndicatorVariants({ size, variant })} />\n </RadioPrimitive.Indicator>\n {children}\n </RadioPrimitive.Item>\n));\nRadioGroupItem.displayName = \"RadioGroup.Item\";\n\nexport const RadioGroup = Object.assign(RadioGroupRoot, {\n Item: RadioGroupItem,\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nconst SelectRoot = SelectPrimitive.Root;\n\nconst SelectTrigger = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 min-w-40 items-center justify-between border-2 bg-background px-4 py-2 font-sans text-sm shadow-md transition placeholder:text-muted-foreground focus:outline-none focus:shadow-xs disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = \"Select.Trigger\";\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectContent = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 min-w-[8rem] overflow-hidden border-2 bg-background text-foreground shadow-md 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\",\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 {...props}\n >\n <SelectPrimitive.ScrollUpButton className=\"flex cursor-default items-center justify-center py-1 text-muted-foreground\">\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n <SelectPrimitive.Viewport\n className={cn(\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectPrimitive.ScrollDownButton className=\"flex cursor-default items-center justify-center py-1 text-muted-foreground\">\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = \"Select.Content\";\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectItem = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center py-1.5 px-2 outline-none data-[highlighted]:bg-primary data-[highlighted]:text-primary-foreground focus:bg-primary focus:text-primary-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = \"Select.Item\";\n\nconst SelectLabel = SelectPrimitive.Label;\nconst SelectSeparator = SelectPrimitive.Separator;\n\nexport const Select = Object.assign(SelectRoot, {\n Trigger: SelectTrigger,\n Value: SelectValue,\n Content: SelectContent,\n Group: SelectGroup,\n Item: SelectItem,\n Label: SelectLabel,\n Separator: SelectSeparator,\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n ref={ref}\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center border-2 border-foreground disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-4 w-4 bg-primary border-2 mx-0.5 border-foreground ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 data-[state=checked]:bg-background\",\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = \"Switch\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Slider = React.forwardRef<\n React.ComponentRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-3 w-full grow overflow-hidden border-2 bg-background\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4.5 w-4.5 border-2 bg-background shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = \"Slider\";\n","import { ElementType, JSX, ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Variant → default element mapping ───\n\nconst variantElements = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n body: \"p\",\n small: \"p\",\n code: \"code\",\n} as const satisfies Record<string, keyof JSX.IntrinsicElements>;\n\n// ─── Variant → class mapping ───\n\nconst variantClasses: Record<keyof typeof variantElements, string> = {\n h1: \"font-head text-4xl lg:text-5xl\",\n h2: \"font-head text-3xl lg:text-4xl\",\n h3: \"font-head text-2xl\",\n h4: \"font-head text-xl\",\n h5: \"font-head text-lg\",\n h6: \"font-head text-base\",\n body: \"font-sans text-base\",\n small: \"font-sans text-sm text-muted-foreground\",\n code: \"font-mono text-sm bg-muted px-1.5 py-0.5 border\",\n};\n\n// ─── Types ───\n\ntype Variant = keyof typeof variantElements;\n\ntype TextProps<T extends ElementType = \"p\"> = {\n variant?: Variant;\n as?: T;\n className?: string;\n} & Omit<ComponentPropsWithoutRef<T>, \"className\">;\n\n// ─── Component ───\n\nexport function Text<T extends ElementType = \"p\">({\n variant = \"body\",\n as,\n className,\n ...props\n}: TextProps<T>) {\n const Tag = as ?? variantElements[variant];\n return <Tag className={cn(variantClasses[variant], className)} {...props} />;\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Label } from \"./Label\";\n\n/* ---------------------------------- Root ---------------------------------- */\n\ntype IFormLayoutProps = React.FormHTMLAttributes<HTMLFormElement>;\n\nconst FormLayoutRoot = React.forwardRef<HTMLFormElement, IFormLayoutProps>(\n ({ className, ...props }, ref) => (\n <form ref={ref} className={cn(\"space-y-8\", className)} {...props} />\n ),\n);\nFormLayoutRoot.displayName = \"FormLayout\";\n\n/* -------------------------------- Section --------------------------------- */\n\ninterface IFormSectionProps extends React.HTMLAttributes<HTMLFieldSetElement> {\n title?: string;\n description?: string;\n}\n\nconst FormSection = React.forwardRef<HTMLFieldSetElement, IFormSectionProps>(\n ({ className, title, description, children, ...props }, ref) => (\n <fieldset\n ref={ref}\n className={cn(\"space-y-6 border-0 p-0 m-0\", className)}\n {...props}\n >\n {(title || description) && (\n <div className=\"space-y-1 border-b-2 border-border pb-4\">\n {title && (\n <legend className=\"font-head text-lg font-normal\">\n {title}\n </legend>\n )}\n {description && (\n <p className=\"font-sans text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n )}\n <div className=\"space-y-4\">{children}</div>\n </fieldset>\n ),\n);\nFormSection.displayName = \"FormLayout.Section\";\n\n/* --------------------------------- Field ---------------------------------- */\n\ninterface IFormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n htmlFor?: string;\n description?: string;\n error?: string;\n required?: boolean;\n}\n\nconst FormField = React.forwardRef<HTMLDivElement, IFormFieldProps>(\n (\n { className, label, htmlFor, description, error, required, children, ...props },\n ref,\n ) => (\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props}>\n {label && (\n <Label htmlFor={htmlFor}>\n {label}\n {required && (\n <span className=\"ml-0.5 text-destructive\" aria-hidden=\"true\">\n *\n </span>\n )}\n </Label>\n )}\n {children}\n {description && !error && (\n <p className=\"font-sans text-xs text-muted-foreground\">{description}</p>\n )}\n {error && (\n <p className=\"font-sans text-xs text-destructive\" role=\"alert\">\n {error}\n </p>\n )}\n </div>\n ),\n);\nFormField.displayName = \"FormLayout.Field\";\n\n/* --------------------------------- Row ------------------------------------ */\n\ntype IFormRowProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst FormRow = React.forwardRef<HTMLDivElement, IFormRowProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"grid grid-cols-1 gap-4 sm:grid-cols-2\", className)}\n {...props}\n />\n ),\n);\nFormRow.displayName = \"FormLayout.Row\";\n\n/* -------------------------------- Actions --------------------------------- */\n\ninterface IFormActionsProps extends React.HTMLAttributes<HTMLDivElement> {\n align?: \"left\" | \"right\" | \"center\" | \"between\";\n}\n\nconst alignMap = {\n left: \"justify-start\",\n right: \"justify-end\",\n center: \"justify-center\",\n between: \"justify-between\",\n} as const;\n\nconst FormActions = React.forwardRef<HTMLDivElement, IFormActionsProps>(\n ({ className, align = \"right\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-3 border-t-2 border-border pt-6\",\n alignMap[align],\n className,\n )}\n {...props}\n />\n ),\n);\nFormActions.displayName = \"FormLayout.Actions\";\n\n/* -------------------------------- Export ---------------------------------- */\n\nconst FormLayout = Object.assign(FormLayoutRoot, {\n Section: FormSection,\n Field: FormField,\n Row: FormRow,\n Actions: FormActions,\n});\n\nexport { FormLayout };\nexport type {\n IFormLayoutProps,\n IFormSectionProps,\n IFormFieldProps,\n IFormRowProps,\n IFormActionsProps,\n};\n","import { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport React, { AnchorHTMLAttributes } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const linkVariants = cva(\n \"font-head inline-flex items-center gap-1 cursor-pointer transition-colors duration-200 underline-offset-4\",\n {\n variants: {\n variant: {\n default:\n \"text-primary-foreground underline decoration-primary hover:decoration-2\",\n muted:\n \"text-muted-foreground underline decoration-muted hover:text-foreground hover:decoration-foreground\",\n destructive:\n \"text-destructive underline decoration-destructive hover:decoration-2\",\n plain: \"text-foreground hover:underline\",\n },\n size: {\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface ILinkProps\n extends AnchorHTMLAttributes<HTMLAnchorElement>,\n VariantProps<typeof linkVariants> {\n asChild?: boolean;\n}\n\nexport const Link = React.forwardRef<HTMLAnchorElement, ILinkProps>(\n (\n {\n children,\n className = \"\",\n variant = \"default\",\n size = \"md\",\n asChild = false,\n ...props\n }: ILinkProps,\n forwardedRef,\n ) => {\n const Comp = asChild ? Slot : \"a\";\n return (\n <Comp\n ref={forwardedRef}\n className={cn(linkVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nLink.displayName = \"Link\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const alertVariants = cva(\n \"relative w-full border-2 border-border p-4\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n solid: \"bg-secondary text-secondary-foreground\",\n },\n status: {\n error: \"bg-error text-error-foreground border-error-foreground\",\n success: \"bg-success text-success-foreground border-success-foreground\",\n warning: \"bg-warning text-warning-foreground border-warning-foreground\",\n info: \"bg-info text-info-foreground border-info-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface IAlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {}\n\nconst AlertRoot = React.forwardRef<HTMLDivElement, IAlertProps>(\n ({ className, variant, status, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant, status }), className)}\n {...props}\n />\n ),\n);\nAlertRoot.displayName = \"Alert\";\n\ntype IAlertTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\n\nconst AlertTitle = React.forwardRef<HTMLHeadingElement, IAlertTitleProps>(\n ({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"font-head text-base mb-1\", className)}\n {...props}\n />\n ),\n);\nAlertTitle.displayName = \"Alert.Title\";\n\ntype IAlertDescriptionProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst AlertDescription = React.forwardRef<\n HTMLDivElement,\n IAlertDescriptionProps\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"font-sans text-sm\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"Alert.Description\";\n\nconst AlertComponent = Object.assign(AlertRoot, {\n Title: AlertTitle,\n Description: AlertDescription,\n});\n\nexport { AlertComponent as Alert };\n","import { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport React, { ButtonHTMLAttributes } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const iconButtonVariants = cva(\n \"font-head transition-all outline-hidden cursor-pointer duration-200 inline-flex justify-center items-center disabled:opacity-60 disabled:cursor-not-allowed border-2 border-border\",\n {\n variants: {\n variant: {\n default:\n \"shadow-md hover:shadow active:shadow-none bg-primary text-primary-foreground transition hover:translate-y-1 active:translate-y-2 active:translate-x-1 hover:bg-primary-hover\",\n secondary:\n \"shadow-md hover:shadow active:shadow-none bg-secondary text-secondary-foreground shadow-primary transition hover:translate-y-1 active:translate-y-2 active:translate-x-1\",\n outline:\n \"shadow-md hover:shadow active:shadow-none bg-transparent transition hover:translate-y-1 active:translate-y-2 active:translate-x-1\",\n ghost: \"bg-transparent hover:bg-accent border-transparent shadow-none\",\n },\n size: {\n sm: \"p-1.5 [&_svg]:size-4\",\n md: \"p-2 [&_svg]:size-5\",\n lg: \"p-3 [&_svg]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface IIconButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof iconButtonVariants> {\n asChild?: boolean;\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, IIconButtonProps>(\n (\n {\n children,\n className = \"\",\n variant = \"default\",\n size = \"md\",\n asChild = false,\n ...props\n }: IIconButtonProps,\n forwardedRef,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={forwardedRef}\n className={cn(iconButtonVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nIconButton.displayName = \"IconButton\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const loaderVariants = cva(\"flex gap-1\", {\n variants: {\n variant: {\n default: \"[&>div]:bg-primary [&>div]:border-border\",\n secondary: \"[&>div]:bg-secondary [&>div]:border-border\",\n outline: \"[&>div]:bg-transparent [&>div]:border-border\",\n },\n size: {\n sm: \"[&>div]:w-2 [&>div]:h-2\",\n md: \"[&>div]:w-3 [&>div]:h-3\",\n lg: \"[&>div]:w-4 [&>div]:h-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nexport interface ILoaderProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\">,\n VariantProps<typeof loaderVariants> {\n count?: number;\n duration?: number;\n delayStep?: number;\n}\n\nexport const Loader = React.forwardRef<HTMLDivElement, ILoaderProps>(\n (\n {\n className,\n variant,\n size,\n count = 3,\n duration = 0.5,\n delayStep = 100,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n className={cn(loaderVariants({ variant, size }), className)}\n ref={ref}\n role=\"status\"\n aria-label=\"Loading...\"\n {...props}\n >\n {Array.from({ length: count }).map((_, i) => (\n <div\n key={i}\n className=\"border-2 animate-bounce\"\n style={{\n animationDuration: `${duration}s`,\n animationIterationCount: \"infinite\",\n animationDelay: `${i * delayStep}ms`,\n }}\n />\n ))}\n </div>\n );\n },\n);\n\nLoader.displayName = \"Loader\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ReactDialog from \"@radix-ui/react-dialog\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { X } from \"lucide-react\";\n\nconst Dialog = ReactDialog.Root;\nconst DialogTrigger = ReactDialog.Trigger;\n\n/* ─── Overlay ─── */\n\nconst overlayVariants = cva(\n \"fixed inset-0 z-50 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n {\n variants: {\n variant: {\n default: \"bg-overlay\",\n none: \"bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ninterface IDialogOverlayProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof overlayVariants> {}\n\nconst DialogOverlay = React.forwardRef<HTMLDivElement, IDialogOverlayProps>(\n ({ variant = \"default\", className, ...props }, ref) => (\n <ReactDialog.Overlay\n ref={ref}\n className={cn(overlayVariants({ variant }), className)}\n {...props}\n />\n ),\n);\nDialogOverlay.displayName = \"Dialog.Overlay\";\n\n/* ─── Content ─── */\n\nconst dialogContentVariants = cva(\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] border-2 border-border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n {\n variants: {\n size: {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n full: \"max-w-[90vw]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nexport interface IDialogContentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof dialogContentVariants> {\n overlay?: IDialogOverlayProps;\n}\n\nconst DialogContent = React.forwardRef<HTMLDivElement, IDialogContentProps>(\n ({ children, size = \"md\", className, overlay, ...props }, ref) => (\n <ReactDialog.Portal>\n <DialogOverlay {...overlay} />\n <ReactDialog.Content\n ref={ref}\n className={cn(dialogContentVariants({ size }), className)}\n {...props}\n >\n <VisuallyHidden>\n <ReactDialog.Title />\n </VisuallyHidden>\n <div className=\"flex flex-col relative\">{children}</div>\n </ReactDialog.Content>\n </ReactDialog.Portal>\n ),\n);\nDialogContent.displayName = \"Dialog.Content\";\n\n/* ─── Header ─── */\n\nconst DialogHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ children, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between border-b-2 border-border bg-primary text-primary-foreground px-4 min-h-12\",\n className,\n )}\n {...props}\n >\n {children}\n <ReactDialog.Close className=\"cursor-pointer\" asChild>\n <X size={18} />\n </ReactDialog.Close>\n </div>\n));\nDialogHeader.displayName = \"Dialog.Header\";\n\n/* ─── Body ─── */\n\nconst DialogBody = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-4\", className)} {...props} />\n));\nDialogBody.displayName = \"Dialog.Body\";\n\n/* ─── Description ─── */\n\nconst DialogDescription = React.forwardRef<\n HTMLParagraphElement,\n React.ComponentPropsWithoutRef<typeof ReactDialog.Description>\n>(({ className, ...props }, ref) => (\n <ReactDialog.Description\n ref={ref}\n className={cn(\"font-sans text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = \"Dialog.Description\";\n\n/* ─── Footer ─── */\n\nconst DialogFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-end border-t-2 border-border px-4 py-2 gap-2\",\n className,\n )}\n {...props}\n />\n));\nDialogFooter.displayName = \"Dialog.Footer\";\n\n/* ─── Composite export ─── */\n\nconst DialogComponent = Object.assign(Dialog, {\n Trigger: DialogTrigger,\n Content: DialogContent,\n Header: DialogHeader,\n Body: DialogBody,\n Description: DialogDescription,\n Footer: DialogFooter,\n});\n\nexport { DialogComponent as Dialog, dialogContentVariants };\n","import * as React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const dividerVariants = cva(\"border-border\", {\n variants: {\n orientation: {\n horizontal: \"w-full border-t-2\",\n vertical: \"h-full border-l-2 self-stretch\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n});\n\nexport interface IDividerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof dividerVariants> {\n label?: React.ReactNode;\n}\n\nexport const Divider = React.forwardRef<HTMLDivElement, IDividerProps>(\n ({ className, orientation = \"horizontal\", label, ...props }, ref) => {\n if (label && orientation === \"horizontal\") {\n return (\n <div\n ref={ref}\n role=\"separator\"\n className={cn(\"flex items-center gap-3 w-full\", className)}\n {...props}\n >\n <div className=\"flex-1 border-t-2 border-border\" />\n <span className=\"font-sans text-sm text-muted-foreground shrink-0\">\n {label}\n </span>\n <div className=\"flex-1 border-t-2 border-border\" />\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n className={cn(dividerVariants({ orientation }), className)}\n {...props}\n />\n );\n },\n);\n\nDivider.displayName = \"Divider\";\n","import * as React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const stackVariants = cva(\"flex\", {\n variants: {\n direction: {\n vertical: \"flex-col\",\n horizontal: \"flex-row\",\n },\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n \"2xl\": \"gap-12\",\n },\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n },\n },\n defaultVariants: {\n direction: \"vertical\",\n gap: \"md\",\n },\n});\n\nexport interface IStackProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof stackVariants> {\n as?: React.ElementType;\n}\n\nexport const Stack = React.forwardRef<HTMLElement, IStackProps>(\n (\n {\n children,\n className,\n direction = \"vertical\",\n gap = \"md\",\n align,\n justify,\n as: Comp = \"div\",\n ...props\n },\n ref,\n ) => {\n return (\n <Comp\n ref={ref}\n className={cn(stackVariants({ direction, gap, align, justify }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nStack.displayName = \"Stack\";\n","import * as React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const flexVariants = cva(\"flex\", {\n variants: {\n direction: {\n row: \"flex-row\",\n \"row-reverse\": \"flex-row-reverse\",\n column: \"flex-col\",\n \"column-reverse\": \"flex-col-reverse\",\n },\n wrap: {\n nowrap: \"flex-nowrap\",\n wrap: \"flex-wrap\",\n \"wrap-reverse\": \"flex-wrap-reverse\",\n },\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n \"2xl\": \"gap-12\",\n },\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n },\n },\n defaultVariants: {\n direction: \"row\",\n gap: \"md\",\n },\n});\n\nexport interface IFlexProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof flexVariants> {\n as?: React.ElementType;\n}\n\nexport const Flex = React.forwardRef<HTMLElement, IFlexProps>(\n (\n {\n children,\n className,\n direction = \"row\",\n wrap,\n gap = \"md\",\n align,\n justify,\n as: Comp = \"div\",\n ...props\n },\n ref,\n ) => {\n return (\n <Comp\n ref={ref}\n className={cn(\n flexVariants({ direction, wrap, gap, align, justify }),\n className,\n )}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nFlex.displayName = \"Flex\";\n","import * as React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const gridVariants = cva(\"grid\", {\n variants: {\n columns: {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n 5: \"grid-cols-5\",\n 6: \"grid-cols-6\",\n },\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n \"2xl\": \"gap-12\",\n },\n },\n defaultVariants: {\n columns: 1,\n gap: \"md\",\n },\n});\n\ntype ColumnCount = 1 | 2 | 3 | 4 | 5 | 6;\n\nconst smColsMap: Record<number, string> = {\n 1: \"sm:grid-cols-1\", 2: \"sm:grid-cols-2\", 3: \"sm:grid-cols-3\",\n 4: \"sm:grid-cols-4\", 5: \"sm:grid-cols-5\", 6: \"sm:grid-cols-6\",\n};\nconst mdColsMap: Record<number, string> = {\n 1: \"md:grid-cols-1\", 2: \"md:grid-cols-2\", 3: \"md:grid-cols-3\",\n 4: \"md:grid-cols-4\", 5: \"md:grid-cols-5\", 6: \"md:grid-cols-6\",\n};\nconst lgColsMap: Record<number, string> = {\n 1: \"lg:grid-cols-1\", 2: \"lg:grid-cols-2\", 3: \"lg:grid-cols-3\",\n 4: \"lg:grid-cols-4\", 5: \"lg:grid-cols-5\", 6: \"lg:grid-cols-6\",\n};\n\nexport interface IGridProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof gridVariants> {\n as?: React.ElementType;\n /** Column count at the `sm` breakpoint (640px+) */\n columnsSm?: ColumnCount;\n /** Column count at the `md` breakpoint (768px+) */\n columnsMd?: ColumnCount;\n /** Column count at the `lg` breakpoint (1024px+) */\n columnsLg?: ColumnCount;\n}\n\nexport const Grid = React.forwardRef<HTMLElement, IGridProps>(\n (\n {\n children,\n className,\n columns = 1,\n gap = \"md\",\n columnsSm,\n columnsMd,\n columnsLg,\n as: Comp = \"div\",\n ...props\n },\n ref,\n ) => {\n return (\n <Comp\n ref={ref}\n className={cn(\n gridVariants({ columns, gap }),\n columnsSm && smColsMap[columnsSm],\n columnsMd && mdColsMap[columnsMd],\n columnsLg && lgColsMap[columnsLg],\n className,\n )}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nGrid.displayName = \"Grid\";\n","import * as React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const containerVariants = cva(\"mx-auto px-4 sm:px-6 lg:px-8\", {\n variants: {\n size: {\n sm: \"max-w-2xl\",\n md: \"max-w-4xl\",\n lg: \"max-w-6xl\",\n xl: \"max-w-7xl\",\n full: \"max-w-full\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n});\n\nexport interface IContainerProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof containerVariants> {\n as?: React.ElementType;\n}\n\nexport const Container = React.forwardRef<HTMLElement, IContainerProps>(\n (\n {\n children,\n className,\n size = \"lg\",\n as: Comp = \"div\",\n ...props\n },\n ref,\n ) => {\n return (\n <Comp\n ref={ref}\n className={cn(containerVariants({ size }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nContainer.displayName = \"Container\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitives from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst AccordionRoot = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitives.Root\n ref={ref}\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n));\nAccordionRoot.displayName = \"Accordion\";\n\n/* ─── Item ─── */\n\nconst AccordionItem = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitives.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitives.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitives.Item\n ref={ref}\n className={cn(\n \"overflow-hidden border-2 border-border shadow-md\",\n className,\n )}\n {...props}\n />\n));\nAccordionItem.displayName = \"Accordion.Item\";\n\n/* ─── Trigger ─── */\n\nconst AccordionTrigger = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitives.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitives.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitives.Header className=\"flex\">\n <AccordionPrimitives.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between text-left text-base font-head\",\n \"bg-background text-foreground border-border p-4\",\n \"transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary\",\n \"[&[data-state=open]>svg]:rotate-180 data-[state=open]:border-b-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"pointer-events-none size-5 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitives.Trigger>\n </AccordionPrimitives.Header>\n));\nAccordionTrigger.displayName = \"Accordion.Trigger\";\n\n/* ─── Content ─── */\n\nconst AccordionContent = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitives.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitives.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitives.Content\n ref={ref}\n className=\"overflow-hidden bg-muted text-sm font-sans transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"p-4\", className)}>{children}</div>\n </AccordionPrimitives.Content>\n));\nAccordionContent.displayName = \"Accordion.Content\";\n\n/* ─── Compound Export ─── */\n\nconst AccordionComponent = Object.assign(AccordionRoot, {\n Item: AccordionItem,\n Trigger: AccordionTrigger,\n Content: AccordionContent,\n});\n\nexport { AccordionComponent as Accordion };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitives from \"@radix-ui/react-scroll-area\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── ScrollBar ─── */\n\nconst ScrollBar = React.forwardRef<\n React.ComponentRef<typeof ScrollAreaPrimitives.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitives.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitives.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-px\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-px\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitives.ScrollAreaThumb className=\"relative flex-1 bg-border\" />\n </ScrollAreaPrimitives.ScrollAreaScrollbar>\n));\nScrollBar.displayName = \"ScrollArea.ScrollBar\";\n\n/* ─── Root ─── */\n\nconst ScrollAreaRoot = React.forwardRef<\n React.ComponentRef<typeof ScrollAreaPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitives.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitives.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitives.Viewport className=\"h-full w-full font-sans\">\n {children}\n </ScrollAreaPrimitives.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitives.Corner />\n </ScrollAreaPrimitives.Root>\n));\nScrollAreaRoot.displayName = \"ScrollArea\";\n\n/* ─── Compound Export ─── */\n\nconst ScrollAreaComponent = Object.assign(ScrollAreaRoot, {\n ScrollBar,\n});\n\nexport { ScrollAreaComponent as ScrollArea };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ISkeletonProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst Skeleton = React.forwardRef<HTMLDivElement, ISkeletonProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"animate-pulse bg-muted border-2 border-border\",\n className,\n )}\n {...props}\n />\n ),\n);\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ProgressPrimitives from \"@radix-ui/react-progress\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface IProgressProps\n extends React.ComponentPropsWithoutRef<typeof ProgressPrimitives.Root> {\n value?: number;\n}\n\nconst Progress = React.forwardRef<\n React.ComponentRef<typeof ProgressPrimitives.Root>,\n IProgressProps\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitives.Root\n ref={ref}\n className={cn(\n \"relative h-4 w-full overflow-hidden border-2 border-border bg-muted\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitives.Indicator\n className=\"h-full w-full flex-1 border-r-2 border-border bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitives.Root>\n));\nProgress.displayName = \"Progress\";\n\nexport { Progress };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitives from \"@radix-ui/react-tooltip\";\nimport { cn } from \"@/lib/utils\";\n\n/* --- Provider --- */\n\ntype ITooltipProviderProps =\n React.ComponentPropsWithoutRef<typeof TooltipPrimitives.Provider>;\n\nconst TooltipProvider = ({\n delayDuration = 0,\n ...props\n}: ITooltipProviderProps) => (\n <TooltipPrimitives.Provider delayDuration={delayDuration} {...props} />\n);\nTooltipProvider.displayName = \"Tooltip.Provider\";\n\n/* --- Root --- */\n\nconst TooltipRoot = TooltipPrimitives.Root;\n\n/* --- Trigger --- */\n\nconst TooltipTrigger = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitives.Trigger>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitives.Trigger>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitives.Trigger\n ref={ref}\n className={cn(className)}\n {...props}\n />\n));\nTooltipTrigger.displayName = \"Tooltip.Trigger\";\n\n/* --- Content --- */\n\ntype ITooltipContentProps =\n React.ComponentPropsWithoutRef<typeof TooltipPrimitives.Content>;\n\nconst TooltipContent = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitives.Content>,\n ITooltipContentProps\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitives.Portal>\n <TooltipPrimitives.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden border-2 border-border bg-background px-3 py-1.5 text-sm font-sans text-foreground shadow-md\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"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\",\n className,\n )}\n {...props}\n />\n </TooltipPrimitives.Portal>\n));\nTooltipContent.displayName = \"Tooltip.Content\";\n\n/* --- Composite export --- */\n\nconst TooltipComponent = Object.assign(TooltipRoot, {\n Provider: TooltipProvider,\n Trigger: TooltipTrigger,\n Content: TooltipContent,\n});\n\nexport { TooltipComponent as Tooltip };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CollapsiblePrimitives from \"@radix-ui/react-collapsible\";\nimport { cn } from \"@/lib/utils\";\n\n/* --- Root --- */\n\nconst CollapsibleRoot = React.forwardRef<\n React.ComponentRef<typeof CollapsiblePrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof CollapsiblePrimitives.Root>\n>(({ className, ...props }, ref) => (\n <CollapsiblePrimitives.Root\n ref={ref}\n className={cn(className)}\n {...props}\n />\n));\nCollapsibleRoot.displayName = \"Collapsible\";\n\n/* --- Trigger --- */\n\nconst CollapsibleTrigger = React.forwardRef<\n React.ComponentRef<typeof CollapsiblePrimitives.CollapsibleTrigger>,\n React.ComponentPropsWithoutRef<typeof CollapsiblePrimitives.CollapsibleTrigger>\n>(({ className, ...props }, ref) => (\n <CollapsiblePrimitives.CollapsibleTrigger\n ref={ref}\n className={cn(\"cursor-pointer\", className)}\n {...props}\n />\n));\nCollapsibleTrigger.displayName = \"Collapsible.Trigger\";\n\n/* --- Content --- */\n\nconst CollapsibleContent = React.forwardRef<\n React.ComponentRef<typeof CollapsiblePrimitives.CollapsibleContent>,\n React.ComponentPropsWithoutRef<typeof CollapsiblePrimitives.CollapsibleContent>\n>(({ className, ...props }, ref) => (\n <CollapsiblePrimitives.CollapsibleContent\n ref={ref}\n className={cn(\n \"overflow-hidden data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n className,\n )}\n {...props}\n />\n));\nCollapsibleContent.displayName = \"Collapsible.Content\";\n\n/* --- Composite export --- */\n\nconst CollapsibleComponent = Object.assign(CollapsibleRoot, {\n Trigger: CollapsibleTrigger,\n Content: CollapsibleContent,\n});\n\nexport { CollapsibleComponent as Collapsible };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as HoverCardPrimitives from \"@radix-ui/react-hover-card\";\nimport { cn } from \"@/lib/utils\";\n\n/* --- Root --- */\n\nconst HoverCardRoot = HoverCardPrimitives.Root;\n\n/* --- Trigger --- */\n\nconst HoverCardTrigger = React.forwardRef<\n React.ComponentRef<typeof HoverCardPrimitives.Trigger>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitives.Trigger>\n>(({ className, ...props }, ref) => (\n <HoverCardPrimitives.Trigger\n ref={ref}\n className={cn(className)}\n {...props}\n />\n));\nHoverCardTrigger.displayName = \"HoverCard.Trigger\";\n\n/* --- Content --- */\n\ntype IHoverCardContentProps =\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitives.Content>;\n\nconst HoverCardContent = React.forwardRef<\n React.ComponentRef<typeof HoverCardPrimitives.Content>,\n IHoverCardContentProps\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitives.Portal>\n <HoverCardPrimitives.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 border-2 border-border bg-background p-4 font-sans text-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"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\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitives.Portal>\n));\nHoverCardContent.displayName = \"HoverCard.Content\";\n\n/* --- Composite export --- */\n\nconst HoverCardComponent = Object.assign(HoverCardRoot, {\n Trigger: HoverCardTrigger,\n Content: HoverCardContent,\n});\n\nexport { HoverCardComponent as HoverCard };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitives from \"@radix-ui/react-popover\";\nimport { cn } from \"@/lib/utils\";\n\n/* --- Root --- */\n\nconst PopoverRoot = PopoverPrimitives.Root;\n\n/* --- Trigger --- */\n\nconst PopoverTrigger = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitives.Trigger>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitives.Trigger>\n>(({ className, ...props }, ref) => (\n <PopoverPrimitives.Trigger\n ref={ref}\n className={cn(className)}\n {...props}\n />\n));\nPopoverTrigger.displayName = \"Popover.Trigger\";\n\n/* --- Content --- */\n\ntype IPopoverContentProps =\n React.ComponentPropsWithoutRef<typeof PopoverPrimitives.Content>;\n\nconst PopoverContent = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitives.Content>,\n IPopoverContentProps\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitives.Portal>\n <PopoverPrimitives.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 border-2 border-border bg-background p-4 font-sans text-foreground shadow-md outline-hidden\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"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\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitives.Portal>\n));\nPopoverContent.displayName = \"Popover.Content\";\n\n/* --- Close --- */\n\nconst PopoverClose = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <PopoverPrimitives.Close\n ref={ref}\n className={cn(className)}\n {...props}\n />\n));\nPopoverClose.displayName = \"Popover.Close\";\n\n/* --- Composite export --- */\n\nconst PopoverComponent = Object.assign(PopoverRoot, {\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n Close: PopoverClose,\n});\n\nexport { PopoverComponent as Popover };\n","\"use client\";\n\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst ContextMenuRoot = ContextMenuPrimitive.Root;\n\n/* ─── Trigger ─── */\n\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\n\n/* ─── Group ─── */\n\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\n\n/* ─── Portal ─── */\n\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\n\n/* ─── Sub ─── */\n\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\n\n/* ─── RadioGroup ─── */\n\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\n/* ─── SubTrigger ─── */\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center border-2 border-transparent bg-background px-2 py-1.5 text-sm font-sans text-foreground outline-hidden data-[state=open]:border-border focus:border-border [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n));\nContextMenuSubTrigger.displayName = \"ContextMenu.SubTrigger\";\n\n/* ─── SubContent ─── */\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden border-2 border-border bg-background p-1 font-sans text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n));\nContextMenuSubContent.displayName = \"ContextMenu.SubContent\";\n\n/* ─── Content ─── */\n\nconst ContextMenuContent = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden border-2 border-border bg-background p-1 font-sans text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = \"ContextMenu.Content\";\n\n/* ─── Item ─── */\n\nconst ContextMenuItem = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent px-2 py-1.5 gap-2 text-sm outline-hidden focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nContextMenuItem.displayName = \"ContextMenu.Item\";\n\n/* ─── CheckboxItem ─── */\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent py-1.5 pl-8 pr-2 gap-2 text-sm font-sans text-foreground outline-hidden focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName = \"ContextMenu.CheckboxItem\";\n\n/* ─── RadioItem ─── */\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent py-1.5 pl-8 pr-2 gap-2 text-sm font-sans text-foreground outline-hidden focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = \"ContextMenu.RadioItem\";\n\n/* ─── Label ─── */\n\nconst ContextMenuLabel = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-head border-2 border-transparent text-foreground\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nContextMenuLabel.displayName = \"ContextMenu.Label\";\n\n/* ─── Separator ─── */\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-0.5 bg-border\", className)}\n {...props}\n />\n));\nContextMenuSeparator.displayName = \"ContextMenu.Separator\";\n\n/* ─── Shortcut ─── */\n\nconst ContextMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n \"ml-auto text-xs font-sans tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n);\nContextMenuShortcut.displayName = \"ContextMenu.Shortcut\";\n\n/* ─── Composite export ─── */\n\nconst ContextMenuComponent = Object.assign(ContextMenuRoot, {\n Trigger: ContextMenuTrigger,\n Content: ContextMenuContent,\n Item: ContextMenuItem,\n CheckboxItem: ContextMenuCheckboxItem,\n RadioItem: ContextMenuRadioItem,\n Label: ContextMenuLabel,\n Separator: ContextMenuSeparator,\n Shortcut: ContextMenuShortcut,\n Group: ContextMenuGroup,\n Portal: ContextMenuPortal,\n Sub: ContextMenuSub,\n SubContent: ContextMenuSubContent,\n SubTrigger: ContextMenuSubTrigger,\n RadioGroup: ContextMenuRadioGroup,\n});\n\nexport { ContextMenuComponent as ContextMenu };\n","\"use client\";\n\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst DropdownMenuRoot = DropdownMenuPrimitive.Root;\n\n/* ─── Trigger ─── */\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\n/* ─── Group ─── */\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\n/* ─── Portal ─── */\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\n/* ─── Sub ─── */\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\n/* ─── RadioGroup ─── */\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\n/* ─── SubTrigger ─── */\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center border-2 border-transparent bg-background px-2 py-1.5 text-sm font-sans outline-hidden focus:border-border gap-2 [&_svg]:pointer-events-none [&_svg]:w-4 [&_svg]:h-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = \"DropdownMenu.SubTrigger\";\n\n/* ─── SubContent ─── */\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden border-2 border-border bg-background p-1 font-sans text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName = \"DropdownMenu.SubContent\";\n\n/* ─── Content ─── */\n\nconst DropdownMenuContent = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden border-2 border-border bg-background p-1 font-sans text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = \"DropdownMenu.Content\";\n\n/* ─── Item ─── */\n\nconst DropdownMenuItem = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative gap-2 [&_svg]:pointer-events-none [&_svg]:w-4 [&_svg]:h-4 [&_svg]:shrink-0 flex cursor-default select-none items-center border-2 border-transparent bg-background px-2 py-1.5 text-sm font-sans outline-hidden transition-colors focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = \"DropdownMenu.Item\";\n\n/* ─── CheckboxItem ─── */\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent gap-2 py-1.5 pl-8 pr-2 text-sm font-sans text-foreground outline-hidden transition-colors focus:border-border 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=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = \"DropdownMenu.CheckboxItem\";\n\n/* ─── RadioItem ─── */\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent gap-2 py-1.5 pl-8 pr-2 text-sm font-sans outline-hidden transition-colors focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = \"DropdownMenu.RadioItem\";\n\n/* ─── Label ─── */\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-head\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = \"DropdownMenu.Label\";\n\n/* ─── Separator ─── */\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-0.5 bg-border\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = \"DropdownMenu.Separator\";\n\n/* ─── Shortcut ─── */\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n \"ml-auto text-xs font-sans tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n);\nDropdownMenuShortcut.displayName = \"DropdownMenu.Shortcut\";\n\n/* ─── Composite export ─── */\n\nconst DropdownMenuComponent = Object.assign(DropdownMenuRoot, {\n Trigger: DropdownMenuTrigger,\n Content: DropdownMenuContent,\n Item: DropdownMenuItem,\n CheckboxItem: DropdownMenuCheckboxItem,\n RadioItem: DropdownMenuRadioItem,\n Label: DropdownMenuLabel,\n Separator: DropdownMenuSeparator,\n Shortcut: DropdownMenuShortcut,\n Group: DropdownMenuGroup,\n Portal: DropdownMenuPortal,\n Sub: DropdownMenuSub,\n SubContent: DropdownMenuSubContent,\n SubTrigger: DropdownMenuSubTrigger,\n RadioGroup: DropdownMenuRadioGroup,\n});\n\nexport { DropdownMenuComponent as DropdownMenu };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Table ─── */\n\nconst TableRoot = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\n \"w-full caption-bottom border-2 border-border text-sm\",\n className,\n )}\n {...props}\n />\n </div>\n));\nTableRoot.displayName = \"Table\";\n\n/* ─── Header ─── */\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\"[&_tr]:border-b-2 [&_tr]:border-border\", className)}\n {...props}\n />\n));\nTableHeader.displayName = \"Table.Header\";\n\n/* ─── Body ─── */\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nTableBody.displayName = \"Table.Body\";\n\n/* ─── Footer ─── */\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t-2 border-border bg-muted font-sans text-foreground last:[&>tr]:border-b-0\",\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = \"Table.Footer\";\n\n/* ─── Row ─── */\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b-2 border-border transition-colors text-foreground bg-background font-sans data-[state=selected]:bg-muted data-[state=selected]:text-foreground\",\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = \"Table.Row\";\n\n/* ─── Head ─── */\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-head text-foreground [&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = \"Table.Head\";\n\n/* ─── Cell ─── */\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-4 align-middle [&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = \"Table.Cell\";\n\n/* ─── Caption ─── */\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground font-sans\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"Table.Caption\";\n\n/* ─── Composite export ─── */\n\nconst TableComponent = Object.assign(TableRoot, {\n Header: TableHeader,\n Body: TableBody,\n Footer: TableFooter,\n Row: TableRow,\n Head: TableHead,\n Cell: TableCell,\n Caption: TableCaption,\n});\n\nexport { TableComponent as Table };\n","\"use client\";\n\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst MenubarRoot = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Root\n ref={ref}\n className={cn(\n \"flex h-11 items-center space-x-1 border-2 border-border bg-background p-1 font-sans\",\n className,\n )}\n {...props}\n />\n));\nMenubarRoot.displayName = \"Menubar\";\n\n/* ─── Menu ─── */\n\nconst MenubarMenu = MenubarPrimitive.Menu;\n\n/* ─── Trigger ─── */\n\nconst MenubarTrigger = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center text-foreground px-3 py-1.5 text-sm border-2 border-transparent font-head outline-hidden focus:border-border data-[state=open]:border-border\",\n className,\n )}\n {...props}\n />\n));\nMenubarTrigger.displayName = \"Menubar.Trigger\";\n\n/* ─── Content ─── */\n\nconst MenubarContent = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(({ className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props }, ref) => (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[12rem] overflow-hidden border-2 border-border bg-background p-1 text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n </MenubarPrimitive.Portal>\n));\nMenubarContent.displayName = \"Menubar.Content\";\n\n/* ─── Group ─── */\n\nconst MenubarGroup = MenubarPrimitive.Group;\n\n/* ─── Portal ─── */\n\nconst MenubarPortal = MenubarPrimitive.Portal;\n\n/* ─── Sub ─── */\n\nconst MenubarSub = MenubarPrimitive.Sub;\n\n/* ─── RadioGroup ─── */\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup;\n\n/* ─── Item ─── */\n\nconst MenubarItem = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent px-2 py-1.5 text-sm font-sans outline-hidden focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nMenubarItem.displayName = \"Menubar.Item\";\n\n/* ─── CheckboxItem ─── */\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <MenubarPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent py-1.5 pl-8 pr-2 text-sm font-sans outline-hidden focus:border-border 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 <Check className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n));\nMenubarCheckboxItem.displayName = \"Menubar.CheckboxItem\";\n\n/* ─── RadioItem ─── */\n\nconst MenubarRadioItem = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <MenubarPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent py-1.5 pl-8 pr-2 text-sm font-sans outline-hidden focus:border-border 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 <Circle className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n));\nMenubarRadioItem.displayName = \"Menubar.RadioItem\";\n\n/* ─── Label ─── */\n\nconst MenubarLabel = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-head\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nMenubarLabel.displayName = \"Menubar.Label\";\n\n/* ─── Separator ─── */\n\nconst MenubarSeparator = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-0.5 bg-border\", className)}\n {...props}\n />\n));\nMenubarSeparator.displayName = \"Menubar.Separator\";\n\n/* ─── Shortcut ─── */\n\nconst MenubarShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n);\nMenubarShortcut.displayName = \"Menubar.Shortcut\";\n\n/* ─── SubTrigger ─── */\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <MenubarPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center border-2 border-transparent px-3 py-1.5 text-sm font-sans outline-hidden focus:border-border data-[state=open]:border-border\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto size-4\" />\n </MenubarPrimitive.SubTrigger>\n));\nMenubarSubTrigger.displayName = \"Menubar.SubTrigger\";\n\n/* ─── SubContent ─── */\n\nconst MenubarSubContent = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden border-2 border-border bg-background p-1 font-sans text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n));\nMenubarSubContent.displayName = \"Menubar.SubContent\";\n\n/* ─── Composite export ─── */\n\nconst MenubarComponent = Object.assign(MenubarRoot, {\n Menu: MenubarMenu,\n Trigger: MenubarTrigger,\n Content: MenubarContent,\n Item: MenubarItem,\n Separator: MenubarSeparator,\n Label: MenubarLabel,\n CheckboxItem: MenubarCheckboxItem,\n RadioGroup: MenubarRadioGroup,\n RadioItem: MenubarRadioItem,\n Portal: MenubarPortal,\n SubContent: MenubarSubContent,\n SubTrigger: MenubarSubTrigger,\n Group: MenubarGroup,\n Sub: MenubarSub,\n Shortcut: MenubarShortcut,\n});\n\nexport { MenubarComponent as Menubar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\ninterface INavigationMenuProps\n extends React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root> {\n viewport?: boolean;\n}\n\nconst NavigationMenuRoot = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Root>,\n INavigationMenuProps\n>(({ className, children, viewport = true, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"group/navigation-menu relative z-10 flex max-w-max font-head border-2 border-border p-1 bg-background flex-1 items-center justify-center\",\n className,\n )}\n data-viewport={viewport}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n));\nNavigationMenuRoot.displayName = \"NavigationMenu\";\n\n/* ─── List ─── */\n\nconst NavigationMenuList = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"group flex flex-1 list-none items-center font-head justify-center space-x-1\",\n className,\n )}\n {...props}\n />\n));\nNavigationMenuList.displayName = \"NavigationMenu.List\";\n\n/* ─── Item ─── */\n\nconst NavigationMenuItem = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Item\n ref={ref}\n className={cn(\"relative\", className)}\n {...props}\n />\n));\nNavigationMenuItem.displayName = \"NavigationMenu.Item\";\n\n/* ─── Trigger Style ─── */\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-10 w-max items-center justify-center bg-background text-foreground px-4 py-2 text-sm font-head transition-colors hover:bg-muted focus:outline-none disabled:pointer-events-none disabled:opacity-50\",\n);\n\n/* ─── Trigger ─── */\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDown\n className=\"relative top-[1px] ml-2 size-4 transition duration-200 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n));\nNavigationMenuTrigger.displayName = \"NavigationMenu.Trigger\";\n\n/* ─── Content ─── */\n\nconst NavigationMenuContent = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\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 className,\n )}\n {...props}\n />\n));\nNavigationMenuContent.displayName = \"NavigationMenu.Content\";\n\n/* ─── Link ─── */\n\nconst NavigationMenuLink = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Link>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Link>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Link\n ref={ref}\n className={cn(\n \"block select-none space-y-1 p-2 leading-none no-underline outline-none transition-colors hover:bg-muted focus-visible:ring-2 focus-visible:ring-primary focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n));\nNavigationMenuLink.displayName = \"NavigationMenu.Link\";\n\n/* ─── Viewport ─── */\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className=\"absolute top-full left-0 isolate z-50 flex justify-center\">\n <NavigationMenuPrimitive.Viewport\n ref={ref}\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden border-2 border-border bg-background text-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n {...props}\n />\n </div>\n));\nNavigationMenuViewport.displayName = \"NavigationMenu.Viewport\";\n\n/* ─── Indicator ─── */\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end font-head justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className,\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 bg-border\" />\n </NavigationMenuPrimitive.Indicator>\n));\nNavigationMenuIndicator.displayName = \"NavigationMenu.Indicator\";\n\n/* ─── Composite export ─── */\n\nconst NavigationMenuComponent = Object.assign(NavigationMenuRoot, {\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Trigger: NavigationMenuTrigger,\n Content: NavigationMenuContent,\n Link: NavigationMenuLink,\n Viewport: NavigationMenuViewport,\n Indicator: NavigationMenuIndicator,\n});\n\nexport {\n NavigationMenuComponent as NavigationMenu,\n navigationMenuTriggerStyle,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Group,\n Panel,\n Separator,\n type GroupProps,\n type PanelProps,\n type SeparatorProps,\n} from \"react-resizable-panels\";\nimport { GripVertical } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── PanelGroup ─── */\n\ninterface ResizablePanelGroupProps extends GroupProps {\n /** Alias for `orientation` – kept for backward compatibility. */\n direction?: GroupProps[\"orientation\"];\n}\n\nconst ResizablePanelGroup = ({\n className,\n direction,\n orientation,\n ...props\n}: ResizablePanelGroupProps) => (\n <Group\n orientation={orientation ?? direction}\n className={cn(\n \"flex h-full w-full font-sans data-[panel-group-direction=vertical]:flex-col\",\n className,\n )}\n {...props}\n />\n);\nResizablePanelGroup.displayName = \"Resizable.PanelGroup\";\n\n/* ─── Panel ─── */\n\nconst ResizablePanel = ({\n className,\n ...props\n}: PanelProps) => (\n <Panel\n className={cn(className)}\n {...props}\n />\n);\nResizablePanel.displayName = \"Resizable.Panel\";\n\n/* ─── Handle ─── */\n\ninterface IResizableHandleProps extends SeparatorProps {\n withHandle?: boolean;\n}\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: IResizableHandleProps) => (\n <Separator\n className={cn(\n \"relative flex w-0.5 items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-0.5 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-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center border-2 border-border bg-muted\">\n <GripVertical className=\"size-2.5\" />\n </div>\n )}\n </Separator>\n);\nResizableHandle.displayName = \"Resizable.Handle\";\n\n/* ─── Composite export ─── */\n\nconst ResizableComponent = Object.assign(ResizablePanelGroup, {\n Panel: ResizablePanel,\n Handle: ResizableHandle,\n});\n\nexport { ResizableComponent as Resizable };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\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 <Chart.Container />\");\n }\n\n return context;\n}\n\nexport interface IChartContainerProps\n extends React.HTMLAttributes<HTMLDivElement> {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n}\n\nconst ChartContainer = React.forwardRef<HTMLDivElement, IChartContainerProps>(\n ({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n ref={ref}\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center text-xs\",\n \"[&_.recharts-cartesian-axis-tick_text]:fill-foreground\",\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border\",\n \"[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border\",\n \"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-foreground\",\n \"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-foreground\",\n \"[&_.recharts-dot[stroke='#fff']]:stroke-transparent\",\n \"[&_.recharts-sector]:outline-hidden\",\n \"[&_.recharts-sector[stroke='#fff']]:stroke-border\",\n \"[&_.recharts-surface]:outline-hidden\",\n \"[&_.recharts-layer_path]:[fill-opacity:1]\",\n \"[&_.recharts-layer_path]:[stroke-width:2]\",\n \"[&_.recharts-layer_path]:[stroke:var(--color-border)]\",\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);\nChartContainer.displayName = \"Chart.Container\";\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\nexport interface IChartTooltipContentProps\n extends React.HTMLAttributes<HTMLDivElement> {\n active?: boolean;\n payload?: Array<Record<string, unknown>>;\n label?: string;\n labelFormatter?: (value: unknown, payload: Array<Record<string, unknown>>) => React.ReactNode;\n labelClassName?: string;\n formatter?: (value: unknown, name: string, item: Record<string, unknown>, index: number, payload: unknown) => React.ReactNode;\n color?: string;\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n}\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n IChartTooltipContentProps\n>(\n (\n {\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 },\n ref,\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[0] as Record<string, unknown>;\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-head\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return (\n <div className={cn(\"font-sans font-medium\", labelClassName)}>\n {value}\n </div>\n );\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"border-2 border-border bg-background grid min-w-[8rem] items-start gap-1.5 p-2.5 font-sans text-xs shadow-md\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item: Record<string, unknown>, index: number) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const itemPayload = item.payload as Record<string, unknown> | undefined;\n const indicatorColor = color || itemPayload?.fill || item.color;\n\n return (\n <div\n key={item.dataKey as string}\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 as string, item, index, itemPayload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0\",\n indicator === \"dot\" && \"size-2.5 border-2 border-border\",\n indicator === \"line\" && \"w-1\",\n indicator === \"dashed\" && \"w-0 border-[1.5px] border-dashed bg-transparent\",\n nestLabel && indicator === \"dashed\" && \"my-0.5\",\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n backgroundColor: indicator !== \"dashed\" ? (indicatorColor as string) : undefined,\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 as string)}\n </span>\n </div>\n {item.value != null && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {String(item.value)}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n },\n);\nChartTooltipContent.displayName = \"Chart.TooltipContent\";\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nexport interface IChartLegendContentProps\n extends React.HTMLAttributes<HTMLDivElement> {\n hideIcon?: boolean;\n nameKey?: string;\n payload?: Array<{ value?: string; color?: string; dataKey?: string }>;\n verticalAlign?: \"top\" | \"bottom\";\n}\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n IChartLegendContentProps\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref,\n ) => {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4 font-sans text-sm\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload.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-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 border-2 border-border shrink-0\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n },\n);\nChartLegendContent.displayName = \"Chart.LegendContent\";\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\nconst ChartRoot = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n (props, ref) => <div ref={ref} {...props} />,\n);\nChartRoot.displayName = \"Chart\";\n\nconst ChartComponent = Object.assign(ChartRoot, {\n Container: ChartContainer,\n Tooltip: ChartTooltip,\n TooltipContent: ChartTooltipContent,\n Legend: ChartLegend,\n LegendContent: ChartLegendContent,\n Style: ChartStyle,\n});\n\nexport { ChartComponent as Chart, useChart };\nexport type { ChartConfig as IChartConfig };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useTheme } from \"@/components/ThemeProvider\";\nimport { Toaster as SonnerToaster, type ToasterProps } from \"sonner\";\n\nexport type ISonnerProps = ToasterProps;\n\nconst Toaster = React.forwardRef<HTMLDivElement, ISonnerProps>(\n ({ ...props }, _ref) => {\n const { theme = \"system\" } = useTheme() as { theme?: string };\n\n return (\n <SonnerToaster\n theme={theme as ToasterProps[\"theme\"]}\n style={{ fontFamily: \"inherit\", overflowWrap: \"anywhere\" }}\n toastOptions={{\n unstyled: true,\n classNames: {\n toast:\n \"bg-background text-foreground border-border border-2 font-head shadow-md text-[13px] flex items-center gap-2.5 p-4 w-[356px] [&:has(button)]:justify-between\",\n description: \"font-sans\",\n actionButton:\n \"font-sans border-2 text-[12px] h-6 px-2 bg-primary text-primary-foreground border-border shrink-0\",\n cancelButton:\n \"font-sans border-2 text-[12px] h-6 px-2 bg-muted text-foreground border-border shrink-0\",\n error: \"bg-error text-error-foreground border-error-foreground\",\n loading:\n \"[&[data-sonner-toast]_[data-icon]]:flex [&[data-sonner-toast]_[data-icon]]:size-4 [&[data-sonner-toast]_[data-icon]]:relative [&[data-sonner-toast]_[data-icon]]:justify-start [&[data-sonner-toast]_[data-icon]]:items-center [&[data-sonner-toast]_[data-icon]]:flex-shrink-0\",\n },\n }}\n {...props}\n />\n );\n },\n);\nToaster.displayName = \"Toaster\";\n\nexport { Toaster };\n","\"use client\";\n\nimport { createContext, useContext, useEffect, useState, useCallback, useMemo } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeProviderState {\n theme: Theme;\n resolvedTheme: \"light\" | \"dark\";\n setTheme: (theme: Theme) => void;\n}\n\nconst ThemeContext = createContext<ThemeProviderState | undefined>(undefined);\n\nconst STORAGE_KEY = \"substrateui-theme\";\n\nfunction getSystemTheme(): \"light\" | \"dark\" {\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\nfunction applyClass(resolved: \"light\" | \"dark\") {\n document.documentElement.classList.remove(\"light\", \"dark\");\n document.documentElement.classList.add(resolved);\n}\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = STORAGE_KEY,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === \"undefined\") return defaultTheme;\n return (localStorage.getItem(storageKey) as Theme) || defaultTheme;\n });\n\n const [systemTheme, setSystemTheme] = useState<\"light\" | \"dark\">(getSystemTheme);\n\n const resolvedTheme = theme === \"system\" ? systemTheme : theme;\n\n // Sync the class on the document element whenever resolvedTheme changes\n useEffect(() => {\n applyClass(resolvedTheme);\n }, [resolvedTheme]);\n\n // Listen for OS theme changes\n useEffect(() => {\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (e: MediaQueryListEvent) => {\n setSystemTheme(e.matches ? \"dark\" : \"light\");\n };\n mq.addEventListener(\"change\", handler);\n return () => mq.removeEventListener(\"change\", handler);\n }, []);\n\n const setTheme = useCallback(\n (newTheme: Theme) => {\n localStorage.setItem(storageKey, newTheme);\n setThemeState(newTheme);\n },\n [storageKey],\n );\n\n const value = useMemo(\n () => ({ theme, resolvedTheme, setTheme }),\n [theme, resolvedTheme, setTheme],\n );\n\n return (\n <ThemeContext.Provider value={value}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Marquee ─── */\n\nexport interface IMarqueeProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Items to scroll across the marquee */\n items: string[];\n /** Speed of the animation in seconds (default: 20) */\n speed?: number;\n /** Pause on hover (default: false) */\n pauseOnHover?: boolean;\n /** Reverse direction (default: false) */\n reverse?: boolean;\n}\n\nconst Marquee = React.forwardRef<HTMLDivElement, IMarqueeProps>(\n (\n {\n items,\n speed = 20,\n pauseOnHover = false,\n reverse = false,\n className,\n ...props\n },\n ref,\n ) => {\n const direction = reverse ? \"reverse\" : \"normal\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex w-full overflow-x-hidden border-y-2 border-border bg-secondary text-secondary-foreground font-sans\",\n pauseOnHover && \"hover:[&>div]:animation-play-state-paused\",\n className,\n )}\n {...props}\n >\n <div\n className=\"flex whitespace-nowrap py-12 animate-marquee\"\n style={{\n animationDuration: `${speed}s`,\n animationDirection: direction,\n }}\n >\n {items.map((item, i) => (\n <span key={`${item}-${i}`} className=\"mx-4 text-4xl font-head\">\n {item}\n </span>\n ))}\n </div>\n\n <div\n className=\"flex absolute top-0 whitespace-nowrap py-12 animate-marquee2\"\n style={{\n animationDuration: `${speed}s`,\n animationDirection: direction,\n }}\n >\n {items.map((item, i) => (\n <span key={`${item}-${i}`} className=\"mx-4 text-4xl font-head\">\n {item}\n </span>\n ))}\n </div>\n </div>\n );\n },\n);\nMarquee.displayName = \"Marquee\";\n\nexport { Marquee };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── ImageCard ─── */\n\nexport interface IImageCardProps extends React.HTMLAttributes<HTMLElement> {\n /** URL of the image to display */\n imageUrl: string;\n /** Caption text below the image */\n caption: string;\n /** Alt text for the image (defaults to caption) */\n alt?: string;\n}\n\nconst ImageCard = React.forwardRef<HTMLElement, IImageCardProps>(\n ({ imageUrl, caption, alt, className, ...props }, ref) => (\n <figure\n ref={ref}\n className={cn(\n \"w-[250px] overflow-hidden border-2 border-border bg-card text-card-foreground font-sans shadow-md\",\n className,\n )}\n {...props}\n >\n <img\n className=\"w-full aspect-4/3 object-cover\"\n src={imageUrl}\n alt={alt ?? caption}\n />\n <figcaption className=\"border-t-2 border-border p-4 font-head text-sm\">\n {caption}\n </figcaption>\n </figure>\n ),\n);\nImageCard.displayName = \"ImageCard\";\n\nexport { ImageCard };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { OTPInput, OTPInputContext, type OTPInputProps } from \"input-otp\";\nimport { Dot } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type IInputOTPProps = OTPInputProps & {\n containerClassName?: string;\n};\n\nconst InputOTPRoot = React.forwardRef<HTMLInputElement, IInputOTPProps>(\n ({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\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);\nInputOTPRoot.displayName = \"InputOTP\";\n\nexport type IInputOTPGroupProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst InputOTPGroup = React.forwardRef<HTMLDivElement, IInputOTPGroupProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center\", className)}\n {...props}\n />\n ),\n);\nInputOTPGroup.displayName = \"InputOTP.Group\";\n\nexport interface IInputOTPSlotProps\n extends React.HTMLAttributes<HTMLDivElement> {\n index: number;\n}\n\nconst InputOTPSlot = React.forwardRef<HTMLDivElement, IInputOTPSlotProps>(\n ({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } =\n inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex size-10 items-center justify-center border-y-2 border-r-2 border-border bg-background font-sans text-sm text-foreground shadow-md transition-all first:border-l-2\",\n isActive && \"z-10 ring-2 ring-primary\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n );\n },\n);\nInputOTPSlot.displayName = \"InputOTP.Slot\";\n\nexport type IInputOTPSeparatorProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst InputOTPSeparator = React.forwardRef<\n HTMLDivElement,\n IInputOTPSeparatorProps\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Dot className=\"size-4\" />\n </div>\n));\nInputOTPSeparator.displayName = \"InputOTP.Separator\";\n\nconst InputOTPComponent = Object.assign(InputOTPRoot, {\n Group: InputOTPGroup,\n Slot: InputOTPSlot,\n Separator: InputOTPSeparator,\n});\n\nexport { InputOTPComponent as InputOTP };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport { cn } from \"@/lib/utils\";\nimport { buttonVariants } from \"./Button\";\n\n/* ─── Root ─── */\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\n/* ─── Trigger ─── */\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\n/* ─── Portal ─── */\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\n/* ─── Overlay ─── */\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-overlay data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogOverlay.displayName = \"AlertDialog.Overlay\";\n\n/* ─── Content ─── */\n\nexport type IAlertDialogContentProps =\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>;\n\nconst AlertDialogContent = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Content>,\n IAlertDialogContentProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 border-2 border-border bg-background p-6 shadow-lg duration-200 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 sm:max-w-lg\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = \"AlertDialog.Content\";\n\n/* ─── Header ─── */\n\nconst AlertDialogHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n));\nAlertDialogHeader.displayName = \"AlertDialog.Header\";\n\n/* ─── Footer ─── */\n\nconst AlertDialogFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col-reverse gap-3 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogFooter.displayName = \"AlertDialog.Footer\";\n\n/* ─── Title ─── */\n\nconst AlertDialogTitle = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-head\", className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = \"AlertDialog.Title\";\n\n/* ─── Description ─── */\n\nconst AlertDialogDescription = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm font-sans text-foreground\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName = \"AlertDialog.Description\";\n\n/* ─── Action ─── */\n\nconst AlertDialogAction = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = \"AlertDialog.Action\";\n\n/* ─── Cancel ─── */\n\nconst AlertDialogCancel = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(buttonVariants({ variant: \"secondary\" }), className)}\n {...props}\n />\n));\nAlertDialogCancel.displayName = \"AlertDialog.Cancel\";\n\n/* ─── Composite export ─── */\n\nconst AlertDialogComponent = Object.assign(AlertDialog, {\n Trigger: AlertDialogTrigger,\n Content: AlertDialogContent,\n Header: AlertDialogHeader,\n Footer: AlertDialogFooter,\n Title: AlertDialogTitle,\n Description: AlertDialogDescription,\n Action: AlertDialogAction,\n Cancel: AlertDialogCancel,\n});\n\nexport { AlertDialogComponent as AlertDialog };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\">\n>(({ ...props }, ref) => (\n <nav ref={ref} aria-label=\"breadcrumb\" {...props} />\n));\nBreadcrumb.displayName = \"Breadcrumb\";\n\n/* ─── List ─── */\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 text-sm font-sans break-words text-foreground sm:gap-2.5\",\n className,\n )}\n {...props}\n />\n));\nBreadcrumbList.displayName = \"Breadcrumb.List\";\n\n/* ─── Item ─── */\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n));\nBreadcrumbItem.displayName = \"Breadcrumb.Item\";\n\n/* ─── Link ─── */\n\ninterface IBreadcrumbLinkProps\n extends React.ComponentPropsWithoutRef<\"a\"> {\n asChild?: boolean;\n}\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, IBreadcrumbLinkProps>(\n ({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\";\n return (\n <Comp\n ref={ref}\n className={cn(\"hover:underline decoration-primary underline-offset-4\", className)}\n {...props}\n />\n );\n },\n);\nBreadcrumbLink.displayName = \"Breadcrumb.Link\";\n\n/* ─── Page ─── */\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-head\", className)}\n {...props}\n />\n));\nBreadcrumbPage.displayName = \"Breadcrumb.Page\";\n\n/* ─── Separator ─── */\n\nconst BreadcrumbSeparator = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ children, className, ...props }, ref) => (\n <li\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n));\nBreadcrumbSeparator.displayName = \"Breadcrumb.Separator\";\n\n/* ─── Ellipsis ─── */\n\nconst BreadcrumbEllipsis = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\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));\nBreadcrumbEllipsis.displayName = \"Breadcrumb.Ellipsis\";\n\n/* ─── Composite export ─── */\n\nconst BreadcrumbComponent = Object.assign(Breadcrumb, {\n List: BreadcrumbList,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n Page: BreadcrumbPage,\n Separator: BreadcrumbSeparator,\n Ellipsis: BreadcrumbEllipsis,\n});\n\nexport { BreadcrumbComponent as Breadcrumb };\nexport type { IBreadcrumbLinkProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { buttonVariants } from \"./Button\";\n\nexport type ICalendarProps = React.ComponentProps<typeof DayPicker>;\n\nconst Calendar = React.forwardRef<HTMLDivElement, ICalendarProps>(\n ({ className, classNames, showOutsideDays = true, ...props }, ref) => (\n <div ref={ref}>\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"border-2 border-border bg-background p-3 font-head shadow-md\",\n className,\n )}\n classNames={{\n months: \"flex flex-col sm:flex-row gap-2\",\n month: \"flex flex-col gap-4\",\n month_caption:\n \"flex justify-center pt-1 relative items-center w-full text-foreground\",\n caption_label: \"text-sm font-head\",\n nav: \"gap-1 flex items-center\",\n button_previous: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon\" }),\n \"size-7 bg-transparent p-0 absolute left-1\",\n ),\n button_next: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon\" }),\n \"size-7 bg-transparent p-0 absolute right-1\",\n ),\n month_grid: \"w-full border-collapse space-y-1\",\n weekdays: \"flex\",\n weekday: \"text-muted-foreground w-9 font-sans text-[0.8rem]\",\n week: \"flex w-full mt-2\",\n day: \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20\",\n day_button: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon\" }),\n \"size-9 p-0 font-sans aria-selected:opacity-100\",\n ),\n selected: \"bg-primary text-primary-foreground!\",\n today: \"bg-muted text-foreground!\",\n outside: \"text-muted-foreground opacity-50\",\n disabled: \"text-muted-foreground opacity-50\",\n range_middle:\n \"aria-selected:bg-primary/50! aria-selected:text-primary-foreground\",\n range_start:\n \"aria-selected:bg-primary! aria-selected:text-primary-foreground\",\n range_end:\n \"aria-selected:bg-primary! aria-selected:text-primary-foreground\",\n hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation, className: chevronClassName, ...chevronProps }) => {\n const Icon = orientation === \"left\" ? ChevronLeft : ChevronRight;\n return (\n <Icon\n className={cn(\"size-4\", chevronClassName)}\n {...chevronProps}\n />\n );\n },\n }}\n {...props}\n />\n </div>\n ),\n);\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\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\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"./Button\";\nimport type { IButtonProps } from \"./Button\";\n\n/* ─── Types ─── */\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\nexport interface ICarouselProps {\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 plugins?: CarouselPlugin;\n} & ICarouselProps;\n\n/* ─── Context ─── */\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n return context;\n}\n\n/* ─── Root ─── */\n\nconst CarouselRoot = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & ICarouselProps\n>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref,\n ) => {\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((emblaApi: CarouselApi) => {\n if (!emblaApi) return;\n setCanScrollPrev(emblaApi.canScrollPrev());\n setCanScrollNext(emblaApi.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 return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n 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 ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n },\n);\nCarouselRoot.displayName = \"Carousel\";\n\n/* ─── Content ─── */\n\nconst CarouselContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className,\n )}\n {...props}\n />\n </div>\n );\n});\nCarouselContent.displayName = \"Carousel.Content\";\n\n/* ─── Item ─── */\n\nconst CarouselItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel();\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n});\nCarouselItem.displayName = \"Carousel.Item\";\n\n/* ─── Previous ─── */\n\nconst CarouselPrevious = React.forwardRef<HTMLButtonElement, IButtonProps>(\n ({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8\",\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);\nCarouselPrevious.displayName = \"Carousel.Previous\";\n\n/* ─── Next ─── */\n\nconst CarouselNext = React.forwardRef<HTMLButtonElement, IButtonProps>(\n ({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -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);\nCarouselNext.displayName = \"Carousel.Next\";\n\n/* ─── Composite export ─── */\n\nconst CarouselComponent = Object.assign(CarouselRoot, {\n Content: CarouselContent,\n Item: CarouselItem,\n Previous: CarouselPrevious,\n Next: CarouselNext,\n});\n\nexport { CarouselComponent as Carousel, useCarousel };\nexport type { CarouselApi };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { buttonVariants } from \"@/components/ui/Button\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst PaginationRoot = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\">\n>(({ className, ...props }, ref) => (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n));\nPaginationRoot.displayName = \"Pagination\";\n\n/* ─── Content ─── */\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentPropsWithoutRef<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n));\nPaginationContent.displayName = \"Pagination.Content\";\n\n/* ─── Item ─── */\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n));\nPaginationItem.displayName = \"Pagination.Item\";\n\n/* ─── Link ─── */\n\ninterface IPaginationLinkProps\n extends React.ComponentPropsWithoutRef<\"a\"> {\n isActive?: boolean;\n size?: \"sm\" | \"md\" | \"lg\" | \"icon\";\n}\n\nconst PaginationLink = React.forwardRef<\n HTMLAnchorElement,\n IPaginationLinkProps\n>(({ className, isActive, size = \"icon\", ...props }, ref) => (\n <a\n ref={ref}\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: \"ghost\",\n size,\n }),\n \"border-2 border-border\",\n isActive && \"bg-primary text-primary-foreground\",\n className,\n )}\n {...props}\n />\n));\nPaginationLink.displayName = \"Pagination.Link\";\n\n/* ─── Previous ─── */\n\nconst PaginationPrevious = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<typeof PaginationLink>\n>(({ className, ...props }, ref) => (\n <PaginationLink\n ref={ref}\n aria-label=\"Go to previous page\"\n size=\"md\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"size-4\" />\n <span>Previous</span>\n </PaginationLink>\n));\nPaginationPrevious.displayName = \"Pagination.Previous\";\n\n/* ─── Next ─── */\n\nconst PaginationNext = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<typeof PaginationLink>\n>(({ className, ...props }, ref) => (\n <PaginationLink\n ref={ref}\n aria-label=\"Go to next page\"\n size=\"md\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"size-4\" />\n </PaginationLink>\n));\nPaginationNext.displayName = \"Pagination.Next\";\n\n/* ─── Ellipsis ─── */\n\nconst PaginationEllipsis = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n aria-hidden\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 pages</span>\n </span>\n));\nPaginationEllipsis.displayName = \"Pagination.Ellipsis\";\n\n/* ─── Composite export ─── */\n\nconst Pagination = Object.assign(PaginationRoot, {\n Content: PaginationContent,\n Item: PaginationItem,\n Link: PaginationLink,\n Previous: PaginationPrevious,\n Next: PaginationNext,\n Ellipsis: PaginationEllipsis,\n});\n\nexport { Pagination };\nexport type { IPaginationLinkProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst Sheet = SheetPrimitive.Root;\nconst SheetTrigger = SheetPrimitive.Trigger;\nconst SheetClose = SheetPrimitive.Close;\n\n/* ─── Overlay ─── */\n\nconst SheetOverlay = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-overlay data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n className,\n )}\n {...props}\n />\n));\nSheetOverlay.displayName = \"Sheet.Overlay\";\n\n/* ─── Content ─── */\n\nconst sheetContentVariants = cva(\n \"fixed z-50 flex flex-col gap-4 border-2 border-border bg-background transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l-2 sm:max-w-sm data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right\",\n left:\n \"inset-y-0 left-0 h-full w-3/4 border-r-2 sm:max-w-sm data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left\",\n top:\n \"inset-x-0 top-0 h-auto border-b-2 data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 h-auto border-t-2 data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n },\n);\n\nexport interface ISheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetContentVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Content>,\n ISheetContentProps\n>(({ children, side = \"right\", className, ...props }, ref) => (\n <SheetPrimitive.Portal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetContentVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 cursor-pointer ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPrimitive.Portal>\n));\nSheetContent.displayName = \"Sheet.Content\";\n\n/* ─── Header ─── */\n\nconst SheetHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n));\nSheetHeader.displayName = \"Sheet.Header\";\n\n/* ─── Title ─── */\n\nconst SheetTitle = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"font-head text-lg text-foreground\", className)}\n {...props}\n />\n));\nSheetTitle.displayName = \"Sheet.Title\";\n\n/* ─── Description ─── */\n\nconst SheetDescription = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"font-sans text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nSheetDescription.displayName = \"Sheet.Description\";\n\n/* ─── Footer ─── */\n\nconst SheetFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"mt-auto flex flex-col gap-3 p-4 border-t-2 border-border\",\n className,\n )}\n {...props}\n />\n));\nSheetFooter.displayName = \"Sheet.Footer\";\n\n/* ─── Composite export ─── */\n\nconst SheetComponent = Object.assign(Sheet, {\n Trigger: SheetTrigger,\n Close: SheetClose,\n Content: SheetContent,\n Header: SheetHeader,\n Title: SheetTitle,\n Description: SheetDescription,\n Footer: SheetFooter,\n});\n\nexport { SheetComponent as Sheet, sheetContentVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * 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\";\nimport { Label } from \"@/components/ui/Label\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst Form = FormProvider;\n\n/* ─── Field context ─── */\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\nfunction FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({ ...props }: ControllerProps<TFieldValues, TName>) {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n}\nFormField.displayName = \"Form.Field\";\n\n/* ─── useFormField hook ─── */\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\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 <Form.Field>\");\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\n/* ─── Item ─── */\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n ref={ref}\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = \"Form.Item\";\n\n/* ─── Label ─── */\n\nconst FormLabel = React.forwardRef<\n React.ComponentRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n data-error={!!error}\n className={cn(\"font-head\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = \"Form.Label\";\n\n/* ─── Control ─── */\n\nconst FormControl = React.forwardRef<\n React.ComponentRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = \"Form.Control\";\n\n/* ─── Description ─── */\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"font-sans text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = \"Form.Description\";\n\n/* ─── Message ─── */\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"font-sans text-sm text-red-500\", className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = \"Form.Message\";\n\n/* ─── Composite export ─── */\n\nconst FormComponent = Object.assign(Form, {\n Field: FormField,\n Item: FormItem,\n Label: FormLabel,\n Control: FormControl,\n Description: FormDescription,\n Message: FormMessage,\n});\n\nexport { FormComponent as Form, useFormField };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Dialog } from \"./Dialog\";\n\n/* ─── Command ─── */\n\nconst CommandRoot = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden border-2 border-border bg-background font-sans text-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommandRoot.displayName = \"Command\";\n\n/* ─── Dialog ─── */\n\ninterface ICommandDialogProps\n extends React.ComponentPropsWithoutRef<typeof Dialog> {\n title?: string;\n description?: string;\n}\n\nconst CommandDialog = ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n title = \"Command Palette\",\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n description = \"Search for a command to run...\",\n children,\n ...props\n}: ICommandDialogProps) => (\n <Dialog {...props}>\n <Dialog.Content className=\"overflow-hidden p-0 border-0\">\n <CommandRoot className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-head [&_[cmdk-group-heading]]:mb-1 [&_[cmdk-group]]:px-2 [&_[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 </CommandRoot>\n </Dialog.Content>\n </Dialog>\n);\nCommandDialog.displayName = \"Command.Dialog\";\n\n/* ─── Input ─── */\n\nconst CommandInput = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex h-9 gap-2 items-center border-b-2 border-border px-3\">\n <Search className=\"size-4 shrink-0\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\nCommandInput.displayName = \"Command.Input\";\n\n/* ─── List ─── */\n\nconst CommandList = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n />\n));\nCommandList.displayName = \"Command.List\";\n\n/* ─── Empty ─── */\n\nconst CommandEmpty = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className={cn(\"py-6 text-center text-sm font-sans\", className)}\n {...props}\n />\n));\nCommandEmpty.displayName = \"Command.Empty\";\n\n/* ─── Group ─── */\n\nconst CommandGroup = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"text-foreground overflow-hidden p-2 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-base [&_[cmdk-group-heading]]:font-head\",\n className,\n )}\n {...props}\n />\n));\nCommandGroup.displayName = \"Command.Group\";\n\n/* ─── Separator ─── */\n\nconst CommandSeparator = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-0.5 bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = \"Command.Separator\";\n\n/* ─── Item ─── */\n\nconst CommandItem = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center px-2 py-1.5 gap-2 text-sm text-foreground outline-border outline-0 aria-selected:outline-2 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));\nCommandItem.displayName = \"Command.Item\";\n\n/* ─── Shortcut ─── */\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground font-sans\",\n className,\n )}\n {...props}\n />\n);\nCommandShortcut.displayName = \"Command.Shortcut\";\n\n/* ─── Composite export ─── */\n\nconst CommandComponent = Object.assign(CommandRoot, {\n Dialog: CommandDialog,\n Input: CommandInput,\n List: CommandList,\n Empty: CommandEmpty,\n Group: CommandGroup,\n Separator: CommandSeparator,\n Item: CommandItem,\n Shortcut: CommandShortcut,\n});\n\nexport { CommandComponent as Command };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"./Button\";\nimport { Command } from \"./Command\";\nimport { Popover } from \"./Popover\";\n\n/* ─── Types ─── */\n\nexport interface IComboboxItem {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface IComboboxProps {\n items: IComboboxItem[];\n value?: string;\n onValueChange?: (value: string) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n}\n\n/* ─── Combobox ─── */\n\nconst ComboboxRoot = React.forwardRef<HTMLButtonElement, IComboboxProps>(\n (\n {\n items,\n value: controlledValue,\n onValueChange,\n placeholder = \"Select...\",\n searchPlaceholder = \"Search...\",\n emptyText = \"No results found.\",\n className,\n disabled = false,\n },\n ref,\n ) => {\n const [open, setOpen] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState(\"\");\n\n const value = controlledValue ?? internalValue;\n const setValue = React.useCallback(\n (newValue: string) => {\n if (onValueChange) {\n onValueChange(newValue);\n } else {\n setInternalValue(newValue);\n }\n },\n [onValueChange],\n );\n\n const selectedItem = items.find((item) => item.value === value);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn(\"w-[200px] justify-between\", className)}\n >\n {selectedItem ? selectedItem.label : placeholder}\n <ChevronsUpDown className=\"ml-2 size-4 shrink-0 opacity-50\" />\n </Button>\n </Popover.Trigger>\n <Popover.Content className=\"w-[200px] border-0! p-0\">\n <Command>\n <Command.Input placeholder={searchPlaceholder} />\n <Command.List>\n <Command.Empty>{emptyText}</Command.Empty>\n <Command.Group>\n {items.map((item) => (\n <Command.Item\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n onSelect={(currentValue) => {\n setValue(currentValue === value ? \"\" : currentValue);\n setOpen(false);\n }}\n >\n <Check\n className={cn(\n \"mr-2 size-4\",\n value === item.value ? \"opacity-100\" : \"opacity-0\",\n )}\n />\n {item.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </Popover.Content>\n </Popover>\n );\n },\n);\nComboboxRoot.displayName = \"Combobox\";\n\n/* ─── Multi-Select Combobox ─── */\n\nexport interface IComboboxMultiProps {\n items: IComboboxItem[];\n values?: string[];\n onValuesChange?: (values: string[]) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n}\n\nconst ComboboxMulti = React.forwardRef<HTMLButtonElement, IComboboxMultiProps>(\n (\n {\n items,\n values: controlledValues,\n onValuesChange,\n placeholder = \"Select...\",\n searchPlaceholder = \"Search...\",\n emptyText = \"No results found.\",\n className,\n disabled = false,\n },\n ref,\n ) => {\n const [open, setOpen] = React.useState(false);\n const [internalValues, setInternalValues] = React.useState<string[]>([]);\n\n const values = controlledValues ?? internalValues;\n const setValues = React.useCallback(\n (newValues: string[]) => {\n if (onValuesChange) {\n onValuesChange(newValues);\n } else {\n setInternalValues(newValues);\n }\n },\n [onValuesChange],\n );\n\n const selectedLabels = items\n .filter((item) => values.includes(item.value))\n .map((item) => item.label);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn(\"w-[200px] justify-between\", className)}\n >\n <span className=\"truncate\">\n {selectedLabels.length > 0\n ? selectedLabels.join(\", \")\n : placeholder}\n </span>\n <ChevronsUpDown className=\"ml-2 size-4 shrink-0 opacity-50\" />\n </Button>\n </Popover.Trigger>\n <Popover.Content className=\"w-[200px] border-0! p-0\">\n <Command>\n <Command.Input placeholder={searchPlaceholder} />\n <Command.List>\n <Command.Empty>{emptyText}</Command.Empty>\n <Command.Group>\n {items.map((item) => (\n <Command.Item\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n onSelect={(currentValue) => {\n const newValues = values.includes(currentValue)\n ? values.filter((v) => v !== currentValue)\n : [...values, currentValue];\n setValues(newValues);\n }}\n >\n <Check\n className={cn(\n \"mr-2 size-4\",\n values.includes(item.value)\n ? \"opacity-100\"\n : \"opacity-0\",\n )}\n />\n {item.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </Popover.Content>\n </Popover>\n );\n },\n);\nComboboxMulti.displayName = \"Combobox.Multi\";\n\n/* ─── Composite export ─── */\n\nconst ComboboxComponent = Object.assign(ComboboxRoot, {\n Multi: ComboboxMulti,\n});\n\nexport { ComboboxComponent as Combobox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n type SortingState,\n type VisibilityState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { ArrowUpDown, ChevronDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"./Button\";\nimport { Input } from \"./Input\";\nimport { Table } from \"./Table\";\nimport { DropdownMenu } from \"./DropdownMenu\";\n\n/* ─── Types ─── */\n\nexport interface IDataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n filterColumn?: string;\n filterPlaceholder?: string;\n showColumnToggle?: boolean;\n showPagination?: boolean;\n showSelectedCount?: boolean;\n className?: string;\n}\n\n/* ─── Toolbar ─── */\n\ninterface IDataTableToolbarProps {\n filterValue: string;\n onFilterChange: (value: string) => void;\n filterPlaceholder: string;\n showColumnToggle: boolean;\n columns: { id: string; getCanHide: () => boolean; getIsVisible: () => boolean; toggleVisibility: (value: boolean) => void }[];\n}\n\nconst DataTableToolbar = ({\n filterValue,\n onFilterChange,\n filterPlaceholder,\n showColumnToggle,\n columns,\n}: IDataTableToolbarProps) => (\n <div className=\"flex items-center py-4 gap-2\">\n <Input\n placeholder={filterPlaceholder}\n value={filterValue}\n onChange={(event) => onFilterChange(event.target.value)}\n className=\"max-w-sm\"\n />\n {showColumnToggle && (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button variant=\"outline\" className=\"ml-auto\">\n Columns <ChevronDown className=\"ml-2 size-4\" />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {columns\n .filter((column) => column.getCanHide())\n .map((column) => (\n <DropdownMenu.CheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {column.id}\n </DropdownMenu.CheckboxItem>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </div>\n);\nDataTableToolbar.displayName = \"DataTable.Toolbar\";\n\n/* ─── Pagination ─── */\n\ninterface IDataTablePaginationProps {\n selectedCount: number;\n totalCount: number;\n showSelectedCount: boolean;\n canPreviousPage: boolean;\n canNextPage: boolean;\n onPreviousPage: () => void;\n onNextPage: () => void;\n}\n\nconst DataTablePagination = ({\n selectedCount,\n totalCount,\n showSelectedCount,\n canPreviousPage,\n canNextPage,\n onPreviousPage,\n onNextPage,\n}: IDataTablePaginationProps) => (\n <div className=\"flex items-center justify-end gap-2 py-4\">\n {showSelectedCount && (\n <div className=\"text-foreground flex-1 text-sm font-sans\">\n {selectedCount} of {totalCount} row(s) selected.\n </div>\n )}\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onPreviousPage}\n disabled={!canPreviousPage}\n >\n Previous\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onNextPage}\n disabled={!canNextPage}\n >\n Next\n </Button>\n </div>\n </div>\n);\nDataTablePagination.displayName = \"DataTable.Pagination\";\n\n/* ─── SortButton ─── */\n\ninterface IDataTableSortButtonProps {\n children: React.ReactNode;\n onClick: () => void;\n className?: string;\n}\n\nconst DataTableSortButton = ({\n children,\n onClick,\n className,\n}: IDataTableSortButtonProps) => (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClick}\n className={cn(className)}\n >\n {children}\n <ArrowUpDown className=\"ml-2 size-4\" />\n </Button>\n);\nDataTableSortButton.displayName = \"DataTable.SortButton\";\n\n/* ─── DataTable ─── */\n\nfunction DataTableRoot<TData, TValue>({\n columns,\n data,\n filterColumn,\n filterPlaceholder = \"Filter...\",\n showColumnToggle = true,\n showPagination = true,\n showSelectedCount = true,\n className,\n}: IDataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [columnFilters, setColumnFilters] =\n React.useState<ColumnFiltersState>([]);\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>({});\n const [rowSelection, setRowSelection] = React.useState({});\n\n const table = useReactTable({\n data,\n columns,\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={cn(\"w-full font-sans text-foreground\", className)}>\n {filterColumn && (\n <DataTableToolbar\n filterValue={\n (table.getColumn(filterColumn)?.getFilterValue() as string) ?? \"\"\n }\n onFilterChange={(value) =>\n table.getColumn(filterColumn)?.setFilterValue(value)\n }\n filterPlaceholder={filterPlaceholder}\n showColumnToggle={showColumnToggle}\n columns={table.getAllColumns()}\n />\n )}\n <div>\n <Table>\n <Table.Header className=\"font-head\">\n {table.getHeaderGroups().map((headerGroup) => (\n <Table.Row\n className=\"bg-muted text-foreground\"\n key={headerGroup.id}\n >\n {headerGroup.headers.map((header) => (\n <Table.Head className=\"text-foreground\" key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </Table.Head>\n ))}\n </Table.Row>\n ))}\n </Table.Header>\n <Table.Body>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <Table.Row\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <Table.Cell className=\"px-4 py-2\" key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </Table.Cell>\n ))}\n </Table.Row>\n ))\n ) : (\n <Table.Row>\n <Table.Cell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n No results.\n </Table.Cell>\n </Table.Row>\n )}\n </Table.Body>\n </Table>\n </div>\n {showPagination && (\n <DataTablePagination\n selectedCount={table.getFilteredSelectedRowModel().rows.length}\n totalCount={table.getFilteredRowModel().rows.length}\n showSelectedCount={showSelectedCount}\n canPreviousPage={table.getCanPreviousPage()}\n canNextPage={table.getCanNextPage()}\n onPreviousPage={() => table.previousPage()}\n onNextPage={() => table.nextPage()}\n />\n )}\n </div>\n );\n}\n\n/* ─── Composite export ─── */\n\nconst DataTableComponent = Object.assign(DataTableRoot, {\n SortButton: DataTableSortButton,\n});\n\nexport { DataTableComponent as DataTable, type ColumnDef, flexRender };\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\";\nimport { cn } from \"@/lib/utils\";\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport { Button } from \"./Button\";\nimport { Input } from \"./Input\";\nimport { Sheet } from \"./Sheet\";\nimport { Skeleton } from \"./Skeleton\";\nimport { Tooltip } from \"./Tooltip\";\n\n/* ─── Constants ─── */\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\n/* ─── Context ─── */\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 Sidebar.Provider.\");\n }\n return context;\n}\n\n/* ─── Provider ─── */\n\ninterface ISidebarProviderProps extends React.HTMLAttributes<HTMLDivElement> {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst SidebarProvider = ({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: ISidebarProviderProps) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\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 document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\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 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 <Tooltip.Provider delayDuration={0}>\n <div\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-background flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </Tooltip.Provider>\n </SidebarContext.Provider>\n );\n};\nSidebarProvider.displayName = \"Sidebar.Provider\";\n\n/* ─── Sidebar Root ─── */\n\ninterface ISidebarRootProps extends React.HTMLAttributes<HTMLDivElement> {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}\n\nconst SidebarRoot = ({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: ISidebarRootProps) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"bg-background text-foreground flex h-full w-(--sidebar-width) flex-col border-r-2 border-border\",\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 <Sheet.Content\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-background text-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 <Sheet.Header className=\"sr-only\">\n <Sheet.Title>Sidebar</Sheet.Title>\n <Sheet.Description>Displays the mobile sidebar.</Sheet.Description>\n </Sheet.Header>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </Sheet.Content>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* Sidebar gap on desktop */}\n <div\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 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 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-2 border-r-border group-data-[side=right]:border-l-2 border-l-border\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"bg-background flex h-full w-full flex-col\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n};\nSidebarRoot.displayName = \"Sidebar\";\n\n/* ─── Trigger ─── */\n\ntype ISidebarTriggerProps = React.ComponentPropsWithoutRef<typeof Button>;\n\nconst SidebarTrigger = React.forwardRef<\n HTMLButtonElement,\n ISidebarTriggerProps\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n ref={ref}\n data-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});\nSidebarTrigger.displayName = \"Sidebar.Trigger\";\n\n/* ─── Rail ─── */\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] 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-muted 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});\nSidebarRail.displayName = \"Sidebar.Rail\";\n\n/* ─── Inset ─── */\n\nconst SidebarInset = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <main\n ref={ref}\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]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className,\n )}\n {...props}\n />\n));\nSidebarInset.displayName = \"Sidebar.Inset\";\n\n/* ─── Input ─── */\n\nconst SidebarInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentPropsWithoutRef<typeof Input>\n>(({ className, ...props }, ref) => (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n));\nSidebarInput.displayName = \"Sidebar.Input\";\n\n/* ─── Header ─── */\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n \"flex flex-col gap-2 p-2 border-b-2 border-b-border\",\n className,\n )}\n {...props}\n />\n));\nSidebarHeader.displayName = \"Sidebar.Header\";\n\n/* ─── Footer ─── */\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\n \"flex flex-col gap-2 p-2 border-t-2 border-t-border\",\n className,\n )}\n {...props}\n />\n));\nSidebarFooter.displayName = \"Sidebar.Footer\";\n\n/* ─── Content ─── */\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n));\nSidebarContent.displayName = \"Sidebar.Content\";\n\n/* ─── Group ─── */\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n \"relative flex w-full min-w-0 flex-col p-2 border-b-2 border-b-border last:border-b-0\",\n className,\n )}\n {...props}\n />\n));\nSidebarGroup.displayName = \"Sidebar.Group\";\n\n/* ─── GroupLabel ─── */\n\ninterface ISidebarGroupLabelProps extends React.HTMLAttributes<HTMLDivElement> {\n asChild?: boolean;\n}\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n ISidebarGroupLabelProps\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"text-foreground ring-ring flex h-8 shrink-0 items-center px-2 text-sm font-head 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});\nSidebarGroupLabel.displayName = \"Sidebar.GroupLabel\";\n\n/* ─── GroupAction ─── */\n\ninterface ISidebarGroupActionProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n}\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n ISidebarGroupActionProps\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n});\nSidebarGroupAction.displayName = \"Sidebar.GroupAction\";\n\n/* ─── GroupContent ─── */\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n));\nSidebarGroupContent.displayName = \"Sidebar.GroupContent\";\n\n/* ─── Menu ─── */\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.HTMLAttributes<HTMLUListElement>\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n));\nSidebarMenu.displayName = \"Sidebar.Menu\";\n\n/* ─── MenuItem ─── */\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.LiHTMLAttributes<HTMLLIElement>\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative font-sans\", className)}\n {...props}\n />\n));\nSidebarMenuItem.displayName = \"Sidebar.MenuItem\";\n\n/* ─── MenuButton ─── */\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden outline-2 outline-transparent p-2 text-left text-sm ring-ring transition-[width,height,padding] hover:bg-primary hover:text-primary-foreground hover:outline-border focus-visible:outline-border focus-visible:text-primary-foreground focus-visible:bg-primary 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 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 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 size: \"default\",\n },\n },\n);\n\ninterface ISidebarMenuButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof sidebarMenuButtonVariants> {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentPropsWithoutRef<typeof Tooltip.Content>;\n}\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n ISidebarMenuButtonProps\n>(\n (\n {\n asChild = false,\n isActive = false,\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n const tooltipProps =\n typeof tooltip === \"string\" ? { children: tooltip } : tooltip;\n\n return (\n <Tooltip>\n <Tooltip.Trigger asChild>{button}</Tooltip.Trigger>\n <Tooltip.Content\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltipProps}\n />\n </Tooltip>\n );\n },\n);\nSidebarMenuButton.displayName = \"Sidebar.MenuButton\";\n\n/* ─── MenuAction ─── */\n\ninterface ISidebarMenuActionProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n showOnHover?: boolean;\n}\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n ISidebarMenuActionProps\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"[&_svg]:text-foreground hover:[&_svg]:text-primary-foreground text-primary-foreground hover:bg-primary hover:outline-border outline-transparent outline-2 absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center p-0 transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-primary-foreground md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = \"Sidebar.MenuAction\";\n\n/* ─── MenuBadge ─── */\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center px-1 text-xs font-sans tabular-nums select-none\",\n \"peer-hover/menu-button:text-primary-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));\nSidebarMenuBadge.displayName = \"Sidebar.MenuBadge\";\n\n/* ─── MenuSkeleton ─── */\n\ninterface ISidebarMenuSkeletonProps\n extends React.HTMLAttributes<HTMLDivElement> {\n showIcon?: boolean;\n}\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n ISidebarMenuSkeletonProps\n>(({ className, showIcon = false, ...props }, ref) => {\n const [width] = React.useState(\n () => `${Math.floor(Math.random() * 40) + 50}%`,\n );\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton className=\"size-4\" data-sidebar=\"menu-skeleton-icon\" />\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});\nSidebarMenuSkeleton.displayName = \"Sidebar.MenuSkeleton\";\n\n/* ─── MenuSub ─── */\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.HTMLAttributes<HTMLUListElement>\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-l-foreground/50 mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l-2 px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n));\nSidebarMenuSub.displayName = \"Sidebar.MenuSub\";\n\n/* ─── MenuSubItem ─── */\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.LiHTMLAttributes<HTMLLIElement>\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n));\nSidebarMenuSubItem.displayName = \"Sidebar.MenuSubItem\";\n\n/* ─── MenuSubButton ─── */\n\ninterface ISidebarMenuSubButtonProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n ISidebarMenuSubButtonProps\n>(({ asChild = false, size = \"md\", isActive = false, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-foreground hover:bg-primary hover:outline-border hover:text-primary-foreground active:bg-primary outline-transparent outline-2 [&>svg]:text-primary-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden px-2 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-primary data-[active=true]:outline-border\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n});\nSidebarMenuSubButton.displayName = \"Sidebar.MenuSubButton\";\n\n/* ─── Composite export ─── */\n\nconst SidebarComponent = Object.assign(SidebarRoot, {\n Provider: SidebarProvider,\n Trigger: SidebarTrigger,\n Rail: SidebarRail,\n Inset: SidebarInset,\n Input: SidebarInput,\n Header: SidebarHeader,\n Footer: SidebarFooter,\n Content: SidebarContent,\n Group: SidebarGroup,\n GroupLabel: SidebarGroupLabel,\n GroupAction: SidebarGroupAction,\n GroupContent: SidebarGroupContent,\n Menu: SidebarMenu,\n MenuItem: SidebarMenuItem,\n MenuButton: SidebarMenuButton,\n MenuAction: SidebarMenuAction,\n MenuBadge: SidebarMenuBadge,\n MenuSkeleton: SidebarMenuSkeleton,\n MenuSub: SidebarMenuSub,\n MenuSubItem: SidebarMenuSubItem,\n MenuSubButton: SidebarMenuSubButton,\n});\n\nexport {\n SidebarComponent as Sidebar,\n useSidebar,\n sidebarMenuButtonVariants,\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(\n undefined,\n );\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener(\"change\", onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\n\n return !!isMobile;\n}\n","import React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface CardGridProps {\n children?: React.ReactNode;\n columns?: 2 | 3 | 4;\n className?: string;\n}\n\n// ─── Component ───\n\nconst columnClasses = {\n 2: \"grid gap-4 sm:grid-cols-2\",\n 3: \"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\",\n};\n\nexport function CardGrid({ children, columns = 3, className }: CardGridProps) {\n const isEmpty = React.Children.count(children) === 0;\n\n if (isEmpty) {\n return (\n <div\n className={cn(\n \"border-2 border-dashed border-border p-12 text-center\",\n className,\n )}\n >\n <p className=\"font-head text-lg text-muted-foreground\">\n Nothing here yet\n </p>\n </div>\n );\n }\n\n return (\n <div className={cn(columnClasses[columns], className)}>\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { AlignJustify, X, ChevronDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/Button\";\nimport { Menu } from \"@/components/ui/Menu\";\nimport { Drawer } from \"@/components/ui/Drawer\";\nimport { Avatar } from \"@/components/ui/Avatar\";\n\n// ─── Types ───\n\nexport interface NavLink {\n label: string;\n href: string;\n}\n\nexport interface NavMenuItem {\n label: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface NavBrand {\n name: string;\n logo?: string;\n href?: string;\n}\n\nexport type NavAuth =\n | {\n state: \"signed-out\";\n href: string;\n label?: string;\n }\n | {\n state: \"signed-in\";\n user: {\n name: string;\n avatar?: string;\n };\n menuItems: NavMenuItem[];\n };\n\nexport interface NavBarProps {\n brand: NavBrand;\n links?: NavLink[];\n auth: NavAuth;\n /** Element used for navigation links. Defaults to `\"a\"`. Pass `Link` from `next/link` (or your router's equivalent) for client-side transitions. */\n linkComponent?: React.ElementType;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function NavBar({ brand, links = [], auth, linkComponent: LinkComp = \"a\", className }: NavBarProps) {\n const [drawerOpen, setDrawerOpen] = useState(false);\n\n return (\n <nav\n className={cn(\n \"sticky top-0 z-40 w-full border-b-2 bg-background\",\n className,\n )}\n >\n <div className=\"mx-auto max-w-6xl px-4\">\n <div className=\"flex h-16 items-center justify-between\">\n {/* ─── Brand ─── */}\n <LinkComp\n href={brand.href ?? \"/\"}\n className=\"shrink-0 font-head text-2xl text-foreground\"\n >\n {brand.name}\n </LinkComp>\n\n {/* ─── Desktop Links (hidden below lg) ─── */}\n {links.length > 0 && (\n <div className=\"hidden lg:flex items-center gap-6\">\n {links.map((link) => (\n <LinkComp\n key={link.href}\n href={link.href}\n className=\"font-sans text-sm hover:underline decoration-primary underline-offset-4 transition-all\"\n >\n {link.label}\n </LinkComp>\n ))}\n </div>\n )}\n\n {/* ─── Desktop Auth (hidden below lg) ─── */}\n <div className=\"hidden lg:flex items-center gap-3\">\n {auth.state === \"signed-out\" ? (\n <SignedOutActions auth={auth} linkComponent={LinkComp} />\n ) : (\n <UserMenu auth={auth} linkComponent={LinkComp} />\n )}\n </div>\n\n {/* ─── Mobile: minimal actions + hamburger (visible below lg) ─── */}\n <div className=\"flex lg:hidden items-center gap-3\">\n {/* On tablet, show auth CTA inline */}\n {auth.state === \"signed-out\" && (\n <div className=\"hidden sm:flex items-center gap-2\">\n <SignedOutActions auth={auth} linkComponent={LinkComp} />\n </div>\n )}\n\n <Button\n size=\"icon\"\n variant=\"outline\"\n className=\"p-2 shadow-sm\"\n onClick={() => setDrawerOpen(true)}\n >\n <AlignJustify className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n\n {/* ─── Mobile Drawer ─── */}\n <Drawer\n direction=\"right\"\n open={drawerOpen}\n onOpenChange={setDrawerOpen}\n >\n <Drawer.Content>\n <Drawer.Header className=\"flex-row items-center justify-between\">\n <Drawer.Title>{brand.name}</Drawer.Title>\n <Drawer.Close asChild>\n <Button size=\"icon\" variant=\"ghost\" className=\"p-1\">\n <X className=\"h-5 w-5\" />\n </Button>\n </Drawer.Close>\n </Drawer.Header>\n\n <div className=\"flex flex-col gap-1 px-4\">\n {links.map((link) => (\n <LinkComp\n key={link.href}\n href={link.href}\n onClick={() => setDrawerOpen(false)}\n className=\"font-sans text-base py-2 px-2 hover:bg-accent transition-colors\"\n >\n {link.label}\n </LinkComp>\n ))}\n </div>\n\n <Drawer.Footer>\n {auth.state === \"signed-out\" ? (\n <Button asChild>\n <LinkComp href={auth.href}>\n {auth.label ?? \"Get Started\"}\n </LinkComp>\n </Button>\n ) : (\n <div className=\"flex flex-col gap-1 border-t-2 pt-4\">\n <div className=\"flex items-center gap-3 px-2 pb-3\">\n <Avatar className=\"h-8 w-8\">\n {auth.user.avatar ? (\n <Avatar.Image src={auth.user.avatar} alt={auth.user.name} />\n ) : (\n <Avatar.Fallback>\n {auth.user.name.charAt(0).toUpperCase()}\n </Avatar.Fallback>\n )}\n </Avatar>\n <span className=\"font-head text-sm\">{auth.user.name}</span>\n </div>\n {auth.menuItems.map((item) =>\n item.href ? (\n <LinkComp\n key={item.label}\n href={item.href}\n onClick={() => setDrawerOpen(false)}\n className=\"font-sans text-sm py-2 px-2 hover:bg-accent transition-colors\"\n >\n {item.label}\n </LinkComp>\n ) : (\n <button\n key={item.label}\n onClick={() => {\n item.onClick?.();\n setDrawerOpen(false);\n }}\n className=\"font-sans text-sm py-2 px-2 text-left hover:bg-accent transition-colors cursor-pointer\"\n >\n {item.label}\n </button>\n ),\n )}\n </div>\n )}\n </Drawer.Footer>\n </Drawer.Content>\n </Drawer>\n </nav>\n );\n}\n\n// ─── Sub-components ───\n\nfunction SignedOutActions({\n auth,\n linkComponent: LinkComp = \"a\",\n}: {\n auth: Extract<NavAuth, { state: \"signed-out\" }>;\n linkComponent?: React.ElementType;\n}) {\n return (\n <Button asChild size=\"sm\">\n <LinkComp href={auth.href}>{auth.label ?? \"Get Started\"}</LinkComp>\n </Button>\n );\n}\n\nfunction UserMenu({\n auth,\n linkComponent: LinkComp = \"a\",\n}: {\n auth: Extract<NavAuth, { state: \"signed-in\" }>;\n linkComponent?: React.ElementType;\n}) {\n return (\n <Menu>\n <Menu.Trigger asChild>\n <button className=\"flex items-center gap-2 cursor-pointer outline-hidden\">\n <Avatar className=\"h-8 w-8\">\n {auth.user.avatar ? (\n <Avatar.Image src={auth.user.avatar} alt={auth.user.name} />\n ) : (\n <Avatar.Fallback>\n {auth.user.name.charAt(0).toUpperCase()}\n </Avatar.Fallback>\n )}\n </Avatar>\n <ChevronDown className=\"h-3 w-3\" />\n </button>\n </Menu.Trigger>\n <Menu.Content align=\"end\" className=\"min-w-40\">\n {auth.menuItems.map((item) =>\n item.href ? (\n <Menu.Item key={item.label} asChild>\n <LinkComp href={item.href}>{item.label}</LinkComp>\n </Menu.Item>\n ) : (\n <Menu.Item key={item.label} onSelect={() => item.onClick?.()}>\n {item.label}\n </Menu.Item>\n ),\n )}\n </Menu.Content>\n </Menu>\n );\n}\n","import React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface SimplePageProps {\n title: string;\n subtitle?: string;\n actions?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function SimplePage({\n title,\n subtitle,\n actions,\n children,\n className,\n}: SimplePageProps) {\n return (\n <div className={cn(\"min-h-screen\", className)}>\n <header className=\"border-b-2 bg-background\">\n <div className=\"mx-auto max-w-6xl px-4 py-8\">\n <div className=\"flex items-start justify-between gap-4\">\n <div>\n <h1 className=\"font-head text-4xl mb-2\">{title}</h1>\n {subtitle && (\n <p className=\"font-sans text-lg text-muted-foreground max-w-xl\">\n {subtitle}\n </p>\n )}\n </div>\n {actions && (\n <div className=\"shrink-0 flex items-center gap-2\">{actions}</div>\n )}\n </div>\n </div>\n </header>\n <main className=\"mx-auto max-w-6xl px-4 py-12 flex flex-col gap-12\">\n {children}\n </main>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface SectionNavItem {\n label: string;\n id: string;\n}\n\nexport interface ISectionNavProps {\n items: SectionNavItem[];\n className?: string;\n /** Offset from top in pixels (e.g. to stack below a sticky header) */\n offsetTop?: number;\n}\n\nexport function SectionNav({ items, className, offsetTop }: ISectionNavProps) {\n const [activeId, setActiveId] = useState<string>(items[0]?.id ?? \"\");\n\n useEffect(() => {\n const observers: IntersectionObserver[] = [];\n\n for (const item of items) {\n const el = document.getElementById(item.id);\n if (!el) continue;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setActiveId(item.id);\n }\n },\n { rootMargin: \"-80px 0px -60% 0px\", threshold: 0 },\n );\n\n observer.observe(el);\n observers.push(observer);\n }\n\n return () => {\n for (const observer of observers) {\n observer.disconnect();\n }\n };\n }, [items]);\n\n return (\n <nav\n aria-label=\"Section navigation\"\n className={cn(\n \"sticky z-30 bg-background text-foreground border-b-[4px] border-border\",\n className,\n )}\n style={{ top: offsetTop != null ? `${offsetTop}px` : 0 }}\n >\n <div className=\"mx-auto max-w-6xl px-4 flex items-center gap-1 overflow-x-auto\">\n {items.map((item) => (\n <a\n key={item.id}\n href={`#${item.id}`}\n aria-current={activeId === item.id ? \"location\" : undefined}\n className={cn(\n \"font-head text-sm px-4 py-3 shrink-0 transition-colors duration-200\",\n activeId === item.id\n ? \"bg-primary text-primary-foreground\"\n : \"text-muted-foreground hover:bg-primary hover:text-primary-foreground\",\n )}\n >\n {item.label}\n </a>\n ))}\n </div>\n </nav>\n );\n}\n","\"use client\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Drawer } from \"@/components/ui/Drawer\";\nimport { Button } from \"@/components/ui/Button\";\nimport { PanelRight } from \"lucide-react\";\nimport React, { useState } from \"react\";\n\ninterface TwoColumnLayoutProps {\n children: React.ReactNode;\n className?: string;\n drawerTitle?: string;\n}\n\nfunction TwoColumnLayout({\n children,\n className,\n drawerTitle = \"Details\",\n}: TwoColumnLayoutProps) {\n const [drawerOpen, setDrawerOpen] = useState(false);\n\n let leftContent: React.ReactNode = null;\n let rightContent: React.ReactNode = null;\n\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n const type = child.type as { displayName?: string };\n if (type.displayName === \"TwoColumnLayout.Left\") leftContent = child;\n if (type.displayName === \"TwoColumnLayout.Right\") rightContent = child;\n });\n\n return (\n <div className={cn(\"flex flex-col md:flex-row gap-0 min-h-0\", className)}>\n {/* Left column — always visible */}\n <div className=\"flex-1 min-w-0 md:border-r-2\">{leftContent}</div>\n\n {/* Right column — visible on md+, hidden on mobile */}\n <div className=\"hidden md:block flex-1 min-w-0\">{rightContent}</div>\n\n {/* Mobile drawer trigger */}\n {rightContent && (\n <div className=\"fixed bottom-6 right-6 md:hidden z-40\">\n <Button\n variant=\"default\"\n size=\"icon\"\n onClick={() => setDrawerOpen(true)}\n aria-label=\"Open right panel\"\n >\n <PanelRight className=\"size-5\" />\n </Button>\n </div>\n )}\n\n {/* Mobile drawer */}\n <Drawer open={drawerOpen} onOpenChange={setDrawerOpen} direction=\"right\">\n <Drawer.Content>\n <Drawer.Header>\n <Drawer.Title>{drawerTitle}</Drawer.Title>\n </Drawer.Header>\n <div className=\"flex-1 overflow-y-auto p-4\">{rightContent}</div>\n </Drawer.Content>\n </Drawer>\n </div>\n );\n}\n\ninterface TwoColumnPanelProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction TwoColumnLeft({ children, className }: TwoColumnPanelProps) {\n return <div className={cn(\"h-full\", className)}>{children}</div>;\n}\nTwoColumnLeft.displayName = \"TwoColumnLayout.Left\";\n\nfunction TwoColumnRight({ children, className }: TwoColumnPanelProps) {\n return <div className={cn(\"h-full\", className)}>{children}</div>;\n}\nTwoColumnRight.displayName = \"TwoColumnLayout.Right\";\n\nconst TwoColumnLayoutComponent = Object.assign(TwoColumnLayout, {\n Left: TwoColumnLeft,\n Right: TwoColumnRight,\n});\n\nexport { TwoColumnLayoutComponent as TwoColumnLayout };\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\nimport { useTheme } from \"@/components/ThemeProvider\";\nimport { IconButton } from \"@/components/ui/IconButton\";\nimport { cn } from \"@/lib/utils\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport type { iconButtonVariants } from \"@/components/ui/IconButton\";\n\nconst subscribe = () => () => {};\nconst getSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\nexport interface ThemeToggleProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof iconButtonVariants> {}\n\nexport function ThemeToggle({\n variant = \"ghost\",\n size = \"md\",\n className,\n ...props\n}: ThemeToggleProps) {\n const { resolvedTheme, setTheme } = useTheme();\n const mounted = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n const opposite = resolvedTheme === \"dark\" ? \"light\" : \"dark\";\n\n return (\n <IconButton\n variant={variant}\n size={size}\n className={cn(className)}\n onClick={() => setTheme(opposite)}\n aria-label={mounted ? `Switch to ${opposite} mode` : \"Toggle theme\"}\n {...props}\n >\n {/* Sun icon — shown in dark mode */}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"hidden dark:block\"\n aria-hidden=\"true\"\n >\n <circle cx={12} cy={12} r={5} />\n <line x1={12} y1={1} x2={12} y2={3} />\n <line x1={12} y1={21} x2={12} y2={23} />\n <line x1={4.22} y1={4.22} x2={5.64} y2={5.64} />\n <line x1={18.36} y1={18.36} x2={19.78} y2={19.78} />\n <line x1={1} y1={12} x2={3} y2={12} />\n <line x1={21} y1={12} x2={23} y2={12} />\n <line x1={4.22} y1={19.78} x2={5.64} y2={18.36} />\n <line x1={18.36} y1={5.64} x2={19.78} y2={4.22} />\n </svg>\n {/* Moon icon — shown in light mode */}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"block dark:hidden\"\n aria-hidden=\"true\"\n >\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n </IconButton>\n );\n}\n","export interface ThemeConfig {\n /** Primary brand color and its foreground */\n primary?: string;\n primaryForeground?: string;\n /** Secondary color */\n secondary?: string;\n secondaryForeground?: string;\n /** Background and foreground */\n background?: string;\n foreground?: string;\n /** Card surface */\n card?: string;\n cardForeground?: string;\n /** Muted/subtle surface */\n muted?: string;\n mutedForeground?: string;\n /** Accent color */\n accent?: string;\n accentForeground?: string;\n /** Destructive/error */\n destructive?: string;\n destructiveForeground?: string;\n /** Success */\n success?: string;\n successForeground?: string;\n /** Warning */\n warning?: string;\n warningForeground?: string;\n /** Border color */\n border?: string;\n /** Input border */\n input?: string;\n /** Focus ring */\n ring?: string;\n /** Default border radius override */\n radius?: string;\n}\n\n/**\n * Generate a CSS class string with custom property overrides for a named theme.\n * Apply the returned CSS to your stylesheet, then add the class name to a container element.\n *\n * @example\n * const css = createTheme(\"brand\", { primary: \"#E63946\", background: \"#F1FAEE\" });\n * // Returns: \".theme-brand { --primary: #E63946; --background: #F1FAEE; }\"\n */\nexport function createTheme(name: string, config: ThemeConfig): string {\n const declarations: string[] = [];\n\n const tokenMap: Record<keyof ThemeConfig, string> = {\n primary: \"--primary\",\n primaryForeground: \"--primary-foreground\",\n secondary: \"--secondary\",\n secondaryForeground: \"--secondary-foreground\",\n background: \"--background\",\n foreground: \"--foreground\",\n card: \"--card\",\n cardForeground: \"--card-foreground\",\n muted: \"--muted\",\n mutedForeground: \"--muted-foreground\",\n accent: \"--accent\",\n accentForeground: \"--accent-foreground\",\n destructive: \"--destructive\",\n destructiveForeground: \"--destructive-foreground\",\n success: \"--success\",\n successForeground: \"--success-foreground\",\n warning: \"--warning\",\n warningForeground: \"--warning-foreground\",\n border: \"--border\",\n input: \"--input\",\n ring: \"--ring\",\n radius: \"--radius\",\n };\n\n for (const [key, value] of Object.entries(config)) {\n const token = tokenMap[key as keyof ThemeConfig];\n if (token && value) {\n declarations.push(` ${token}: ${value};`);\n }\n }\n\n if (declarations.length === 0) return \"\";\n\n return `.theme-${name} {\\n${declarations.join(\"\\n\")}\\n}`;\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface HeroProps {\n badge?: React.ReactNode;\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n actions?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n align?: \"left\" | \"center\";\n}\n\n// ─── Component ───\n\nexport function Hero({\n badge,\n title,\n subtitle,\n actions,\n children,\n className,\n align = \"center\",\n}: HeroProps) {\n return (\n <section\n className={cn(\n \"w-full border-b-2 bg-background\",\n className,\n )}\n >\n <div\n className={cn(\n \"mx-auto max-w-6xl px-4 py-20 lg:py-28 flex flex-col gap-6\",\n align === \"center\" && \"items-center text-center\",\n align === \"left\" && \"items-start text-left\",\n )}\n >\n {badge && <div>{badge}</div>}\n\n <h1 className=\"font-head text-4xl sm:text-5xl lg:text-6xl max-w-4xl\">\n {title}\n </h1>\n\n {subtitle && (\n <p className=\"font-sans text-lg lg:text-xl text-muted-foreground max-w-2xl\">\n {subtitle}\n </p>\n )}\n\n {actions && (\n <div className=\"flex flex-wrap gap-3 mt-2\">{actions}</div>\n )}\n\n {children}\n </div>\n </section>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\n// ─── Variants ───\n\nexport const sectionVariants = cva(\"w-full py-16 lg:py-24 scroll-mt-[120px]\", {\n variants: {\n background: {\n default: \"bg-background\",\n muted: \"bg-muted/30\",\n card: \"bg-card border-y-2\",\n primary: \"bg-primary text-primary-foreground\",\n },\n },\n defaultVariants: {\n background: \"default\",\n },\n});\n\n// ─── Types ───\n\nexport interface SectionProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"title\">,\n VariantProps<typeof sectionVariants> {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n align?: \"left\" | \"center\";\n}\n\n// ─── Component ───\n\nexport function Section({\n title,\n subtitle,\n children,\n className,\n background = \"default\",\n align = \"center\",\n ...props\n}: SectionProps) {\n return (\n <section\n className={cn(sectionVariants({ background }), className)}\n {...props}\n >\n <div className=\"mx-auto max-w-6xl px-4\">\n {(title || subtitle) && (\n <div\n className={cn(\n \"mb-12\",\n align === \"center\" && \"text-center\",\n align === \"left\" && \"text-left\",\n )}\n >\n {title && (\n <h2 className=\"font-head text-3xl lg:text-4xl mb-3\">{title}</h2>\n )}\n {subtitle && (\n <p className=\"font-sans text-lg text-muted-foreground max-w-2xl mx-auto\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n {children}\n </div>\n </section>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface FooterLinkGroup {\n title: string;\n links: { label: string; href: string }[];\n}\n\nexport interface FooterProps {\n brand: React.ReactNode;\n tagline?: string;\n groups?: FooterLinkGroup[];\n bottom?: React.ReactNode;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function Footer({\n brand,\n tagline,\n groups = [],\n bottom,\n className,\n}: FooterProps) {\n return (\n <footer className={cn(\"w-full border-t-2 bg-background\", className)}>\n <div className=\"mx-auto max-w-6xl px-4 py-12 lg:py-16\">\n <div className=\"grid gap-8 lg:grid-cols-[1.5fr_repeat(auto-fit,1fr)]\">\n {/* Brand column */}\n <div className=\"max-w-xs\">\n <div className=\"font-head text-2xl mb-2\">{brand}</div>\n {tagline && (\n <p className=\"font-sans text-sm text-muted-foreground\">\n {tagline}\n </p>\n )}\n </div>\n\n {/* Link groups */}\n {groups.length > 0 && (\n <div className=\"grid gap-8 sm:grid-cols-2 lg:grid-cols-3 col-span-full lg:col-span-1\">\n {groups.map((group) => (\n <div key={group.title}>\n <h4 className=\"font-head text-sm uppercase mb-3\">\n {group.title}\n </h4>\n <ul className=\"flex flex-col gap-2\">\n {group.links.map((link) => (\n <li key={link.label}>\n <a\n href={link.href}\n className=\"font-sans text-sm text-muted-foreground hover:text-foreground transition-colors\"\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Bottom bar */}\n {bottom && (\n <div className=\"mt-12 pt-6 border-t-2 font-sans text-sm text-muted-foreground\">\n {bottom}\n </div>\n )}\n </div>\n </footer>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface PricingFeature {\n text: string;\n included: boolean;\n}\n\nexport interface PricingTier {\n name: string;\n price: React.ReactNode;\n description?: string;\n features: PricingFeature[];\n cta: React.ReactNode;\n highlighted?: boolean;\n badge?: React.ReactNode;\n}\n\nexport interface PricingTableProps {\n tiers: PricingTier[];\n className?: string;\n}\n\n// ─── Component ───\n\nexport function PricingTable({ tiers, className }: PricingTableProps) {\n return (\n <div\n className={cn(\n \"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\",\n className,\n )}\n >\n {tiers.map((tier) => (\n <div\n key={tier.name}\n className={cn(\n \"border-2 flex flex-col bg-card\",\n tier.highlighted\n ? \"shadow-lg border-primary ring-2 ring-primary scale-[1.02]\"\n : \"shadow-md\",\n )}\n >\n {/* Header */}\n <div className=\"p-6 border-b-2\">\n <div className=\"flex items-center justify-between mb-2\">\n <h3 className=\"font-head text-xl\">{tier.name}</h3>\n {tier.badge}\n </div>\n <div className=\"font-head text-4xl mb-1\">{tier.price}</div>\n {tier.description && (\n <p className=\"font-sans text-sm text-muted-foreground\">\n {tier.description}\n </p>\n )}\n </div>\n\n {/* Features */}\n <div className=\"p-6 flex-1\">\n <ul className=\"flex flex-col gap-3\">\n {tier.features.map((feature) => (\n <li\n key={feature.text}\n className={cn(\n \"font-sans text-sm flex items-start gap-2\",\n !feature.included && \"text-muted-foreground line-through\",\n )}\n >\n <span\n className={cn(\n \"font-head text-xs mt-0.5 shrink-0\",\n feature.included\n ? \"text-primary-foreground\"\n : \"text-muted-foreground\",\n )}\n >\n {feature.included ? \"+\" : \"-\"}\n </span>\n {feature.text}\n </li>\n ))}\n </ul>\n </div>\n\n {/* CTA */}\n <div className=\"p-6 border-t-2\">{tier.cta}</div>\n </div>\n ))}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface Feature {\n icon?: React.ReactNode;\n title: string;\n description: string;\n}\n\nexport interface FeatureSectionProps {\n features: Feature[];\n columns?: 2 | 3 | 4;\n className?: string;\n}\n\n// ─── Component ───\n\nconst columnClasses = {\n 2: \"grid gap-6 sm:grid-cols-2\",\n 3: \"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid gap-6 sm:grid-cols-2 lg:grid-cols-4\",\n};\n\nexport function FeatureSection({\n features,\n columns = 3,\n className,\n}: FeatureSectionProps) {\n return (\n <div className={cn(columnClasses[columns], className)}>\n {features.map((feature) => (\n <div\n key={feature.title}\n className=\"border-2 p-6 bg-card shadow-md\"\n >\n {feature.icon && (\n <div className=\"mb-4 inline-flex items-center justify-center h-12 w-12 border-2 bg-primary text-primary-foreground shadow-sm\">\n {feature.icon}\n </div>\n )}\n <h3 className=\"font-head text-lg mb-2\">{feature.title}</h3>\n <p className=\"font-sans text-sm text-muted-foreground\">\n {feature.description}\n </p>\n </div>\n ))}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface TestimonialItem {\n quote: string;\n name: string;\n role?: string;\n company?: string;\n avatar?: React.ReactNode;\n}\n\nexport interface TestimonialProps {\n testimonials: TestimonialItem[];\n columns?: 1 | 2 | 3;\n className?: string;\n}\n\n// ─── Component ───\n\nconst columnClasses = {\n 1: \"grid gap-6 max-w-2xl mx-auto\",\n 2: \"grid gap-6 sm:grid-cols-2\",\n 3: \"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\",\n};\n\nexport function Testimonial({\n testimonials,\n columns = 3,\n className,\n}: TestimonialProps) {\n return (\n <div className={cn(columnClasses[columns], className)}>\n {testimonials.map((t) => (\n <div\n key={t.name}\n className=\"border-2 p-6 bg-card shadow-md flex flex-col\"\n >\n <blockquote className=\"font-sans text-sm leading-relaxed flex-1 mb-6\">\n &ldquo;{t.quote}&rdquo;\n </blockquote>\n <div className=\"flex items-center gap-3 border-t-2 pt-4\">\n {t.avatar && (\n <div className=\"h-10 w-10 shrink-0 border-2 overflow-hidden\">\n {t.avatar}\n </div>\n )}\n <div>\n <p className=\"font-head text-sm\">{t.name}</p>\n {(t.role || t.company) && (\n <p className=\"font-sans text-xs text-muted-foreground\">\n {[t.role, t.company].filter(Boolean).join(\", \")}\n </p>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface LogoCloudProps {\n children: React.ReactNode;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function LogoCloud({ children, className }: LogoCloudProps) {\n return (\n <div\n className={cn(\n \"flex flex-wrap items-center justify-center gap-8 lg:gap-12\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface CTABannerProps {\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n actions?: React.ReactNode;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function CTABanner({\n title,\n subtitle,\n actions,\n className,\n}: CTABannerProps) {\n return (\n <section\n className={cn(\n \"w-full border-y-2 bg-primary text-primary-foreground\",\n className,\n )}\n >\n <div className=\"mx-auto max-w-6xl px-4 py-16 lg:py-20 flex flex-col items-center text-center gap-4\">\n <h2 className=\"font-head text-3xl lg:text-4xl\">{title}</h2>\n {subtitle && (\n <p className=\"font-sans text-lg max-w-xl\">{subtitle}</p>\n )}\n {actions && (\n <div className=\"flex flex-wrap gap-3 mt-2\">{actions}</div>\n )}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronDown } from \"lucide-react\";\n\n// ─── Types ───\n\nexport interface FAQItem {\n question: string;\n answer: React.ReactNode;\n}\n\nexport interface FAQProps {\n items: FAQItem[];\n className?: string;\n}\n\n// ─── Component ───\n\nexport function FAQ({ items, className }: FAQProps) {\n const [openIndex, setOpenIndex] = React.useState<number | null>(null);\n\n return (\n <div className={cn(\"w-full max-w-3xl mx-auto\", className)}>\n {items.map((item, i) => {\n const isOpen = openIndex === i;\n return (\n <div key={i} className=\"border-2 border-b-0 last:border-b-2\">\n <button\n onClick={() => setOpenIndex(isOpen ? null : i)}\n className=\"w-full flex items-center justify-between p-4 text-left cursor-pointer hover:bg-accent/30 transition-colors\"\n >\n <span className=\"font-head text-sm pr-4\">{item.question}</span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\",\n )}\n />\n </button>\n {isOpen && (\n <div className=\"px-4 pb-4 font-sans text-sm text-muted-foreground\">\n {item.answer}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface Stat {\n value: React.ReactNode;\n label: string;\n}\n\nexport interface StatsBarProps {\n stats: Stat[];\n className?: string;\n}\n\n// ─── Component ───\n\nexport function StatsBar({ stats, className }: StatsBarProps) {\n return (\n <div\n className={cn(\n \"w-full border-y-2 bg-card\",\n className,\n )}\n >\n <div className=\"mx-auto max-w-6xl px-4 py-10 grid grid-cols-2 lg:grid-cols-4 gap-8\">\n {stats.map((stat) => (\n <div key={stat.label} className=\"text-center\">\n <div className=\"font-head text-3xl lg:text-4xl mb-1\">\n {stat.value}\n </div>\n <div className=\"font-sans text-sm text-muted-foreground uppercase\">\n {stat.label}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { X } from \"lucide-react\";\n\n// ─── Types ───\n\nexport interface AnnouncementBannerProps {\n children: React.ReactNode;\n dismissible?: boolean;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function AnnouncementBanner({\n children,\n dismissible = true,\n className,\n}: AnnouncementBannerProps) {\n const [visible, setVisible] = React.useState(() => {\n if (typeof window === \"undefined\") return true;\n return sessionStorage.getItem(\"announcement-dismissed\") !== \"true\";\n });\n\n const handleDismiss = () => {\n setVisible(false);\n sessionStorage.setItem(\"announcement-dismissed\", \"true\");\n };\n\n if (!visible) return null;\n\n return (\n <div\n className={cn(\n \"w-full bg-primary text-primary-foreground border-b-2\",\n className,\n )}\n >\n <div className=\"mx-auto max-w-6xl px-4 py-2 flex items-center justify-center gap-3\">\n <p className=\"font-sans text-sm text-center flex-1\">{children}</p>\n {dismissible && (\n <button\n onClick={handleDismiss}\n className=\"shrink-0 p-2 min-w-[44px] min-h-[44px] inline-flex items-center justify-center hover:bg-foreground/10 transition-colors cursor-pointer\"\n aria-label=\"Dismiss\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface NewsletterSignupProps {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n inputPlaceholder?: string;\n buttonLabel?: React.ReactNode;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function NewsletterSignup({\n title = \"Stay in the loop\",\n subtitle,\n inputPlaceholder = \"you@example.com\",\n buttonLabel = \"Subscribe\",\n className,\n}: NewsletterSignupProps) {\n return (\n <div className={cn(\"w-full max-w-md mx-auto\", className)}>\n {title && (\n <h3 className=\"font-head text-xl mb-2 text-center\">{title}</h3>\n )}\n {subtitle && (\n <p className=\"font-sans text-sm text-muted-foreground text-center mb-4\">\n {subtitle}\n </p>\n )}\n <form\n onSubmit={(e) => e.preventDefault()}\n className=\"flex gap-2\"\n >\n <input\n type=\"email\"\n placeholder={inputPlaceholder}\n className=\"flex-1 h-10 border-2 bg-background px-4 font-sans text-sm shadow-md transition placeholder:text-muted-foreground focus:outline-none focus:shadow-xs\"\n required\n />\n <button\n type=\"submit\"\n className=\"font-head px-4 h-10 border-2 bg-primary text-primary-foreground shadow-md hover:shadow active:shadow-none transition-all hover:translate-y-0.5 active:translate-y-1 cursor-pointer text-sm\"\n >\n {buttonLabel}\n </button>\n </form>\n </div>\n );\n}\n"],"mappings":"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","names":["cva","React","Slot","jsx","cva","React","Slot","React","cva","Slot","jsx","cva","Slot","React","jsx","Trigger","Content","React","jsx","React","jsx","DropdownMenu","React","jsx","jsxs","React","React","jsx","React","jsx","React","React","jsx","React","React","cva","jsx","cva","React","cva","jsx","jsxs","cva","React","Check","jsx","jsxs","Check","React","jsx","React","jsx","jsxs","jsx","React","jsx","jsxs","cva","React","Slot","jsx","cva","React","Slot","React","cva","jsx","cva","cva","React","Slot","jsx","cva","React","Slot","React","cva","jsx","cva","React","cva","jsx","jsxs","cva","React","cva","jsx","jsxs","cva","React","cva","jsx","cva","React","cva","jsx","cva","React","cva","jsx","cva","React","cva","jsx","cva","React","ChevronDown","jsx","jsxs","ChevronDown","React","jsx","jsxs","React","jsx","React","jsx","React","jsx","React","jsx","CollapsibleTrigger","CollapsibleContent","React","jsx","React","jsx","Check","React","jsx","jsxs","Check","Check","ChevronRight","Circle","React","jsx","jsxs","ChevronRight","Check","Circle","React","jsx","Check","ChevronRight","Circle","React","jsx","jsxs","Check","Circle","ChevronRight","React","cva","ChevronDown","jsx","jsxs","cva","ChevronDown","Group","Separator","jsx","Group","Separator","React","jsx","jsxs","config","React","createContext","useContext","useState","useMemo","jsx","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","_a","React","jsx","jsxs","React","Slot","ChevronRight","MoreHorizontal","jsx","jsxs","Slot","ChevronRight","MoreHorizontal","React","ChevronRight","jsx","_a","_b","Icon","ChevronRight","React","jsx","jsxs","React","ChevronLeft","ChevronRight","MoreHorizontal","jsx","jsxs","ChevronLeft","ChevronRight","MoreHorizontal","React","cva","X","jsx","jsxs","cva","X","React","Slot","jsx","FormField","Slot","_a","React","jsx","jsxs","React","Check","jsx","jsxs","Check","React","ChevronDown","jsx","jsxs","ChevronDown","_a","React","Slot","cva","React","jsx","jsxs","open","Slot","cva","React","jsx","React","useState","X","ChevronDown","jsx","jsxs","useState","X","_a","ChevronDown","jsx","jsxs","useEffect","useState","jsx","useState","useEffect","React","useState","jsx","jsxs","jsx","jsxs","jsx","jsxs","cva","jsx","jsxs","cva","jsx","jsxs","jsx","jsxs","jsx","jsxs","columnClasses","jsx","jsxs","columnClasses","jsx","jsx","jsxs","React","ChevronDown","jsx","jsxs","jsx","jsxs","React","X","jsx","jsxs","jsx","jsxs"]}
1
+ {"version":3,"sources":["../lib/utils.ts","../components/ui/Button.tsx","../components/ui/Badge.tsx","../components/ui/Card.tsx","../components/ui/Menu.tsx","../components/ui/Drawer.tsx","../components/ui/Avatar.tsx","../components/ui/Tabs.tsx","../components/ui/Label.tsx","../components/ui/Input.tsx","../components/ui/Textarea.tsx","../components/ui/Checkbox.tsx","../components/ui/RadioGroup.tsx","../components/ui/Select.tsx","../components/ui/Switch.tsx","../components/ui/Slider.tsx","../components/ui/Text.tsx","../components/ui/FormLayout.tsx","../components/ui/Link.tsx","../components/ui/Alert.tsx","../components/ui/IconButton.tsx","../components/ui/Loader.tsx","../components/ui/Dialog.tsx","../components/ui/Divider.tsx","../components/ui/Stack.tsx","../components/ui/Flex.tsx","../components/ui/Grid.tsx","../components/ui/Container.tsx","../components/ui/Accordion.tsx","../components/ui/ScrollArea.tsx","../components/ui/Skeleton.tsx","../components/ui/Progress.tsx","../components/ui/Tooltip.tsx","../components/ui/Collapsible.tsx","../components/ui/HoverCard.tsx","../components/ui/Popover.tsx","../components/ui/ContextMenu.tsx","../components/ui/DropdownMenu.tsx","../components/ui/Table.tsx","../components/ui/Menubar.tsx","../components/ui/NavigationMenu.tsx","../components/ui/Resizable.tsx","../components/ui/Chart.tsx","../components/ui/Sonner.tsx","../components/ThemeProvider.tsx","../components/ui/Marquee.tsx","../components/ui/ImageCard.tsx","../components/ui/InputOTP.tsx","../components/ui/AlertDialog.tsx","../components/ui/Breadcrumb.tsx","../components/ui/Calendar.tsx","../components/ui/Carousel.tsx","../components/ui/Pagination.tsx","../components/ui/Sheet.tsx","../components/ui/Form.tsx","../components/ui/Command.tsx","../components/ui/Combobox.tsx","../components/ui/DataTable.tsx","../components/ui/Sidebar.tsx","../hooks/use-mobile.ts","../components/CardGrid/CardGrid.tsx","../components/NavBar/NavBar.tsx","../components/Page/Page.tsx","../components/SectionNav/SectionNav.tsx","../components/TwoColumnLayout/TwoColumnLayout.tsx","../components/ThemeToggle.tsx","../lib/create-theme.ts","../components/landing/Hero.tsx","../components/landing/Section.tsx","../components/landing/Footer.tsx","../components/landing/PricingTable.tsx","../components/landing/FeatureSection.tsx","../components/landing/Testimonial.tsx","../components/landing/LogoCloud.tsx","../components/landing/CTABanner.tsx","../components/landing/FAQ.tsx","../components/landing/StatsBar.tsx","../components/landing/AnnouncementBanner.tsx","../components/landing/NewsletterSignup.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { ClassNameValue, twMerge } from \"tailwind-merge\";\n\nexport function cn(...classes: ClassNameValue[]) {\n return twMerge(clsx(classes));\n}\n","import { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport React, { ButtonHTMLAttributes } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const buttonVariants = cva(\n \"font-head transition-all rounded outline-hidden cursor-pointer duration-200 font-medium flex justify-center items-center disabled:opacity-60 disabled:cursor-not-allowed\",\n {\n variants: {\n variant: {\n default:\n \"shadow-md hover:shadow active:shadow-none bg-primary text-primary-foreground border-2 border-border transition hover:translate-y-1 active:translate-y-2 active:translate-x-1 hover:bg-primary-hover\",\n secondary:\n \"shadow-md hover:shadow active:shadow-none bg-secondary shadow-primary text-secondary-foreground border-2 border-border transition hover:translate-y-1 active:translate-y-2 active:translate-x-1 hover:bg-secondary-hover\",\n outline:\n \"shadow-md hover:shadow active:shadow-none bg-transparent border-2 transition hover:translate-y-1 active:translate-y-2 active:translate-x-1\",\n link: \"bg-transparent hover:underline\",\n ghost: \"bg-transparent hover:bg-accent\",\n },\n size: {\n sm: \"px-3 py-1 text-sm shadow hover:shadow-none\",\n md: \"px-4 py-1.5 text-base\",\n lg: \"px-6 lg:px-8 py-2 lg:py-3 text-md lg:text-lg\",\n icon: \"p-2\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n },\n);\n\nexport interface IButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, IButtonProps>(\n (\n {\n children,\n size = \"md\",\n className = \"\",\n variant = \"default\",\n asChild = false,\n ...props\n }: IButtonProps,\n forwardedRef,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={forwardedRef}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nButton.displayName = \"Button\";\n","import { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport React, { HTMLAttributes } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const badgeVariants = cva(\n \"font-head uppercase border-2 border-border inline-flex items-center\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n destructive: \"bg-destructive text-destructive-foreground\",\n outline: \"bg-transparent text-foreground\",\n },\n size: {\n sm: \"px-1.5 py-0.5 text-xs\",\n md: \"px-2 py-0.5 text-xs\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface IBadgeProps\n extends HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n asChild?: boolean;\n}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, IBadgeProps>(\n (\n {\n children,\n size = \"md\",\n className = \"\",\n variant = \"default\",\n asChild = false,\n ...props\n }: IBadgeProps,\n forwardedRef,\n ) => {\n const Comp = asChild ? Slot : \"span\";\n return (\n <Comp\n ref={forwardedRef}\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nBadge.displayName = \"Badge\";\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const cardVariants = cva(\n \"bg-card text-card-foreground border-2 border-border\",\n {\n variants: {\n variant: {\n default: \"shadow-md\",\n outlined: \"shadow-none\",\n elevated: \"shadow-lg\",\n interactive:\n \"shadow-md hover:shadow active:shadow-none transition-all hover:translate-y-1 active:translate-y-2 active:translate-x-1 cursor-pointer\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface ICardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n asChild?: boolean;\n}\n\nconst CardRoot = React.forwardRef<HTMLDivElement, ICardProps>(\n (\n {\n children,\n className = \"\",\n variant = \"default\",\n asChild = false,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"div\";\n return (\n <Comp\n ref={ref}\n className={cn(cardVariants({ variant }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\nCardRoot.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"p-4 border-b-2 border-border\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"Card.Header\";\n\nconst CardBody = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-4\", className)} {...props} />\n));\nCardBody.displayName = \"Card.Body\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"p-4 border-t-2 border-border flex items-center gap-2\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"Card.Footer\";\n\nconst CardComponent = Object.assign(CardRoot, {\n Header: CardHeader,\n Body: CardBody,\n Footer: CardFooter,\n});\n\nexport { CardComponent as Card };\n","\"use client\";\n\nimport { cn } from \"@/lib/utils\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport React, { ComponentPropsWithoutRef } from \"react\";\n\nconst Menu = DropdownMenu.Root;\nconst Trigger = DropdownMenu.Trigger;\n\ntype IMenuContent = ComponentPropsWithoutRef<typeof DropdownMenu.Content>;\n\nconst Content = ({ className, ...props }: IMenuContent) => (\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n side=\"bottom\"\n align=\"start\"\n className={cn(\n \"bg-card border-2 shadow-md absolute top-2 min-w-20\",\n className,\n )}\n {...props}\n />\n </DropdownMenu.Portal>\n);\n\nconst MenuItem = React.forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DropdownMenu.Item>\n>(({ className, ...props }, ref) => (\n <DropdownMenu.Item\n ref={ref}\n className={cn(\n \"relative text-card-foreground flex cursor-default select-none items-center rounded-xs px-2 py-1.5 text-sm outline-hidden transition-colors hover:bg-primary focus:bg-primary data-disabled:pointer-events-none data-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n));\nMenuItem.displayName = \"MenuItem\";\n\nconst MenuComponent = Object.assign(Menu, {\n Trigger,\n Content,\n Item: MenuItem,\n});\n\nexport { MenuComponent as Menu };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\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-overlay\",\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=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-2 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-2 data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className,\n )}\n {...props}\n >\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(\"flex flex-col gap-1.5 p-4\", className)}\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(\n \"text-foreground text-xl font-head font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nconst DrawerComponent = Object.assign(Drawer, {\n Trigger: DrawerTrigger,\n Portal: DrawerPortal,\n Overlay: DrawerOverlay,\n Close: DrawerClose,\n Content: DrawerContent,\n Header: DrawerHeader,\n Footer: DrawerFooter,\n Title: DrawerTitle,\n Description: DrawerDescription,\n});\n\nexport { DrawerComponent as Drawer };\n","import * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst avatarVariants = cva(\n \"relative flex h-10 w-10 border-2 overflow-hidden\",\n {\n variants: {\n shape: {\n circle: \"rounded-full\",\n square: \"rounded-none\",\n rounded: \"rounded-lg\",\n hexagon:\n \"rounded-none border-0 [clip-path:polygon(50%_0%,100%_25%,100%_75%,50%_100%,0%_75%,0%_25%)]\",\n diamond:\n \"rounded-none rotate-45 border-2\",\n squircle:\n \"rounded-none border-0 [clip-path:url(#squircle)]\",\n shield:\n \"rounded-none border-0 [clip-path:polygon(50%_0%,100%_0%,100%_70%,50%_100%,0%_70%,0%_0%)]\",\n },\n },\n defaultVariants: {\n shape: \"circle\",\n },\n },\n);\n\nexport type AvatarShape = NonNullable<VariantProps<typeof avatarVariants>[\"shape\"]>;\n\ninterface AvatarProps\n extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n VariantProps<typeof avatarVariants> {}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\n>(({ className, shape = \"circle\", children, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n data-shape={shape}\n className={cn(avatarVariants({ shape }), className)}\n {...props}\n >\n {shape === \"squircle\" && (\n <svg width=\"0\" height=\"0\" className=\"absolute\">\n <defs>\n <clipPath id=\"squircle\" clipPathUnits=\"objectBoundingBox\">\n <path d=\"M 0.5 0 C 0.9 0, 1 0.1, 1 0.5 C 1 0.9, 0.9 1, 0.5 1 C 0.1 1, 0 0.9, 0 0.5 C 0 0.1, 0.1 0, 0.5 0\" />\n </clipPath>\n </defs>\n </svg>\n )}\n {children}\n </AvatarPrimitive.Root>\n));\nAvatar.displayName = \"Avatar\";\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\n \"aspect-square h-full w-full [[data-shape=diamond]>&]:-rotate-45\",\n className,\n )}\n {...props}\n />\n));\nAvatarImage.displayName = \"Avatar.Image\";\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center bg-primary text-primary-foreground font-head text-sm\",\n \"[[data-shape=circle]>&]:rounded-full\",\n \"[[data-shape=rounded]>&]:rounded-lg\",\n \"[[data-shape=diamond]>&]:-rotate-45\",\n className,\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = \"Avatar.Fallback\";\n\nconst AvatarComponent = Object.assign(Avatar, {\n Image: AvatarImage,\n Fallback: AvatarFallback,\n});\n\nexport { AvatarComponent as Avatar, avatarVariants };\n","\"use client\";\n\nimport { cn } from \"@/lib/utils\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { MoreHorizontal } from \"lucide-react\";\nimport React, {\n ComponentPropsWithoutRef,\n createContext,\n useContext,\n useState,\n} from \"react\";\n\n// Context to share value control between Tabs root and MoreItem\nconst TabsValueContext = createContext<{\n setValue: (value: string) => void;\n}>({ setValue: () => {} });\n\ninterface TabsProps\n extends Omit<\n ComponentPropsWithoutRef<typeof TabsPrimitive.Root>,\n \"value\" | \"onValueChange\"\n > {\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nfunction TabsRoot({\n className,\n defaultValue,\n value: controlledValue,\n onValueChange,\n ...props\n}: TabsProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n const setValue = (v: string) => {\n if (!isControlled) setInternalValue(v);\n onValueChange?.(v);\n };\n\n return (\n <TabsValueContext.Provider value={{ setValue }}>\n <TabsPrimitive.Root\n className={cn(\"flex flex-col\", className)}\n value={currentValue}\n onValueChange={setValue}\n {...props}\n />\n </TabsValueContext.Provider>\n );\n}\nTabsRoot.displayName = \"Tabs\";\n\nconst TabsList = React.forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"flex items-center gap-0 border-b-2 bg-background\",\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = \"TabsList\";\n\nconst TabsTrigger = React.forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"font-head text-sm px-4 py-2 cursor-pointer transition-colors\",\n \"text-muted-foreground hover:text-foreground\",\n \"border-b-2 border-transparent -mb-0.5\",\n \"data-[state=active]:text-foreground data-[state=active]:border-primary\",\n \"outline-hidden focus-visible:ring-2 focus-visible:ring-primary\",\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = \"TabsTrigger\";\n\nconst TabsContent = React.forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\"pt-4 outline-hidden\", className)}\n {...props}\n />\n));\nTabsContent.displayName = \"TabsContent\";\n\ninterface TabsMoreProps {\n children: React.ReactNode;\n className?: string;\n label?: string;\n}\n\nfunction TabsMore({ children, className, label = \"More\" }: TabsMoreProps) {\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger\n className={cn(\n \"font-head text-sm px-4 py-2 cursor-pointer transition-colors\",\n \"text-muted-foreground hover:text-foreground\",\n \"border-b-2 border-transparent -mb-0.5\",\n \"outline-hidden focus-visible:ring-2 focus-visible:ring-primary\",\n \"flex items-center gap-1\",\n className,\n )}\n >\n {label}\n <MoreHorizontal className=\"size-4\" />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n side=\"bottom\"\n align=\"start\"\n className=\"bg-card border-2 shadow-md absolute top-2 min-w-20 z-50\"\n >\n {children}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\nTabsMore.displayName = \"TabsMore\";\n\ninterface TabsMoreItemProps {\n value: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst TabsMoreItem = React.forwardRef<HTMLDivElement, TabsMoreItemProps>(\n ({ value, children, className, ...props }, ref) => {\n const { setValue } = useContext(TabsValueContext);\n\n return (\n <DropdownMenu.Item\n ref={ref}\n className={cn(\n \"relative text-card-foreground flex cursor-default select-none items-center px-3 py-1.5 text-sm font-head outline-hidden transition-colors hover:bg-primary focus:bg-primary\",\n className,\n )}\n onSelect={() => setValue(value)}\n {...props}\n >\n {children}\n </DropdownMenu.Item>\n );\n },\n);\nTabsMoreItem.displayName = \"TabsMoreItem\";\n\nconst TabsComponent = Object.assign(TabsRoot, {\n List: TabsList,\n Trigger: TabsTrigger,\n Content: TabsContent,\n More: TabsMore,\n MoreItem: TabsMoreItem,\n});\n\nexport { TabsComponent as Tabs };\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Label = React.forwardRef<\n React.ComponentRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\n \"font-sans text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className,\n )}\n {...props}\n />\n));\nLabel.displayName = \"Label\";\n","import React, { InputHTMLAttributes } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type IInputProps = InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = React.forwardRef<HTMLInputElement, IInputProps>(\n ({ type = \"text\", className, ...props }, ref) => (\n <input\n ref={ref}\n type={type}\n className={cn(\n \"flex h-10 w-full border-2 bg-input px-4 py-2 font-sans text-sm shadow-md transition placeholder:text-muted-foreground focus:outline-none focus:shadow-xs focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n props[\"aria-invalid\"] &&\n \"border-destructive text-destructive shadow-xs shadow-destructive\",\n className,\n )}\n {...props}\n />\n ),\n);\nInput.displayName = \"Input\";\n","import React, { TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ITextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, ITextareaProps>(\n ({ className, ...props }, ref) => (\n <textarea\n ref={ref}\n rows={4}\n className={cn(\n \"flex w-full border-2 bg-background px-4 py-2 font-sans text-sm shadow-md transition placeholder:text-muted-foreground focus:outline-none focus:shadow-xs disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n ),\n);\nTextarea.displayName = \"Textarea\";\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nconst checkboxVariants = cva(\"border-2 shrink-0 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50\", {\n variants: {\n variant: {\n default:\n \"data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n outline: \"\",\n solid:\n \"data-[state=checked]:bg-foreground data-[state=checked]:text-background\",\n },\n size: {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nexport interface ICheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {}\n\nexport const Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n ICheckboxProps\n>(({ className, size, variant, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(checkboxVariants({ size, variant }), className)}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center h-full w-full\">\n <Check className=\"h-full w-full\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = \"Checkbox\";\n","import * as React from \"react\";\nimport * as RadioPrimitive from \"@radix-ui/react-radio-group\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst radioVariants = cva(\"border-2 border-border shrink-0 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50\", {\n variants: {\n variant: {\n default: \"\",\n outline: \"\",\n solid: \"\",\n },\n size: {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n shape: {\n circle: \"rounded-full\",\n diamond: \"rotate-45\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n shape: \"circle\",\n },\n});\n\nconst radioIndicatorVariants = cva(\"flex\", {\n variants: {\n variant: {\n default: \"bg-primary border-2 border-border\",\n outline: \"border-2 border-border\",\n solid: \"bg-border\",\n },\n size: {\n sm: \"h-2.5 w-2.5\",\n md: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n },\n shape: {\n circle: \"rounded-full\",\n diamond: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n shape: \"circle\",\n },\n});\n\nconst RadioGroupRoot = React.forwardRef<\n React.ComponentRef<typeof RadioPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <RadioPrimitive.Root\n ref={ref}\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n));\nRadioGroupRoot.displayName = \"RadioGroup\";\n\nexport interface IRadioGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof RadioPrimitive.Item>,\n VariantProps<typeof radioVariants> {}\n\nconst RadioGroupItem = React.forwardRef<\n React.ComponentRef<typeof RadioPrimitive.Item>,\n IRadioGroupItemProps\n>(({ className, size, variant, shape, children, ...props }, ref) => (\n <RadioPrimitive.Item\n ref={ref}\n className={cn(radioVariants({ size, variant, shape }), className)}\n {...props}\n >\n <RadioPrimitive.Indicator className=\"flex justify-center items-center\">\n <span className={radioIndicatorVariants({ size, variant, shape })} />\n </RadioPrimitive.Indicator>\n {children}\n </RadioPrimitive.Item>\n));\nRadioGroupItem.displayName = \"RadioGroup.Item\";\n\nexport const RadioGroup = Object.assign(RadioGroupRoot, {\n Item: RadioGroupItem,\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nconst SelectRoot = SelectPrimitive.Root;\n\nconst SelectTrigger = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 min-w-40 items-center justify-between border-2 bg-background px-4 py-2 font-sans text-sm shadow-md transition placeholder:text-muted-foreground focus:outline-none focus:shadow-xs disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = \"Select.Trigger\";\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectContent = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 min-w-[8rem] overflow-hidden border-2 bg-background text-foreground shadow-md 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\",\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 {...props}\n >\n <SelectPrimitive.ScrollUpButton className=\"flex cursor-default items-center justify-center py-1 text-muted-foreground\">\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n <SelectPrimitive.Viewport\n className={cn(\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectPrimitive.ScrollDownButton className=\"flex cursor-default items-center justify-center py-1 text-muted-foreground\">\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = \"Select.Content\";\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectItem = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center py-1.5 px-2 outline-none data-[highlighted]:bg-primary data-[highlighted]:text-primary-foreground focus:bg-primary focus:text-primary-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = \"Select.Item\";\n\nconst SelectLabel = SelectPrimitive.Label;\nconst SelectSeparator = SelectPrimitive.Separator;\n\nexport const Select = Object.assign(SelectRoot, {\n Trigger: SelectTrigger,\n Value: SelectValue,\n Content: SelectContent,\n Group: SelectGroup,\n Item: SelectItem,\n Label: SelectLabel,\n Separator: SelectSeparator,\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n ref={ref}\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center border-2 border-foreground disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-4 w-4 bg-primary border-2 mx-0.5 border-foreground ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 data-[state=checked]:bg-background\",\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = \"Switch\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Slider = React.forwardRef<\n React.ComponentRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-3 w-full grow overflow-hidden border-2 bg-background\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4.5 w-4.5 border-2 bg-background shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = \"Slider\";\n","import { ElementType, JSX, ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Variant → default element mapping ───\n\nconst variantElements = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n body: \"p\",\n small: \"p\",\n code: \"code\",\n} as const satisfies Record<string, keyof JSX.IntrinsicElements>;\n\n// ─── Variant → class mapping ───\n\nconst variantClasses: Record<keyof typeof variantElements, string> = {\n h1: \"font-head text-4xl lg:text-5xl\",\n h2: \"font-head text-3xl lg:text-4xl\",\n h3: \"font-head text-2xl\",\n h4: \"font-head text-xl\",\n h5: \"font-head text-lg\",\n h6: \"font-head text-base\",\n body: \"font-sans text-base\",\n small: \"font-sans text-sm text-muted-foreground\",\n code: \"font-mono text-sm bg-muted px-1.5 py-0.5 border\",\n};\n\n// ─── Types ───\n\ntype Variant = keyof typeof variantElements;\n\ntype TextProps<T extends ElementType = \"p\"> = {\n variant?: Variant;\n as?: T;\n className?: string;\n} & Omit<ComponentPropsWithoutRef<T>, \"className\">;\n\n// ─── Component ───\n\nexport function Text<T extends ElementType = \"p\">({\n variant = \"body\",\n as,\n className,\n ...props\n}: TextProps<T>) {\n const Tag = as ?? variantElements[variant];\n return <Tag className={cn(variantClasses[variant], className)} {...props} />;\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Label } from \"./Label\";\n\n/* ---------------------------------- Root ---------------------------------- */\n\ntype IFormLayoutProps = React.FormHTMLAttributes<HTMLFormElement>;\n\nconst FormLayoutRoot = React.forwardRef<HTMLFormElement, IFormLayoutProps>(\n ({ className, ...props }, ref) => (\n <form ref={ref} className={cn(\"space-y-8\", className)} {...props} />\n ),\n);\nFormLayoutRoot.displayName = \"FormLayout\";\n\n/* -------------------------------- Section --------------------------------- */\n\ninterface IFormSectionProps extends React.HTMLAttributes<HTMLFieldSetElement> {\n title?: string;\n description?: string;\n}\n\nconst FormSection = React.forwardRef<HTMLFieldSetElement, IFormSectionProps>(\n ({ className, title, description, children, ...props }, ref) => (\n <fieldset\n ref={ref}\n className={cn(\"space-y-6 border-0 p-0 m-0\", className)}\n {...props}\n >\n {(title || description) && (\n <div className=\"space-y-1 border-b-2 border-border pb-4\">\n {title && (\n <legend className=\"font-head text-lg font-normal\">\n {title}\n </legend>\n )}\n {description && (\n <p className=\"font-sans text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n )}\n <div className=\"space-y-4\">{children}</div>\n </fieldset>\n ),\n);\nFormSection.displayName = \"FormLayout.Section\";\n\n/* --------------------------------- Field ---------------------------------- */\n\ninterface IFormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n htmlFor?: string;\n description?: string;\n error?: string;\n required?: boolean;\n}\n\nconst FormField = React.forwardRef<HTMLDivElement, IFormFieldProps>(\n (\n { className, label, htmlFor, description, error, required, children, ...props },\n ref,\n ) => (\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props}>\n {label && (\n <Label htmlFor={htmlFor}>\n {label}\n {required && (\n <span className=\"ml-0.5 text-destructive\" aria-hidden=\"true\">\n *\n </span>\n )}\n </Label>\n )}\n {children}\n {description && !error && (\n <p className=\"font-sans text-xs text-muted-foreground\">{description}</p>\n )}\n {error && (\n <p className=\"font-sans text-xs text-destructive\" role=\"alert\">\n {error}\n </p>\n )}\n </div>\n ),\n);\nFormField.displayName = \"FormLayout.Field\";\n\n/* --------------------------------- Row ------------------------------------ */\n\ntype IFormRowProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst FormRow = React.forwardRef<HTMLDivElement, IFormRowProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"grid grid-cols-1 gap-4 sm:grid-cols-2\", className)}\n {...props}\n />\n ),\n);\nFormRow.displayName = \"FormLayout.Row\";\n\n/* -------------------------------- Actions --------------------------------- */\n\ninterface IFormActionsProps extends React.HTMLAttributes<HTMLDivElement> {\n align?: \"left\" | \"right\" | \"center\" | \"between\";\n}\n\nconst alignMap = {\n left: \"justify-start\",\n right: \"justify-end\",\n center: \"justify-center\",\n between: \"justify-between\",\n} as const;\n\nconst FormActions = React.forwardRef<HTMLDivElement, IFormActionsProps>(\n ({ className, align = \"right\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-3 border-t-2 border-border mt-6 pt-6\",\n alignMap[align],\n className,\n )}\n {...props}\n />\n ),\n);\nFormActions.displayName = \"FormLayout.Actions\";\n\n/* -------------------------------- Export ---------------------------------- */\n\nconst FormLayout = Object.assign(FormLayoutRoot, {\n Section: FormSection,\n Field: FormField,\n Row: FormRow,\n Actions: FormActions,\n});\n\nexport { FormLayout };\nexport type {\n IFormLayoutProps,\n IFormSectionProps,\n IFormFieldProps,\n IFormRowProps,\n IFormActionsProps,\n};\n","import { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport React, { AnchorHTMLAttributes } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const linkVariants = cva(\n \"font-head inline-flex items-center gap-1 cursor-pointer transition-colors duration-200 underline-offset-4\",\n {\n variants: {\n variant: {\n default:\n \"text-primary-foreground underline decoration-primary hover:decoration-2\",\n muted:\n \"text-muted-foreground underline decoration-muted hover:text-foreground hover:decoration-foreground\",\n destructive:\n \"text-destructive underline decoration-destructive hover:decoration-2\",\n plain: \"text-foreground hover:underline\",\n },\n size: {\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface ILinkProps\n extends AnchorHTMLAttributes<HTMLAnchorElement>,\n VariantProps<typeof linkVariants> {\n asChild?: boolean;\n}\n\nexport const Link = React.forwardRef<HTMLAnchorElement, ILinkProps>(\n (\n {\n children,\n className = \"\",\n variant = \"default\",\n size = \"md\",\n asChild = false,\n ...props\n }: ILinkProps,\n forwardedRef,\n ) => {\n const Comp = asChild ? Slot : \"a\";\n return (\n <Comp\n ref={forwardedRef}\n className={cn(linkVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nLink.displayName = \"Link\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const alertVariants = cva(\n \"relative w-full border-2 border-border p-4\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n solid: \"bg-secondary text-secondary-foreground\",\n },\n status: {\n error: \"bg-error text-error-foreground border-error-foreground\",\n success: \"bg-success text-success-foreground border-success-foreground\",\n warning: \"bg-warning text-warning-foreground border-warning-foreground\",\n info: \"bg-info text-info-foreground border-info-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface IAlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {}\n\nconst AlertRoot = React.forwardRef<HTMLDivElement, IAlertProps>(\n ({ className, variant, status, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant, status }), className)}\n {...props}\n />\n ),\n);\nAlertRoot.displayName = \"Alert\";\n\ntype IAlertTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\n\nconst AlertTitle = React.forwardRef<HTMLHeadingElement, IAlertTitleProps>(\n ({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"font-head text-base mb-1\", className)}\n {...props}\n />\n ),\n);\nAlertTitle.displayName = \"Alert.Title\";\n\ntype IAlertDescriptionProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst AlertDescription = React.forwardRef<\n HTMLDivElement,\n IAlertDescriptionProps\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"font-sans text-sm\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"Alert.Description\";\n\nconst AlertComponent = Object.assign(AlertRoot, {\n Title: AlertTitle,\n Description: AlertDescription,\n});\n\nexport { AlertComponent as Alert };\n","import { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport React, { ButtonHTMLAttributes } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const iconButtonVariants = cva(\n \"font-head transition-all outline-hidden cursor-pointer duration-200 inline-flex justify-center items-center disabled:opacity-60 disabled:cursor-not-allowed border-2 border-border\",\n {\n variants: {\n variant: {\n default:\n \"shadow-md hover:shadow active:shadow-none bg-primary text-primary-foreground transition hover:translate-y-1 active:translate-y-2 active:translate-x-1 hover:bg-primary-hover\",\n secondary:\n \"shadow-md hover:shadow active:shadow-none bg-secondary text-secondary-foreground shadow-primary transition hover:translate-y-1 active:translate-y-2 active:translate-x-1\",\n outline:\n \"shadow-md hover:shadow active:shadow-none bg-transparent transition hover:translate-y-1 active:translate-y-2 active:translate-x-1\",\n ghost: \"bg-transparent hover:bg-accent border-transparent shadow-none\",\n },\n size: {\n sm: \"p-1.5 [&_svg]:size-4\",\n md: \"p-2 [&_svg]:size-5\",\n lg: \"p-3 [&_svg]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface IIconButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof iconButtonVariants> {\n asChild?: boolean;\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, IIconButtonProps>(\n (\n {\n children,\n className = \"\",\n variant = \"default\",\n size = \"md\",\n asChild = false,\n ...props\n }: IIconButtonProps,\n forwardedRef,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={forwardedRef}\n className={cn(iconButtonVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nIconButton.displayName = \"IconButton\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const loaderVariants = cva(\"flex gap-1\", {\n variants: {\n variant: {\n default: \"[&>div]:bg-primary [&>div]:border-border\",\n secondary: \"[&>div]:bg-secondary [&>div]:border-border\",\n outline: \"[&>div]:bg-transparent [&>div]:border-border\",\n },\n size: {\n sm: \"[&>div]:w-2 [&>div]:h-2\",\n md: \"[&>div]:w-3 [&>div]:h-3\",\n lg: \"[&>div]:w-4 [&>div]:h-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nexport interface ILoaderProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\">,\n VariantProps<typeof loaderVariants> {\n count?: number;\n duration?: number;\n delayStep?: number;\n}\n\nexport const Loader = React.forwardRef<HTMLDivElement, ILoaderProps>(\n (\n {\n className,\n variant,\n size,\n count = 3,\n duration = 0.5,\n delayStep = 100,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n className={cn(loaderVariants({ variant, size }), className)}\n ref={ref}\n role=\"status\"\n aria-label=\"Loading...\"\n {...props}\n >\n {Array.from({ length: count }).map((_, i) => (\n <div\n key={i}\n className=\"border-2 animate-bounce\"\n style={{\n animationDuration: `${duration}s`,\n animationIterationCount: \"infinite\",\n animationDelay: `${i * delayStep}ms`,\n }}\n />\n ))}\n </div>\n );\n },\n);\n\nLoader.displayName = \"Loader\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ReactDialog from \"@radix-ui/react-dialog\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { X } from \"lucide-react\";\n\nconst Dialog = ReactDialog.Root;\nconst DialogTrigger = ReactDialog.Trigger;\n\n/* ─── Overlay ─── */\n\nconst overlayVariants = cva(\n \"fixed inset-0 z-50 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n {\n variants: {\n variant: {\n default: \"bg-overlay\",\n none: \"bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ninterface IDialogOverlayProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof overlayVariants> {}\n\nconst DialogOverlay = React.forwardRef<HTMLDivElement, IDialogOverlayProps>(\n ({ variant = \"default\", className, ...props }, ref) => (\n <ReactDialog.Overlay\n ref={ref}\n className={cn(overlayVariants({ variant }), className)}\n {...props}\n />\n ),\n);\nDialogOverlay.displayName = \"Dialog.Overlay\";\n\n/* ─── Content ─── */\n\nconst dialogContentVariants = cva(\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] border-2 border-border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n {\n variants: {\n size: {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n full: \"max-w-[90vw]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nexport interface IDialogContentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof dialogContentVariants> {\n overlay?: IDialogOverlayProps;\n}\n\nconst DialogContent = React.forwardRef<HTMLDivElement, IDialogContentProps>(\n ({ children, size = \"md\", className, overlay, ...props }, ref) => (\n <ReactDialog.Portal>\n <DialogOverlay {...overlay} />\n <ReactDialog.Content\n ref={ref}\n className={cn(dialogContentVariants({ size }), className)}\n {...props}\n >\n <VisuallyHidden>\n <ReactDialog.Title />\n </VisuallyHidden>\n <div className=\"flex flex-col relative\">{children}</div>\n </ReactDialog.Content>\n </ReactDialog.Portal>\n ),\n);\nDialogContent.displayName = \"Dialog.Content\";\n\n/* ─── Header ─── */\n\nconst DialogHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ children, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between border-b-2 border-border bg-primary text-primary-foreground px-4 min-h-12\",\n className,\n )}\n {...props}\n >\n {children}\n <ReactDialog.Close className=\"cursor-pointer\" asChild>\n <X size={18} />\n </ReactDialog.Close>\n </div>\n));\nDialogHeader.displayName = \"Dialog.Header\";\n\n/* ─── Body ─── */\n\nconst DialogBody = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-4\", className)} {...props} />\n));\nDialogBody.displayName = \"Dialog.Body\";\n\n/* ─── Description ─── */\n\nconst DialogDescription = React.forwardRef<\n HTMLParagraphElement,\n React.ComponentPropsWithoutRef<typeof ReactDialog.Description>\n>(({ className, ...props }, ref) => (\n <ReactDialog.Description\n ref={ref}\n className={cn(\"font-sans text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = \"Dialog.Description\";\n\n/* ─── Footer ─── */\n\nconst DialogFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-end border-t-2 border-border px-4 py-2 gap-2\",\n className,\n )}\n {...props}\n />\n));\nDialogFooter.displayName = \"Dialog.Footer\";\n\n/* ─── Composite export ─── */\n\nconst DialogComponent = Object.assign(Dialog, {\n Trigger: DialogTrigger,\n Content: DialogContent,\n Header: DialogHeader,\n Body: DialogBody,\n Description: DialogDescription,\n Footer: DialogFooter,\n});\n\nexport { DialogComponent as Dialog, dialogContentVariants };\n","import * as React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const dividerVariants = cva(\"border-border\", {\n variants: {\n orientation: {\n horizontal: \"w-full border-t-2\",\n vertical: \"h-full border-l-2 self-stretch\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n});\n\nexport interface IDividerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof dividerVariants> {\n label?: React.ReactNode;\n}\n\nexport const Divider = React.forwardRef<HTMLDivElement, IDividerProps>(\n ({ className, orientation = \"horizontal\", label, ...props }, ref) => {\n if (label && orientation === \"horizontal\") {\n return (\n <div\n ref={ref}\n role=\"separator\"\n className={cn(\"flex items-center gap-3 w-full\", className)}\n {...props}\n >\n <div className=\"flex-1 border-t-2 border-border\" />\n <span className=\"font-sans text-sm text-muted-foreground shrink-0\">\n {label}\n </span>\n <div className=\"flex-1 border-t-2 border-border\" />\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n className={cn(dividerVariants({ orientation }), className)}\n {...props}\n />\n );\n },\n);\n\nDivider.displayName = \"Divider\";\n","import * as React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const stackVariants = cva(\"flex\", {\n variants: {\n direction: {\n vertical: \"flex-col\",\n horizontal: \"flex-row\",\n },\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n \"2xl\": \"gap-12\",\n },\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n },\n },\n defaultVariants: {\n direction: \"vertical\",\n gap: \"md\",\n },\n});\n\nexport interface IStackProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof stackVariants> {\n as?: React.ElementType;\n}\n\nexport const Stack = React.forwardRef<HTMLElement, IStackProps>(\n (\n {\n children,\n className,\n direction = \"vertical\",\n gap = \"md\",\n align,\n justify,\n as: Comp = \"div\",\n ...props\n },\n ref,\n ) => {\n return (\n <Comp\n ref={ref}\n className={cn(stackVariants({ direction, gap, align, justify }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nStack.displayName = \"Stack\";\n","import * as React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const flexVariants = cva(\"flex\", {\n variants: {\n direction: {\n row: \"flex-row\",\n \"row-reverse\": \"flex-row-reverse\",\n column: \"flex-col\",\n \"column-reverse\": \"flex-col-reverse\",\n },\n wrap: {\n nowrap: \"flex-nowrap\",\n wrap: \"flex-wrap\",\n \"wrap-reverse\": \"flex-wrap-reverse\",\n },\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n \"2xl\": \"gap-12\",\n },\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n },\n },\n defaultVariants: {\n direction: \"row\",\n gap: \"md\",\n },\n});\n\nexport interface IFlexProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof flexVariants> {\n as?: React.ElementType;\n}\n\nexport const Flex = React.forwardRef<HTMLElement, IFlexProps>(\n (\n {\n children,\n className,\n direction = \"row\",\n wrap,\n gap = \"md\",\n align,\n justify,\n as: Comp = \"div\",\n ...props\n },\n ref,\n ) => {\n return (\n <Comp\n ref={ref}\n className={cn(\n flexVariants({ direction, wrap, gap, align, justify }),\n className,\n )}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nFlex.displayName = \"Flex\";\n","import * as React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const gridVariants = cva(\"grid\", {\n variants: {\n columns: {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n 5: \"grid-cols-5\",\n 6: \"grid-cols-6\",\n },\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n \"2xl\": \"gap-12\",\n },\n },\n defaultVariants: {\n columns: 1,\n gap: \"md\",\n },\n});\n\ntype ColumnCount = 1 | 2 | 3 | 4 | 5 | 6;\n\nconst smColsMap: Record<number, string> = {\n 1: \"sm:grid-cols-1\", 2: \"sm:grid-cols-2\", 3: \"sm:grid-cols-3\",\n 4: \"sm:grid-cols-4\", 5: \"sm:grid-cols-5\", 6: \"sm:grid-cols-6\",\n};\nconst mdColsMap: Record<number, string> = {\n 1: \"md:grid-cols-1\", 2: \"md:grid-cols-2\", 3: \"md:grid-cols-3\",\n 4: \"md:grid-cols-4\", 5: \"md:grid-cols-5\", 6: \"md:grid-cols-6\",\n};\nconst lgColsMap: Record<number, string> = {\n 1: \"lg:grid-cols-1\", 2: \"lg:grid-cols-2\", 3: \"lg:grid-cols-3\",\n 4: \"lg:grid-cols-4\", 5: \"lg:grid-cols-5\", 6: \"lg:grid-cols-6\",\n};\n\nexport interface IGridProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof gridVariants> {\n as?: React.ElementType;\n /** Column count at the `sm` breakpoint (640px+) */\n columnsSm?: ColumnCount;\n /** Column count at the `md` breakpoint (768px+) */\n columnsMd?: ColumnCount;\n /** Column count at the `lg` breakpoint (1024px+) */\n columnsLg?: ColumnCount;\n}\n\nexport const Grid = React.forwardRef<HTMLElement, IGridProps>(\n (\n {\n children,\n className,\n columns = 1,\n gap = \"md\",\n columnsSm,\n columnsMd,\n columnsLg,\n as: Comp = \"div\",\n ...props\n },\n ref,\n ) => {\n return (\n <Comp\n ref={ref}\n className={cn(\n gridVariants({ columns, gap }),\n columnsSm && smColsMap[columnsSm],\n columnsMd && mdColsMap[columnsMd],\n columnsLg && lgColsMap[columnsLg],\n className,\n )}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nGrid.displayName = \"Grid\";\n","import * as React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const containerVariants = cva(\"mx-auto px-4 sm:px-6 lg:px-8\", {\n variants: {\n size: {\n sm: \"max-w-2xl\",\n md: \"max-w-4xl\",\n lg: \"max-w-6xl\",\n xl: \"max-w-7xl\",\n full: \"max-w-full\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n});\n\nexport interface IContainerProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof containerVariants> {\n as?: React.ElementType;\n}\n\nexport const Container = React.forwardRef<HTMLElement, IContainerProps>(\n (\n {\n children,\n className,\n size = \"lg\",\n as: Comp = \"div\",\n ...props\n },\n ref,\n ) => {\n return (\n <Comp\n ref={ref}\n className={cn(containerVariants({ size }), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n },\n);\n\nContainer.displayName = \"Container\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitives from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst AccordionRoot = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitives.Root\n ref={ref}\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n));\nAccordionRoot.displayName = \"Accordion\";\n\n/* ─── Item ─── */\n\nconst AccordionItem = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitives.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitives.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitives.Item\n ref={ref}\n className={cn(\n \"overflow-hidden border-2 border-border shadow-md\",\n className,\n )}\n {...props}\n />\n));\nAccordionItem.displayName = \"Accordion.Item\";\n\n/* ─── Trigger ─── */\n\nconst AccordionTrigger = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitives.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitives.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitives.Header className=\"flex\">\n <AccordionPrimitives.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between text-left text-base font-head\",\n \"bg-background text-foreground border-border p-4\",\n \"transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary\",\n \"[&[data-state=open]>svg]:rotate-180 data-[state=open]:border-b-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"pointer-events-none size-5 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitives.Trigger>\n </AccordionPrimitives.Header>\n));\nAccordionTrigger.displayName = \"Accordion.Trigger\";\n\n/* ─── Content ─── */\n\nconst AccordionContent = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitives.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitives.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitives.Content\n ref={ref}\n className=\"overflow-hidden bg-muted text-sm font-sans transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"p-4\", className)}>{children}</div>\n </AccordionPrimitives.Content>\n));\nAccordionContent.displayName = \"Accordion.Content\";\n\n/* ─── Compound Export ─── */\n\nconst AccordionComponent = Object.assign(AccordionRoot, {\n Item: AccordionItem,\n Trigger: AccordionTrigger,\n Content: AccordionContent,\n});\n\nexport { AccordionComponent as Accordion };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitives from \"@radix-ui/react-scroll-area\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── ScrollBar ─── */\n\nconst ScrollBar = React.forwardRef<\n React.ComponentRef<typeof ScrollAreaPrimitives.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitives.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitives.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-px\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-px\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitives.ScrollAreaThumb className=\"relative flex-1 bg-border\" />\n </ScrollAreaPrimitives.ScrollAreaScrollbar>\n));\nScrollBar.displayName = \"ScrollArea.ScrollBar\";\n\n/* ─── Root ─── */\n\nconst ScrollAreaRoot = React.forwardRef<\n React.ComponentRef<typeof ScrollAreaPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitives.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitives.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitives.Viewport className=\"h-full w-full font-sans\">\n {children}\n </ScrollAreaPrimitives.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitives.Corner />\n </ScrollAreaPrimitives.Root>\n));\nScrollAreaRoot.displayName = \"ScrollArea\";\n\n/* ─── Compound Export ─── */\n\nconst ScrollAreaComponent = Object.assign(ScrollAreaRoot, {\n ScrollBar,\n});\n\nexport { ScrollAreaComponent as ScrollArea };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ISkeletonProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst Skeleton = React.forwardRef<HTMLDivElement, ISkeletonProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"animate-pulse bg-muted border-2 border-border\",\n className,\n )}\n {...props}\n />\n ),\n);\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ProgressPrimitives from \"@radix-ui/react-progress\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface IProgressProps\n extends React.ComponentPropsWithoutRef<typeof ProgressPrimitives.Root> {\n value?: number;\n}\n\nconst Progress = React.forwardRef<\n React.ComponentRef<typeof ProgressPrimitives.Root>,\n IProgressProps\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitives.Root\n ref={ref}\n className={cn(\n \"relative h-4 w-full overflow-hidden border-2 border-border bg-muted\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitives.Indicator\n className=\"h-full w-full flex-1 border-r-2 border-border bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitives.Root>\n));\nProgress.displayName = \"Progress\";\n\nexport { Progress };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitives from \"@radix-ui/react-tooltip\";\nimport { cn } from \"@/lib/utils\";\n\n/* --- Provider --- */\n\ntype ITooltipProviderProps =\n React.ComponentPropsWithoutRef<typeof TooltipPrimitives.Provider>;\n\nconst TooltipProvider = ({\n delayDuration = 0,\n ...props\n}: ITooltipProviderProps) => (\n <TooltipPrimitives.Provider delayDuration={delayDuration} {...props} />\n);\nTooltipProvider.displayName = \"Tooltip.Provider\";\n\n/* --- Root --- */\n\nconst TooltipRoot = TooltipPrimitives.Root;\n\n/* --- Trigger --- */\n\nconst TooltipTrigger = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitives.Trigger>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitives.Trigger>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitives.Trigger\n ref={ref}\n className={cn(className)}\n {...props}\n />\n));\nTooltipTrigger.displayName = \"Tooltip.Trigger\";\n\n/* --- Content --- */\n\ntype ITooltipContentProps =\n React.ComponentPropsWithoutRef<typeof TooltipPrimitives.Content>;\n\nconst TooltipContent = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitives.Content>,\n ITooltipContentProps\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitives.Portal>\n <TooltipPrimitives.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden border-2 border-border bg-background px-3 py-1.5 text-sm font-sans text-foreground shadow-md\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"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\",\n className,\n )}\n {...props}\n />\n </TooltipPrimitives.Portal>\n));\nTooltipContent.displayName = \"Tooltip.Content\";\n\n/* --- Composite export --- */\n\nconst TooltipComponent = Object.assign(TooltipRoot, {\n Provider: TooltipProvider,\n Trigger: TooltipTrigger,\n Content: TooltipContent,\n});\n\nexport { TooltipComponent as Tooltip };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CollapsiblePrimitives from \"@radix-ui/react-collapsible\";\nimport { cn } from \"@/lib/utils\";\n\n/* --- Root --- */\n\nconst CollapsibleRoot = React.forwardRef<\n React.ComponentRef<typeof CollapsiblePrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof CollapsiblePrimitives.Root>\n>(({ className, ...props }, ref) => (\n <CollapsiblePrimitives.Root\n ref={ref}\n className={cn(className)}\n {...props}\n />\n));\nCollapsibleRoot.displayName = \"Collapsible\";\n\n/* --- Trigger --- */\n\nconst CollapsibleTrigger = React.forwardRef<\n React.ComponentRef<typeof CollapsiblePrimitives.CollapsibleTrigger>,\n React.ComponentPropsWithoutRef<typeof CollapsiblePrimitives.CollapsibleTrigger>\n>(({ className, ...props }, ref) => (\n <CollapsiblePrimitives.CollapsibleTrigger\n ref={ref}\n className={cn(\"cursor-pointer\", className)}\n {...props}\n />\n));\nCollapsibleTrigger.displayName = \"Collapsible.Trigger\";\n\n/* --- Content --- */\n\nconst CollapsibleContent = React.forwardRef<\n React.ComponentRef<typeof CollapsiblePrimitives.CollapsibleContent>,\n React.ComponentPropsWithoutRef<typeof CollapsiblePrimitives.CollapsibleContent>\n>(({ className, ...props }, ref) => (\n <CollapsiblePrimitives.CollapsibleContent\n ref={ref}\n className={cn(\n \"overflow-hidden data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n className,\n )}\n {...props}\n />\n));\nCollapsibleContent.displayName = \"Collapsible.Content\";\n\n/* --- Composite export --- */\n\nconst CollapsibleComponent = Object.assign(CollapsibleRoot, {\n Trigger: CollapsibleTrigger,\n Content: CollapsibleContent,\n});\n\nexport { CollapsibleComponent as Collapsible };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as HoverCardPrimitives from \"@radix-ui/react-hover-card\";\nimport { cn } from \"@/lib/utils\";\n\n/* --- Root --- */\n\nconst HoverCardRoot = HoverCardPrimitives.Root;\n\n/* --- Trigger --- */\n\nconst HoverCardTrigger = React.forwardRef<\n React.ComponentRef<typeof HoverCardPrimitives.Trigger>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitives.Trigger>\n>(({ className, ...props }, ref) => (\n <HoverCardPrimitives.Trigger\n ref={ref}\n className={cn(className)}\n {...props}\n />\n));\nHoverCardTrigger.displayName = \"HoverCard.Trigger\";\n\n/* --- Content --- */\n\ntype IHoverCardContentProps =\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitives.Content>;\n\nconst HoverCardContent = React.forwardRef<\n React.ComponentRef<typeof HoverCardPrimitives.Content>,\n IHoverCardContentProps\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitives.Portal>\n <HoverCardPrimitives.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 border-2 border-border bg-background p-4 font-sans text-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"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\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitives.Portal>\n));\nHoverCardContent.displayName = \"HoverCard.Content\";\n\n/* --- Composite export --- */\n\nconst HoverCardComponent = Object.assign(HoverCardRoot, {\n Trigger: HoverCardTrigger,\n Content: HoverCardContent,\n});\n\nexport { HoverCardComponent as HoverCard };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitives from \"@radix-ui/react-popover\";\nimport { cn } from \"@/lib/utils\";\n\n/* --- Root --- */\n\nconst PopoverRoot = PopoverPrimitives.Root;\n\n/* --- Trigger --- */\n\nconst PopoverTrigger = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitives.Trigger>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitives.Trigger>\n>(({ className, ...props }, ref) => (\n <PopoverPrimitives.Trigger\n ref={ref}\n className={cn(className)}\n {...props}\n />\n));\nPopoverTrigger.displayName = \"Popover.Trigger\";\n\n/* --- Content --- */\n\ntype IPopoverContentProps =\n React.ComponentPropsWithoutRef<typeof PopoverPrimitives.Content>;\n\nconst PopoverContent = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitives.Content>,\n IPopoverContentProps\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitives.Portal>\n <PopoverPrimitives.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 border-2 border-border bg-background p-4 font-sans text-foreground shadow-md outline-hidden\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"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\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitives.Portal>\n));\nPopoverContent.displayName = \"Popover.Content\";\n\n/* --- Close --- */\n\nconst PopoverClose = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <PopoverPrimitives.Close\n ref={ref}\n className={cn(className)}\n {...props}\n />\n));\nPopoverClose.displayName = \"Popover.Close\";\n\n/* --- Composite export --- */\n\nconst PopoverComponent = Object.assign(PopoverRoot, {\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n Close: PopoverClose,\n});\n\nexport { PopoverComponent as Popover };\n","\"use client\";\n\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst ContextMenuRoot = ContextMenuPrimitive.Root;\n\n/* ─── Trigger ─── */\n\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\n\n/* ─── Group ─── */\n\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\n\n/* ─── Portal ─── */\n\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\n\n/* ─── Sub ─── */\n\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\n\n/* ─── RadioGroup ─── */\n\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\n/* ─── SubTrigger ─── */\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center border-2 border-transparent bg-background px-2 py-1.5 text-sm font-sans text-foreground outline-hidden data-[state=open]:border-border focus:border-border [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n));\nContextMenuSubTrigger.displayName = \"ContextMenu.SubTrigger\";\n\n/* ─── SubContent ─── */\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden border-2 border-border bg-background p-1 font-sans text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n));\nContextMenuSubContent.displayName = \"ContextMenu.SubContent\";\n\n/* ─── Content ─── */\n\nconst ContextMenuContent = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden border-2 border-border bg-background p-1 font-sans text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = \"ContextMenu.Content\";\n\n/* ─── Item ─── */\n\nconst ContextMenuItem = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent px-2 py-1.5 gap-2 text-sm outline-hidden focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nContextMenuItem.displayName = \"ContextMenu.Item\";\n\n/* ─── CheckboxItem ─── */\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent py-1.5 pl-8 pr-2 gap-2 text-sm font-sans text-foreground outline-hidden focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName = \"ContextMenu.CheckboxItem\";\n\n/* ─── RadioItem ─── */\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent py-1.5 pl-8 pr-2 gap-2 text-sm font-sans text-foreground outline-hidden focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = \"ContextMenu.RadioItem\";\n\n/* ─── Label ─── */\n\nconst ContextMenuLabel = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-head border-2 border-transparent text-foreground\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nContextMenuLabel.displayName = \"ContextMenu.Label\";\n\n/* ─── Separator ─── */\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ComponentRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-0.5 bg-border\", className)}\n {...props}\n />\n));\nContextMenuSeparator.displayName = \"ContextMenu.Separator\";\n\n/* ─── Shortcut ─── */\n\nconst ContextMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n \"ml-auto text-xs font-sans tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n);\nContextMenuShortcut.displayName = \"ContextMenu.Shortcut\";\n\n/* ─── Composite export ─── */\n\nconst ContextMenuComponent = Object.assign(ContextMenuRoot, {\n Trigger: ContextMenuTrigger,\n Content: ContextMenuContent,\n Item: ContextMenuItem,\n CheckboxItem: ContextMenuCheckboxItem,\n RadioItem: ContextMenuRadioItem,\n Label: ContextMenuLabel,\n Separator: ContextMenuSeparator,\n Shortcut: ContextMenuShortcut,\n Group: ContextMenuGroup,\n Portal: ContextMenuPortal,\n Sub: ContextMenuSub,\n SubContent: ContextMenuSubContent,\n SubTrigger: ContextMenuSubTrigger,\n RadioGroup: ContextMenuRadioGroup,\n});\n\nexport { ContextMenuComponent as ContextMenu };\n","\"use client\";\n\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst DropdownMenuRoot = DropdownMenuPrimitive.Root;\n\n/* ─── Trigger ─── */\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\n/* ─── Group ─── */\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\n/* ─── Portal ─── */\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\n/* ─── Sub ─── */\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\n/* ─── RadioGroup ─── */\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\n/* ─── SubTrigger ─── */\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center border-2 border-transparent bg-background px-2 py-1.5 text-sm font-sans outline-hidden focus:border-border gap-2 [&_svg]:pointer-events-none [&_svg]:w-4 [&_svg]:h-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = \"DropdownMenu.SubTrigger\";\n\n/* ─── SubContent ─── */\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden border-2 border-border bg-background p-1 font-sans text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName = \"DropdownMenu.SubContent\";\n\n/* ─── Content ─── */\n\nconst DropdownMenuContent = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden border-2 border-border bg-background p-1 font-sans text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = \"DropdownMenu.Content\";\n\n/* ─── Item ─── */\n\nconst DropdownMenuItem = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative gap-2 [&_svg]:pointer-events-none [&_svg]:w-4 [&_svg]:h-4 [&_svg]:shrink-0 flex cursor-default select-none items-center border-2 border-transparent bg-background px-2 py-1.5 text-sm font-sans outline-hidden transition-colors focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = \"DropdownMenu.Item\";\n\n/* ─── CheckboxItem ─── */\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent gap-2 py-1.5 pl-8 pr-2 text-sm font-sans text-foreground outline-hidden transition-colors focus:border-border 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=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = \"DropdownMenu.CheckboxItem\";\n\n/* ─── RadioItem ─── */\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent gap-2 py-1.5 pl-8 pr-2 text-sm font-sans outline-hidden transition-colors focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = \"DropdownMenu.RadioItem\";\n\n/* ─── Label ─── */\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-head\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = \"DropdownMenu.Label\";\n\n/* ─── Separator ─── */\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-0.5 bg-border\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = \"DropdownMenu.Separator\";\n\n/* ─── Shortcut ─── */\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n \"ml-auto text-xs font-sans tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n);\nDropdownMenuShortcut.displayName = \"DropdownMenu.Shortcut\";\n\n/* ─── Composite export ─── */\n\nconst DropdownMenuComponent = Object.assign(DropdownMenuRoot, {\n Trigger: DropdownMenuTrigger,\n Content: DropdownMenuContent,\n Item: DropdownMenuItem,\n CheckboxItem: DropdownMenuCheckboxItem,\n RadioItem: DropdownMenuRadioItem,\n Label: DropdownMenuLabel,\n Separator: DropdownMenuSeparator,\n Shortcut: DropdownMenuShortcut,\n Group: DropdownMenuGroup,\n Portal: DropdownMenuPortal,\n Sub: DropdownMenuSub,\n SubContent: DropdownMenuSubContent,\n SubTrigger: DropdownMenuSubTrigger,\n RadioGroup: DropdownMenuRadioGroup,\n});\n\nexport { DropdownMenuComponent as DropdownMenu };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Table ─── */\n\nconst TableRoot = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\n \"w-full caption-bottom border-2 border-border text-sm\",\n className,\n )}\n {...props}\n />\n </div>\n));\nTableRoot.displayName = \"Table\";\n\n/* ─── Header ─── */\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\"[&_tr]:border-b-2 [&_tr]:border-border\", className)}\n {...props}\n />\n));\nTableHeader.displayName = \"Table.Header\";\n\n/* ─── Body ─── */\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nTableBody.displayName = \"Table.Body\";\n\n/* ─── Footer ─── */\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t-2 border-border bg-muted font-sans text-foreground last:[&>tr]:border-b-0\",\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = \"Table.Footer\";\n\n/* ─── Row ─── */\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b-2 border-border transition-colors text-foreground bg-background font-sans data-[state=selected]:bg-muted data-[state=selected]:text-foreground\",\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = \"Table.Row\";\n\n/* ─── Head ─── */\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-head text-foreground [&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = \"Table.Head\";\n\n/* ─── Cell ─── */\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-4 align-middle [&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = \"Table.Cell\";\n\n/* ─── Caption ─── */\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground font-sans\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"Table.Caption\";\n\n/* ─── Composite export ─── */\n\nconst TableComponent = Object.assign(TableRoot, {\n Header: TableHeader,\n Body: TableBody,\n Footer: TableFooter,\n Row: TableRow,\n Head: TableHead,\n Cell: TableCell,\n Caption: TableCaption,\n});\n\nexport { TableComponent as Table };\n","\"use client\";\n\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst MenubarRoot = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Root\n ref={ref}\n className={cn(\n \"flex h-11 items-center space-x-1 border-2 border-border bg-background p-1 font-sans\",\n className,\n )}\n {...props}\n />\n));\nMenubarRoot.displayName = \"Menubar\";\n\n/* ─── Menu ─── */\n\nconst MenubarMenu = MenubarPrimitive.Menu;\n\n/* ─── Trigger ─── */\n\nconst MenubarTrigger = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center text-foreground px-3 py-1.5 text-sm border-2 border-transparent font-head outline-hidden focus:border-border data-[state=open]:border-border\",\n className,\n )}\n {...props}\n />\n));\nMenubarTrigger.displayName = \"Menubar.Trigger\";\n\n/* ─── Content ─── */\n\nconst MenubarContent = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(({ className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props }, ref) => (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[12rem] overflow-hidden border-2 border-border bg-background p-1 text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n </MenubarPrimitive.Portal>\n));\nMenubarContent.displayName = \"Menubar.Content\";\n\n/* ─── Group ─── */\n\nconst MenubarGroup = MenubarPrimitive.Group;\n\n/* ─── Portal ─── */\n\nconst MenubarPortal = MenubarPrimitive.Portal;\n\n/* ─── Sub ─── */\n\nconst MenubarSub = MenubarPrimitive.Sub;\n\n/* ─── RadioGroup ─── */\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup;\n\n/* ─── Item ─── */\n\nconst MenubarItem = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent px-2 py-1.5 text-sm font-sans outline-hidden focus:border-border data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nMenubarItem.displayName = \"Menubar.Item\";\n\n/* ─── CheckboxItem ─── */\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <MenubarPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent py-1.5 pl-8 pr-2 text-sm font-sans outline-hidden focus:border-border 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 <Check className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n));\nMenubarCheckboxItem.displayName = \"Menubar.CheckboxItem\";\n\n/* ─── RadioItem ─── */\n\nconst MenubarRadioItem = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <MenubarPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center border-2 border-transparent py-1.5 pl-8 pr-2 text-sm font-sans outline-hidden focus:border-border 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 <Circle className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n));\nMenubarRadioItem.displayName = \"Menubar.RadioItem\";\n\n/* ─── Label ─── */\n\nconst MenubarLabel = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-head\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nMenubarLabel.displayName = \"Menubar.Label\";\n\n/* ─── Separator ─── */\n\nconst MenubarSeparator = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-0.5 bg-border\", className)}\n {...props}\n />\n));\nMenubarSeparator.displayName = \"Menubar.Separator\";\n\n/* ─── Shortcut ─── */\n\nconst MenubarShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n);\nMenubarShortcut.displayName = \"Menubar.Shortcut\";\n\n/* ─── SubTrigger ─── */\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <MenubarPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center border-2 border-transparent px-3 py-1.5 text-sm font-sans outline-hidden focus:border-border data-[state=open]:border-border\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto size-4\" />\n </MenubarPrimitive.SubTrigger>\n));\nMenubarSubTrigger.displayName = \"Menubar.SubTrigger\";\n\n/* ─── SubContent ─── */\n\nconst MenubarSubContent = React.forwardRef<\n React.ComponentRef<typeof MenubarPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden border-2 border-border bg-background p-1 font-sans text-foreground shadow-md 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\",\n className,\n )}\n {...props}\n />\n));\nMenubarSubContent.displayName = \"Menubar.SubContent\";\n\n/* ─── Composite export ─── */\n\nconst MenubarComponent = Object.assign(MenubarRoot, {\n Menu: MenubarMenu,\n Trigger: MenubarTrigger,\n Content: MenubarContent,\n Item: MenubarItem,\n Separator: MenubarSeparator,\n Label: MenubarLabel,\n CheckboxItem: MenubarCheckboxItem,\n RadioGroup: MenubarRadioGroup,\n RadioItem: MenubarRadioItem,\n Portal: MenubarPortal,\n SubContent: MenubarSubContent,\n SubTrigger: MenubarSubTrigger,\n Group: MenubarGroup,\n Sub: MenubarSub,\n Shortcut: MenubarShortcut,\n});\n\nexport { MenubarComponent as Menubar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\ninterface INavigationMenuProps\n extends React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root> {\n viewport?: boolean;\n}\n\nconst NavigationMenuRoot = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Root>,\n INavigationMenuProps\n>(({ className, children, viewport = true, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"group/navigation-menu relative z-10 flex max-w-max font-head border-2 border-border p-1 bg-background flex-1 items-center justify-center\",\n className,\n )}\n data-viewport={viewport}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n));\nNavigationMenuRoot.displayName = \"NavigationMenu\";\n\n/* ─── List ─── */\n\nconst NavigationMenuList = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"group flex flex-1 list-none items-center font-head justify-center space-x-1\",\n className,\n )}\n {...props}\n />\n));\nNavigationMenuList.displayName = \"NavigationMenu.List\";\n\n/* ─── Item ─── */\n\nconst NavigationMenuItem = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Item\n ref={ref}\n className={cn(\"relative\", className)}\n {...props}\n />\n));\nNavigationMenuItem.displayName = \"NavigationMenu.Item\";\n\n/* ─── Trigger Style ─── */\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-10 w-max items-center justify-center bg-background text-foreground px-4 py-2 text-sm font-head transition-colors hover:bg-muted focus:outline-none disabled:pointer-events-none disabled:opacity-50\",\n);\n\n/* ─── Trigger ─── */\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDown\n className=\"relative top-[1px] ml-2 size-4 transition duration-200 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n));\nNavigationMenuTrigger.displayName = \"NavigationMenu.Trigger\";\n\n/* ─── Content ─── */\n\nconst NavigationMenuContent = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\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 className,\n )}\n {...props}\n />\n));\nNavigationMenuContent.displayName = \"NavigationMenu.Content\";\n\n/* ─── Link ─── */\n\nconst NavigationMenuLink = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Link>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Link>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Link\n ref={ref}\n className={cn(\n \"block select-none space-y-1 p-2 leading-none no-underline outline-none transition-colors hover:bg-muted focus-visible:ring-2 focus-visible:ring-primary focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n));\nNavigationMenuLink.displayName = \"NavigationMenu.Link\";\n\n/* ─── Viewport ─── */\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className=\"absolute top-full left-0 isolate z-50 flex justify-center\">\n <NavigationMenuPrimitive.Viewport\n ref={ref}\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden border-2 border-border bg-background text-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n {...props}\n />\n </div>\n));\nNavigationMenuViewport.displayName = \"NavigationMenu.Viewport\";\n\n/* ─── Indicator ─── */\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ComponentRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end font-head justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className,\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 bg-border\" />\n </NavigationMenuPrimitive.Indicator>\n));\nNavigationMenuIndicator.displayName = \"NavigationMenu.Indicator\";\n\n/* ─── Composite export ─── */\n\nconst NavigationMenuComponent = Object.assign(NavigationMenuRoot, {\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Trigger: NavigationMenuTrigger,\n Content: NavigationMenuContent,\n Link: NavigationMenuLink,\n Viewport: NavigationMenuViewport,\n Indicator: NavigationMenuIndicator,\n});\n\nexport {\n NavigationMenuComponent as NavigationMenu,\n navigationMenuTriggerStyle,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Group,\n Panel,\n Separator,\n type GroupProps,\n type PanelProps,\n type SeparatorProps,\n} from \"react-resizable-panels\";\nimport { GripVertical } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── PanelGroup ─── */\n\ninterface ResizablePanelGroupProps extends GroupProps {\n /** Alias for `orientation` – kept for backward compatibility. */\n direction?: GroupProps[\"orientation\"];\n}\n\nconst ResizablePanelGroup = ({\n className,\n direction,\n orientation,\n ...props\n}: ResizablePanelGroupProps) => (\n <Group\n orientation={orientation ?? direction}\n className={cn(\n \"flex h-full w-full font-sans data-[panel-group-direction=vertical]:flex-col\",\n className,\n )}\n {...props}\n />\n);\nResizablePanelGroup.displayName = \"Resizable.PanelGroup\";\n\n/* ─── Panel ─── */\n\nconst ResizablePanel = ({\n className,\n ...props\n}: PanelProps) => (\n <Panel\n className={cn(className)}\n {...props}\n />\n);\nResizablePanel.displayName = \"Resizable.Panel\";\n\n/* ─── Handle ─── */\n\ninterface IResizableHandleProps extends SeparatorProps {\n withHandle?: boolean;\n}\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: IResizableHandleProps) => (\n <Separator\n className={cn(\n \"relative flex w-0.5 items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-0.5 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-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center border-2 border-border bg-muted\">\n <GripVertical className=\"size-2.5\" />\n </div>\n )}\n </Separator>\n);\nResizableHandle.displayName = \"Resizable.Handle\";\n\n/* ─── Composite export ─── */\n\nconst ResizableComponent = Object.assign(ResizablePanelGroup, {\n Panel: ResizablePanel,\n Handle: ResizableHandle,\n});\n\nexport { ResizableComponent as Resizable };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\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 <Chart.Container />\");\n }\n\n return context;\n}\n\nexport interface IChartContainerProps\n extends React.HTMLAttributes<HTMLDivElement> {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n}\n\nconst ChartContainer = React.forwardRef<HTMLDivElement, IChartContainerProps>(\n ({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n ref={ref}\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center text-xs\",\n \"[&_.recharts-cartesian-axis-tick_text]:fill-foreground\",\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border\",\n \"[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border\",\n \"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-foreground\",\n \"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-foreground\",\n \"[&_.recharts-dot[stroke='#fff']]:stroke-transparent\",\n \"[&_.recharts-sector]:outline-hidden\",\n \"[&_.recharts-sector[stroke='#fff']]:stroke-border\",\n \"[&_.recharts-surface]:outline-hidden\",\n \"[&_.recharts-layer_path]:[fill-opacity:1]\",\n \"[&_.recharts-layer_path]:[stroke-width:2]\",\n \"[&_.recharts-layer_path]:[stroke:var(--color-border)]\",\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);\nChartContainer.displayName = \"Chart.Container\";\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\nexport interface IChartTooltipContentProps\n extends React.HTMLAttributes<HTMLDivElement> {\n active?: boolean;\n payload?: Array<Record<string, unknown>>;\n label?: string;\n labelFormatter?: (value: unknown, payload: Array<Record<string, unknown>>) => React.ReactNode;\n labelClassName?: string;\n formatter?: (value: unknown, name: string, item: Record<string, unknown>, index: number, payload: unknown) => React.ReactNode;\n color?: string;\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n}\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n IChartTooltipContentProps\n>(\n (\n {\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 },\n ref,\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[0] as Record<string, unknown>;\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-head\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return (\n <div className={cn(\"font-sans font-medium\", labelClassName)}>\n {value}\n </div>\n );\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"border-2 border-border bg-background grid min-w-[8rem] items-start gap-1.5 p-2.5 font-sans text-xs shadow-md\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item: Record<string, unknown>, index: number) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const itemPayload = item.payload as Record<string, unknown> | undefined;\n const indicatorColor = color || itemPayload?.fill || item.color;\n\n return (\n <div\n key={item.dataKey as string}\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 as string, item, index, itemPayload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0\",\n indicator === \"dot\" && \"size-2.5 border-2 border-border\",\n indicator === \"line\" && \"w-1\",\n indicator === \"dashed\" && \"w-0 border-[1.5px] border-dashed bg-transparent\",\n nestLabel && indicator === \"dashed\" && \"my-0.5\",\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n backgroundColor: indicator !== \"dashed\" ? (indicatorColor as string) : undefined,\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 as string)}\n </span>\n </div>\n {item.value != null && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {String(item.value)}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n },\n);\nChartTooltipContent.displayName = \"Chart.TooltipContent\";\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nexport interface IChartLegendContentProps\n extends React.HTMLAttributes<HTMLDivElement> {\n hideIcon?: boolean;\n nameKey?: string;\n payload?: Array<{ value?: string; color?: string; dataKey?: string }>;\n verticalAlign?: \"top\" | \"bottom\";\n}\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n IChartLegendContentProps\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref,\n ) => {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4 font-sans text-sm\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload.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-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 border-2 border-border shrink-0\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n },\n);\nChartLegendContent.displayName = \"Chart.LegendContent\";\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\nconst ChartRoot = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n (props, ref) => <div ref={ref} {...props} />,\n);\nChartRoot.displayName = \"Chart\";\n\nconst ChartComponent = Object.assign(ChartRoot, {\n Container: ChartContainer,\n Tooltip: ChartTooltip,\n TooltipContent: ChartTooltipContent,\n Legend: ChartLegend,\n LegendContent: ChartLegendContent,\n Style: ChartStyle,\n});\n\nexport { ChartComponent as Chart, useChart };\nexport type { ChartConfig as IChartConfig };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useTheme } from \"@/components/ThemeProvider\";\nimport { Toaster as SonnerToaster, type ToasterProps } from \"sonner\";\n\nexport type ISonnerProps = ToasterProps;\n\nconst Toaster = React.forwardRef<HTMLDivElement, ISonnerProps>(\n ({ ...props }, _ref) => {\n const { theme = \"system\" } = useTheme() as { theme?: string };\n\n return (\n <SonnerToaster\n theme={theme as ToasterProps[\"theme\"]}\n style={{ fontFamily: \"inherit\", overflowWrap: \"anywhere\" }}\n toastOptions={{\n unstyled: true,\n classNames: {\n toast:\n \"bg-background text-foreground border-border border-2 font-head shadow-md text-[13px] flex items-center gap-2.5 p-4 w-[356px] [&:has(button)]:justify-between\",\n description: \"font-sans\",\n actionButton:\n \"font-sans border-2 text-[12px] h-6 px-2 bg-primary text-primary-foreground border-border shrink-0\",\n cancelButton:\n \"font-sans border-2 text-[12px] h-6 px-2 bg-muted text-foreground border-border shrink-0\",\n error: \"bg-error text-error-foreground border-error-foreground\",\n loading:\n \"[&[data-sonner-toast]_[data-icon]]:flex [&[data-sonner-toast]_[data-icon]]:size-4 [&[data-sonner-toast]_[data-icon]]:relative [&[data-sonner-toast]_[data-icon]]:justify-start [&[data-sonner-toast]_[data-icon]]:items-center [&[data-sonner-toast]_[data-icon]]:flex-shrink-0\",\n },\n }}\n {...props}\n />\n );\n },\n);\nToaster.displayName = \"Toaster\";\n\nexport { Toaster };\n","\"use client\";\n\nimport { createContext, useContext, useEffect, useState, useCallback, useMemo } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeProviderState {\n theme: Theme;\n resolvedTheme: \"light\" | \"dark\";\n setTheme: (theme: Theme) => void;\n}\n\nconst ThemeContext = createContext<ThemeProviderState | undefined>(undefined);\n\nconst STORAGE_KEY = \"substrateui-theme\";\n\nfunction getSystemTheme(): \"light\" | \"dark\" {\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\nfunction applyClass(resolved: \"light\" | \"dark\") {\n document.documentElement.classList.remove(\"light\", \"dark\");\n document.documentElement.classList.add(resolved);\n}\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = STORAGE_KEY,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === \"undefined\") return defaultTheme;\n return (localStorage.getItem(storageKey) as Theme) || defaultTheme;\n });\n\n const [systemTheme, setSystemTheme] = useState<\"light\" | \"dark\">(getSystemTheme);\n\n const resolvedTheme = theme === \"system\" ? systemTheme : theme;\n\n // Sync the class on the document element whenever resolvedTheme changes\n useEffect(() => {\n applyClass(resolvedTheme);\n }, [resolvedTheme]);\n\n // Listen for OS theme changes\n useEffect(() => {\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (e: MediaQueryListEvent) => {\n setSystemTheme(e.matches ? \"dark\" : \"light\");\n };\n mq.addEventListener(\"change\", handler);\n return () => mq.removeEventListener(\"change\", handler);\n }, []);\n\n const setTheme = useCallback(\n (newTheme: Theme) => {\n localStorage.setItem(storageKey, newTheme);\n setThemeState(newTheme);\n },\n [storageKey],\n );\n\n const value = useMemo(\n () => ({ theme, resolvedTheme, setTheme }),\n [theme, resolvedTheme, setTheme],\n );\n\n return (\n <ThemeContext.Provider value={value}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Marquee ─── */\n\nexport interface IMarqueeProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Items to scroll across the marquee */\n items: string[];\n /** Speed of the animation in seconds (default: 20) */\n speed?: number;\n /** Pause on hover (default: false) */\n pauseOnHover?: boolean;\n /** Reverse direction (default: false) */\n reverse?: boolean;\n}\n\nconst Marquee = React.forwardRef<HTMLDivElement, IMarqueeProps>(\n (\n {\n items,\n speed = 20,\n pauseOnHover = false,\n reverse = false,\n className,\n ...props\n },\n ref,\n ) => {\n const direction = reverse ? \"reverse\" : \"normal\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex w-full overflow-x-hidden border-y-2 border-border bg-secondary text-secondary-foreground font-sans\",\n pauseOnHover && \"hover:[&>div]:animation-play-state-paused\",\n className,\n )}\n {...props}\n >\n <div\n className=\"flex whitespace-nowrap py-12 animate-marquee\"\n style={{\n animationDuration: `${speed}s`,\n animationDirection: direction,\n }}\n >\n {items.map((item, i) => (\n <span key={`${item}-${i}`} className=\"mx-4 text-4xl font-head\">\n {item}\n </span>\n ))}\n </div>\n\n <div\n className=\"flex absolute top-0 whitespace-nowrap py-12 animate-marquee2\"\n style={{\n animationDuration: `${speed}s`,\n animationDirection: direction,\n }}\n >\n {items.map((item, i) => (\n <span key={`${item}-${i}`} className=\"mx-4 text-4xl font-head\">\n {item}\n </span>\n ))}\n </div>\n </div>\n );\n },\n);\nMarquee.displayName = \"Marquee\";\n\nexport { Marquee };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── ImageCard ─── */\n\nexport interface IImageCardProps extends React.HTMLAttributes<HTMLElement> {\n /** URL of the image to display */\n imageUrl: string;\n /** Caption text below the image */\n caption: string;\n /** Alt text for the image (defaults to caption) */\n alt?: string;\n}\n\nconst ImageCard = React.forwardRef<HTMLElement, IImageCardProps>(\n ({ imageUrl, caption, alt, className, ...props }, ref) => (\n <figure\n ref={ref}\n className={cn(\n \"w-[250px] overflow-hidden border-2 border-border bg-card text-card-foreground font-sans shadow-md\",\n className,\n )}\n {...props}\n >\n <img\n className=\"w-full aspect-4/3 object-cover\"\n src={imageUrl}\n alt={alt ?? caption}\n />\n <figcaption className=\"border-t-2 border-border p-4 font-head text-sm\">\n {caption}\n </figcaption>\n </figure>\n ),\n);\nImageCard.displayName = \"ImageCard\";\n\nexport { ImageCard };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { OTPInput, OTPInputContext, type OTPInputProps } from \"input-otp\";\nimport { Dot } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type IInputOTPProps = OTPInputProps & {\n containerClassName?: string;\n};\n\nconst InputOTPRoot = React.forwardRef<HTMLInputElement, IInputOTPProps>(\n ({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\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);\nInputOTPRoot.displayName = \"InputOTP\";\n\nexport type IInputOTPGroupProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst InputOTPGroup = React.forwardRef<HTMLDivElement, IInputOTPGroupProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center\", className)}\n {...props}\n />\n ),\n);\nInputOTPGroup.displayName = \"InputOTP.Group\";\n\nexport interface IInputOTPSlotProps\n extends React.HTMLAttributes<HTMLDivElement> {\n index: number;\n}\n\nconst InputOTPSlot = React.forwardRef<HTMLDivElement, IInputOTPSlotProps>(\n ({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } =\n inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex size-10 items-center justify-center border-y-2 border-r-2 border-border bg-background font-sans text-sm text-foreground shadow-md transition-all first:border-l-2\",\n isActive && \"z-10 ring-2 ring-primary\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n );\n },\n);\nInputOTPSlot.displayName = \"InputOTP.Slot\";\n\nexport type IInputOTPSeparatorProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst InputOTPSeparator = React.forwardRef<\n HTMLDivElement,\n IInputOTPSeparatorProps\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Dot className=\"size-4\" />\n </div>\n));\nInputOTPSeparator.displayName = \"InputOTP.Separator\";\n\nconst InputOTPComponent = Object.assign(InputOTPRoot, {\n Group: InputOTPGroup,\n Slot: InputOTPSlot,\n Separator: InputOTPSeparator,\n});\n\nexport { InputOTPComponent as InputOTP };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport { cn } from \"@/lib/utils\";\nimport { buttonVariants } from \"./Button\";\n\n/* ─── Root ─── */\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\n/* ─── Trigger ─── */\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\n/* ─── Portal ─── */\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\n/* ─── Overlay ─── */\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-overlay data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogOverlay.displayName = \"AlertDialog.Overlay\";\n\n/* ─── Content ─── */\n\nexport type IAlertDialogContentProps =\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>;\n\nconst AlertDialogContent = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Content>,\n IAlertDialogContentProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 border-2 border-border bg-background p-6 shadow-lg duration-200 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 sm:max-w-lg\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = \"AlertDialog.Content\";\n\n/* ─── Header ─── */\n\nconst AlertDialogHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n));\nAlertDialogHeader.displayName = \"AlertDialog.Header\";\n\n/* ─── Footer ─── */\n\nconst AlertDialogFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col-reverse gap-3 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogFooter.displayName = \"AlertDialog.Footer\";\n\n/* ─── Title ─── */\n\nconst AlertDialogTitle = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-head\", className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = \"AlertDialog.Title\";\n\n/* ─── Description ─── */\n\nconst AlertDialogDescription = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm font-sans text-foreground\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName = \"AlertDialog.Description\";\n\n/* ─── Action ─── */\n\nconst AlertDialogAction = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = \"AlertDialog.Action\";\n\n/* ─── Cancel ─── */\n\nconst AlertDialogCancel = React.forwardRef<\n React.ComponentRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(buttonVariants({ variant: \"secondary\" }), className)}\n {...props}\n />\n));\nAlertDialogCancel.displayName = \"AlertDialog.Cancel\";\n\n/* ─── Composite export ─── */\n\nconst AlertDialogComponent = Object.assign(AlertDialog, {\n Trigger: AlertDialogTrigger,\n Content: AlertDialogContent,\n Header: AlertDialogHeader,\n Footer: AlertDialogFooter,\n Title: AlertDialogTitle,\n Description: AlertDialogDescription,\n Action: AlertDialogAction,\n Cancel: AlertDialogCancel,\n});\n\nexport { AlertDialogComponent as AlertDialog };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\">\n>(({ ...props }, ref) => (\n <nav ref={ref} aria-label=\"breadcrumb\" {...props} />\n));\nBreadcrumb.displayName = \"Breadcrumb\";\n\n/* ─── List ─── */\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 text-sm font-sans break-words text-foreground sm:gap-2.5\",\n className,\n )}\n {...props}\n />\n));\nBreadcrumbList.displayName = \"Breadcrumb.List\";\n\n/* ─── Item ─── */\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n));\nBreadcrumbItem.displayName = \"Breadcrumb.Item\";\n\n/* ─── Link ─── */\n\ninterface IBreadcrumbLinkProps\n extends React.ComponentPropsWithoutRef<\"a\"> {\n asChild?: boolean;\n}\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, IBreadcrumbLinkProps>(\n ({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\";\n return (\n <Comp\n ref={ref}\n className={cn(\"hover:underline decoration-primary underline-offset-4\", className)}\n {...props}\n />\n );\n },\n);\nBreadcrumbLink.displayName = \"Breadcrumb.Link\";\n\n/* ─── Page ─── */\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-head\", className)}\n {...props}\n />\n));\nBreadcrumbPage.displayName = \"Breadcrumb.Page\";\n\n/* ─── Separator ─── */\n\nconst BreadcrumbSeparator = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ children, className, ...props }, ref) => (\n <li\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n));\nBreadcrumbSeparator.displayName = \"Breadcrumb.Separator\";\n\n/* ─── Ellipsis ─── */\n\nconst BreadcrumbEllipsis = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\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));\nBreadcrumbEllipsis.displayName = \"Breadcrumb.Ellipsis\";\n\n/* ─── Composite export ─── */\n\nconst BreadcrumbComponent = Object.assign(Breadcrumb, {\n List: BreadcrumbList,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n Page: BreadcrumbPage,\n Separator: BreadcrumbSeparator,\n Ellipsis: BreadcrumbEllipsis,\n});\n\nexport { BreadcrumbComponent as Breadcrumb };\nexport type { IBreadcrumbLinkProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { buttonVariants } from \"./Button\";\n\nexport type ICalendarProps = React.ComponentProps<typeof DayPicker>;\n\nconst Calendar = React.forwardRef<HTMLDivElement, ICalendarProps>(\n ({ className, classNames, showOutsideDays = true, ...props }, ref) => (\n <div ref={ref}>\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"border-2 border-border bg-background p-3 font-head shadow-md\",\n className,\n )}\n classNames={{\n months: \"flex flex-col sm:flex-row gap-2\",\n month: \"flex flex-col gap-4\",\n month_caption:\n \"flex justify-center pt-1 relative items-center w-full text-foreground\",\n caption_label: \"text-sm font-head\",\n nav: \"gap-1 flex items-center\",\n button_previous: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon\" }),\n \"size-7 bg-transparent p-0 absolute left-1\",\n ),\n button_next: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon\" }),\n \"size-7 bg-transparent p-0 absolute right-1\",\n ),\n month_grid: \"w-full border-collapse space-y-1\",\n weekdays: \"flex\",\n weekday: \"text-muted-foreground w-9 font-sans text-[0.8rem]\",\n week: \"flex w-full mt-2\",\n day: \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20\",\n day_button: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon\" }),\n \"size-9 p-0 font-sans aria-selected:opacity-100\",\n ),\n selected: \"bg-primary text-primary-foreground!\",\n today: \"bg-muted text-foreground!\",\n outside: \"text-muted-foreground opacity-50\",\n disabled: \"text-muted-foreground opacity-50\",\n range_middle:\n \"aria-selected:bg-primary/50! aria-selected:text-primary-foreground\",\n range_start:\n \"aria-selected:bg-primary! aria-selected:text-primary-foreground\",\n range_end:\n \"aria-selected:bg-primary! aria-selected:text-primary-foreground\",\n hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation, className: chevronClassName, ...chevronProps }) => {\n const Icon = orientation === \"left\" ? ChevronLeft : ChevronRight;\n return (\n <Icon\n className={cn(\"size-4\", chevronClassName)}\n {...chevronProps}\n />\n );\n },\n }}\n {...props}\n />\n </div>\n ),\n);\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\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\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"./Button\";\nimport type { IButtonProps } from \"./Button\";\n\n/* ─── Types ─── */\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\nexport interface ICarouselProps {\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 plugins?: CarouselPlugin;\n} & ICarouselProps;\n\n/* ─── Context ─── */\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n return context;\n}\n\n/* ─── Root ─── */\n\nconst CarouselRoot = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & ICarouselProps\n>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref,\n ) => {\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((emblaApi: CarouselApi) => {\n if (!emblaApi) return;\n setCanScrollPrev(emblaApi.canScrollPrev());\n setCanScrollNext(emblaApi.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 return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n 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 ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n },\n);\nCarouselRoot.displayName = \"Carousel\";\n\n/* ─── Content ─── */\n\nconst CarouselContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className,\n )}\n {...props}\n />\n </div>\n );\n});\nCarouselContent.displayName = \"Carousel.Content\";\n\n/* ─── Item ─── */\n\nconst CarouselItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel();\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n});\nCarouselItem.displayName = \"Carousel.Item\";\n\n/* ─── Previous ─── */\n\nconst CarouselPrevious = React.forwardRef<HTMLButtonElement, IButtonProps>(\n ({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8\",\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);\nCarouselPrevious.displayName = \"Carousel.Previous\";\n\n/* ─── Next ─── */\n\nconst CarouselNext = React.forwardRef<HTMLButtonElement, IButtonProps>(\n ({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -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);\nCarouselNext.displayName = \"Carousel.Next\";\n\n/* ─── Composite export ─── */\n\nconst CarouselComponent = Object.assign(CarouselRoot, {\n Content: CarouselContent,\n Item: CarouselItem,\n Previous: CarouselPrevious,\n Next: CarouselNext,\n});\n\nexport { CarouselComponent as Carousel, useCarousel };\nexport type { CarouselApi };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { buttonVariants } from \"@/components/ui/Button\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst PaginationRoot = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\">\n>(({ className, ...props }, ref) => (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n));\nPaginationRoot.displayName = \"Pagination\";\n\n/* ─── Content ─── */\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentPropsWithoutRef<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n));\nPaginationContent.displayName = \"Pagination.Content\";\n\n/* ─── Item ─── */\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n));\nPaginationItem.displayName = \"Pagination.Item\";\n\n/* ─── Link ─── */\n\ninterface IPaginationLinkProps\n extends React.ComponentPropsWithoutRef<\"a\"> {\n isActive?: boolean;\n size?: \"sm\" | \"md\" | \"lg\" | \"icon\";\n}\n\nconst PaginationLink = React.forwardRef<\n HTMLAnchorElement,\n IPaginationLinkProps\n>(({ className, isActive, size = \"icon\", ...props }, ref) => (\n <a\n ref={ref}\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: \"ghost\",\n size,\n }),\n \"border-2 border-border\",\n isActive && \"bg-primary text-primary-foreground\",\n className,\n )}\n {...props}\n />\n));\nPaginationLink.displayName = \"Pagination.Link\";\n\n/* ─── Previous ─── */\n\nconst PaginationPrevious = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<typeof PaginationLink>\n>(({ className, ...props }, ref) => (\n <PaginationLink\n ref={ref}\n aria-label=\"Go to previous page\"\n size=\"md\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"size-4\" />\n <span>Previous</span>\n </PaginationLink>\n));\nPaginationPrevious.displayName = \"Pagination.Previous\";\n\n/* ─── Next ─── */\n\nconst PaginationNext = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<typeof PaginationLink>\n>(({ className, ...props }, ref) => (\n <PaginationLink\n ref={ref}\n aria-label=\"Go to next page\"\n size=\"md\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"size-4\" />\n </PaginationLink>\n));\nPaginationNext.displayName = \"Pagination.Next\";\n\n/* ─── Ellipsis ─── */\n\nconst PaginationEllipsis = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n aria-hidden\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 pages</span>\n </span>\n));\nPaginationEllipsis.displayName = \"Pagination.Ellipsis\";\n\n/* ─── Composite export ─── */\n\nconst Pagination = Object.assign(PaginationRoot, {\n Content: PaginationContent,\n Item: PaginationItem,\n Link: PaginationLink,\n Previous: PaginationPrevious,\n Next: PaginationNext,\n Ellipsis: PaginationEllipsis,\n});\n\nexport { Pagination };\nexport type { IPaginationLinkProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst Sheet = SheetPrimitive.Root;\nconst SheetTrigger = SheetPrimitive.Trigger;\nconst SheetClose = SheetPrimitive.Close;\n\n/* ─── Overlay ─── */\n\nconst SheetOverlay = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-overlay data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n className,\n )}\n {...props}\n />\n));\nSheetOverlay.displayName = \"Sheet.Overlay\";\n\n/* ─── Content ─── */\n\nconst sheetContentVariants = cva(\n \"fixed z-50 flex flex-col gap-4 border-2 border-border bg-background transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l-2 sm:max-w-sm data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right\",\n left:\n \"inset-y-0 left-0 h-full w-3/4 border-r-2 sm:max-w-sm data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left\",\n top:\n \"inset-x-0 top-0 h-auto border-b-2 data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 h-auto border-t-2 data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n },\n);\n\nexport interface ISheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetContentVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Content>,\n ISheetContentProps\n>(({ children, side = \"right\", className, ...props }, ref) => (\n <SheetPrimitive.Portal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetContentVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 cursor-pointer ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPrimitive.Portal>\n));\nSheetContent.displayName = \"Sheet.Content\";\n\n/* ─── Header ─── */\n\nconst SheetHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n));\nSheetHeader.displayName = \"Sheet.Header\";\n\n/* ─── Title ─── */\n\nconst SheetTitle = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"font-head text-lg text-foreground\", className)}\n {...props}\n />\n));\nSheetTitle.displayName = \"Sheet.Title\";\n\n/* ─── Description ─── */\n\nconst SheetDescription = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"font-sans text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nSheetDescription.displayName = \"Sheet.Description\";\n\n/* ─── Footer ─── */\n\nconst SheetFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"mt-auto flex flex-col gap-3 p-4 border-t-2 border-border\",\n className,\n )}\n {...props}\n />\n));\nSheetFooter.displayName = \"Sheet.Footer\";\n\n/* ─── Composite export ─── */\n\nconst SheetComponent = Object.assign(Sheet, {\n Trigger: SheetTrigger,\n Close: SheetClose,\n Content: SheetContent,\n Header: SheetHeader,\n Title: SheetTitle,\n Description: SheetDescription,\n Footer: SheetFooter,\n});\n\nexport { SheetComponent as Sheet, sheetContentVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * 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\";\nimport { Label } from \"@/components/ui/Label\";\nimport { cn } from \"@/lib/utils\";\n\n/* ─── Root ─── */\n\nconst Form = FormProvider;\n\n/* ─── Field context ─── */\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\nfunction FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({ ...props }: ControllerProps<TFieldValues, TName>) {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n}\nFormField.displayName = \"Form.Field\";\n\n/* ─── useFormField hook ─── */\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\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 <Form.Field>\");\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\n/* ─── Item ─── */\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n ref={ref}\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = \"Form.Item\";\n\n/* ─── Label ─── */\n\nconst FormLabel = React.forwardRef<\n React.ComponentRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n data-error={!!error}\n className={cn(\"font-head\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = \"Form.Label\";\n\n/* ─── Control ─── */\n\nconst FormControl = React.forwardRef<\n React.ComponentRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = \"Form.Control\";\n\n/* ─── Description ─── */\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"font-sans text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = \"Form.Description\";\n\n/* ─── Message ─── */\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"font-sans text-sm text-red-500\", className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = \"Form.Message\";\n\n/* ─── Composite export ─── */\n\nconst FormComponent = Object.assign(Form, {\n Field: FormField,\n Item: FormItem,\n Label: FormLabel,\n Control: FormControl,\n Description: FormDescription,\n Message: FormMessage,\n});\n\nexport { FormComponent as Form, useFormField };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Dialog } from \"./Dialog\";\n\n/* ─── Command ─── */\n\nconst CommandRoot = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden border-2 border-border bg-background font-sans text-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommandRoot.displayName = \"Command\";\n\n/* ─── Dialog ─── */\n\ninterface ICommandDialogProps\n extends React.ComponentPropsWithoutRef<typeof Dialog> {\n title?: string;\n description?: string;\n}\n\nconst CommandDialog = ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n title = \"Command Palette\",\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n description = \"Search for a command to run...\",\n children,\n ...props\n}: ICommandDialogProps) => (\n <Dialog {...props}>\n <Dialog.Content className=\"overflow-hidden p-0 border-0\">\n <CommandRoot className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-head [&_[cmdk-group-heading]]:mb-1 [&_[cmdk-group]]:px-2 [&_[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 </CommandRoot>\n </Dialog.Content>\n </Dialog>\n);\nCommandDialog.displayName = \"Command.Dialog\";\n\n/* ─── Input ─── */\n\nconst CommandInput = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex h-9 gap-2 items-center border-b-2 border-border px-3\">\n <Search className=\"size-4 shrink-0\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\nCommandInput.displayName = \"Command.Input\";\n\n/* ─── List ─── */\n\nconst CommandList = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n />\n));\nCommandList.displayName = \"Command.List\";\n\n/* ─── Empty ─── */\n\nconst CommandEmpty = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className={cn(\"py-6 text-center text-sm font-sans\", className)}\n {...props}\n />\n));\nCommandEmpty.displayName = \"Command.Empty\";\n\n/* ─── Group ─── */\n\nconst CommandGroup = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"text-foreground overflow-hidden p-2 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-base [&_[cmdk-group-heading]]:font-head\",\n className,\n )}\n {...props}\n />\n));\nCommandGroup.displayName = \"Command.Group\";\n\n/* ─── Separator ─── */\n\nconst CommandSeparator = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-0.5 bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = \"Command.Separator\";\n\n/* ─── Item ─── */\n\nconst CommandItem = React.forwardRef<\n React.ComponentRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center px-2 py-1.5 gap-2 text-sm text-foreground outline-border outline-0 aria-selected:outline-2 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));\nCommandItem.displayName = \"Command.Item\";\n\n/* ─── Shortcut ─── */\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground font-sans\",\n className,\n )}\n {...props}\n />\n);\nCommandShortcut.displayName = \"Command.Shortcut\";\n\n/* ─── Composite export ─── */\n\nconst CommandComponent = Object.assign(CommandRoot, {\n Dialog: CommandDialog,\n Input: CommandInput,\n List: CommandList,\n Empty: CommandEmpty,\n Group: CommandGroup,\n Separator: CommandSeparator,\n Item: CommandItem,\n Shortcut: CommandShortcut,\n});\n\nexport { CommandComponent as Command };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"./Button\";\nimport { Command } from \"./Command\";\nimport { Popover } from \"./Popover\";\n\n/* ─── Types ─── */\n\nexport interface IComboboxItem {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface IComboboxProps {\n items: IComboboxItem[];\n value?: string;\n onValueChange?: (value: string) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n}\n\n/* ─── Combobox ─── */\n\nconst ComboboxRoot = React.forwardRef<HTMLButtonElement, IComboboxProps>(\n (\n {\n items,\n value: controlledValue,\n onValueChange,\n placeholder = \"Select...\",\n searchPlaceholder = \"Search...\",\n emptyText = \"No results found.\",\n className,\n disabled = false,\n },\n ref,\n ) => {\n const [open, setOpen] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState(\"\");\n\n const value = controlledValue ?? internalValue;\n const setValue = React.useCallback(\n (newValue: string) => {\n if (onValueChange) {\n onValueChange(newValue);\n } else {\n setInternalValue(newValue);\n }\n },\n [onValueChange],\n );\n\n const selectedItem = items.find((item) => item.value === value);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn(\"w-[200px] justify-between\", className)}\n >\n {selectedItem ? selectedItem.label : placeholder}\n <ChevronsUpDown className=\"ml-2 size-4 shrink-0 opacity-50\" />\n </Button>\n </Popover.Trigger>\n <Popover.Content className=\"w-[200px] border-0! p-0\">\n <Command>\n <Command.Input placeholder={searchPlaceholder} />\n <Command.List>\n <Command.Empty>{emptyText}</Command.Empty>\n <Command.Group>\n {items.map((item) => (\n <Command.Item\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n onSelect={(currentValue) => {\n setValue(currentValue === value ? \"\" : currentValue);\n setOpen(false);\n }}\n >\n <Check\n className={cn(\n \"mr-2 size-4\",\n value === item.value ? \"opacity-100\" : \"opacity-0\",\n )}\n />\n {item.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </Popover.Content>\n </Popover>\n );\n },\n);\nComboboxRoot.displayName = \"Combobox\";\n\n/* ─── Multi-Select Combobox ─── */\n\nexport interface IComboboxMultiProps {\n items: IComboboxItem[];\n values?: string[];\n onValuesChange?: (values: string[]) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n}\n\nconst ComboboxMulti = React.forwardRef<HTMLButtonElement, IComboboxMultiProps>(\n (\n {\n items,\n values: controlledValues,\n onValuesChange,\n placeholder = \"Select...\",\n searchPlaceholder = \"Search...\",\n emptyText = \"No results found.\",\n className,\n disabled = false,\n },\n ref,\n ) => {\n const [open, setOpen] = React.useState(false);\n const [internalValues, setInternalValues] = React.useState<string[]>([]);\n\n const values = controlledValues ?? internalValues;\n const setValues = React.useCallback(\n (newValues: string[]) => {\n if (onValuesChange) {\n onValuesChange(newValues);\n } else {\n setInternalValues(newValues);\n }\n },\n [onValuesChange],\n );\n\n const selectedLabels = items\n .filter((item) => values.includes(item.value))\n .map((item) => item.label);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn(\"w-[200px] justify-between\", className)}\n >\n <span className=\"truncate\">\n {selectedLabels.length > 0\n ? selectedLabels.join(\", \")\n : placeholder}\n </span>\n <ChevronsUpDown className=\"ml-2 size-4 shrink-0 opacity-50\" />\n </Button>\n </Popover.Trigger>\n <Popover.Content className=\"w-[200px] border-0! p-0\">\n <Command>\n <Command.Input placeholder={searchPlaceholder} />\n <Command.List>\n <Command.Empty>{emptyText}</Command.Empty>\n <Command.Group>\n {items.map((item) => (\n <Command.Item\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n onSelect={(currentValue) => {\n const newValues = values.includes(currentValue)\n ? values.filter((v) => v !== currentValue)\n : [...values, currentValue];\n setValues(newValues);\n }}\n >\n <Check\n className={cn(\n \"mr-2 size-4\",\n values.includes(item.value)\n ? \"opacity-100\"\n : \"opacity-0\",\n )}\n />\n {item.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </Popover.Content>\n </Popover>\n );\n },\n);\nComboboxMulti.displayName = \"Combobox.Multi\";\n\n/* ─── Composite export ─── */\n\nconst ComboboxComponent = Object.assign(ComboboxRoot, {\n Multi: ComboboxMulti,\n});\n\nexport { ComboboxComponent as Combobox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n type SortingState,\n type VisibilityState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { ArrowUpDown, ChevronDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"./Button\";\nimport { Input } from \"./Input\";\nimport { Table } from \"./Table\";\nimport { DropdownMenu } from \"./DropdownMenu\";\n\n/* ─── Types ─── */\n\nexport interface IDataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n filterColumn?: string;\n filterPlaceholder?: string;\n showColumnToggle?: boolean;\n showPagination?: boolean;\n showSelectedCount?: boolean;\n className?: string;\n}\n\n/* ─── Toolbar ─── */\n\ninterface IDataTableToolbarProps {\n filterValue: string;\n onFilterChange: (value: string) => void;\n filterPlaceholder: string;\n showColumnToggle: boolean;\n columns: { id: string; getCanHide: () => boolean; getIsVisible: () => boolean; toggleVisibility: (value: boolean) => void }[];\n}\n\nconst DataTableToolbar = ({\n filterValue,\n onFilterChange,\n filterPlaceholder,\n showColumnToggle,\n columns,\n}: IDataTableToolbarProps) => (\n <div className=\"flex items-center py-4 gap-2\">\n <Input\n placeholder={filterPlaceholder}\n value={filterValue}\n onChange={(event) => onFilterChange(event.target.value)}\n className=\"max-w-sm\"\n />\n {showColumnToggle && (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button variant=\"outline\" className=\"ml-auto\">\n Columns <ChevronDown className=\"ml-2 size-4\" />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {columns\n .filter((column) => column.getCanHide())\n .map((column) => (\n <DropdownMenu.CheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {column.id}\n </DropdownMenu.CheckboxItem>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </div>\n);\nDataTableToolbar.displayName = \"DataTable.Toolbar\";\n\n/* ─── Pagination ─── */\n\ninterface IDataTablePaginationProps {\n selectedCount: number;\n totalCount: number;\n showSelectedCount: boolean;\n canPreviousPage: boolean;\n canNextPage: boolean;\n onPreviousPage: () => void;\n onNextPage: () => void;\n}\n\nconst DataTablePagination = ({\n selectedCount,\n totalCount,\n showSelectedCount,\n canPreviousPage,\n canNextPage,\n onPreviousPage,\n onNextPage,\n}: IDataTablePaginationProps) => (\n <div className=\"flex items-center justify-end gap-2 py-4\">\n {showSelectedCount && (\n <div className=\"text-foreground flex-1 text-sm font-sans\">\n {selectedCount} of {totalCount} row(s) selected.\n </div>\n )}\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onPreviousPage}\n disabled={!canPreviousPage}\n >\n Previous\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onNextPage}\n disabled={!canNextPage}\n >\n Next\n </Button>\n </div>\n </div>\n);\nDataTablePagination.displayName = \"DataTable.Pagination\";\n\n/* ─── SortButton ─── */\n\ninterface IDataTableSortButtonProps {\n children: React.ReactNode;\n onClick: () => void;\n className?: string;\n}\n\nconst DataTableSortButton = ({\n children,\n onClick,\n className,\n}: IDataTableSortButtonProps) => (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClick}\n className={cn(className)}\n >\n {children}\n <ArrowUpDown className=\"ml-2 size-4\" />\n </Button>\n);\nDataTableSortButton.displayName = \"DataTable.SortButton\";\n\n/* ─── DataTable ─── */\n\nfunction DataTableRoot<TData, TValue>({\n columns,\n data,\n filterColumn,\n filterPlaceholder = \"Filter...\",\n showColumnToggle = true,\n showPagination = true,\n showSelectedCount = true,\n className,\n}: IDataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [columnFilters, setColumnFilters] =\n React.useState<ColumnFiltersState>([]);\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>({});\n const [rowSelection, setRowSelection] = React.useState({});\n\n const table = useReactTable({\n data,\n columns,\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={cn(\"w-full font-sans text-foreground\", className)}>\n {filterColumn && (\n <DataTableToolbar\n filterValue={\n (table.getColumn(filterColumn)?.getFilterValue() as string) ?? \"\"\n }\n onFilterChange={(value) =>\n table.getColumn(filterColumn)?.setFilterValue(value)\n }\n filterPlaceholder={filterPlaceholder}\n showColumnToggle={showColumnToggle}\n columns={table.getAllColumns()}\n />\n )}\n <div>\n <Table>\n <Table.Header className=\"font-head\">\n {table.getHeaderGroups().map((headerGroup) => (\n <Table.Row\n className=\"bg-muted text-foreground\"\n key={headerGroup.id}\n >\n {headerGroup.headers.map((header) => (\n <Table.Head className=\"text-foreground\" key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </Table.Head>\n ))}\n </Table.Row>\n ))}\n </Table.Header>\n <Table.Body>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <Table.Row\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <Table.Cell className=\"px-4 py-2\" key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </Table.Cell>\n ))}\n </Table.Row>\n ))\n ) : (\n <Table.Row>\n <Table.Cell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n No results.\n </Table.Cell>\n </Table.Row>\n )}\n </Table.Body>\n </Table>\n </div>\n {showPagination && (\n <DataTablePagination\n selectedCount={table.getFilteredSelectedRowModel().rows.length}\n totalCount={table.getFilteredRowModel().rows.length}\n showSelectedCount={showSelectedCount}\n canPreviousPage={table.getCanPreviousPage()}\n canNextPage={table.getCanNextPage()}\n onPreviousPage={() => table.previousPage()}\n onNextPage={() => table.nextPage()}\n />\n )}\n </div>\n );\n}\n\n/* ─── Composite export ─── */\n\nconst DataTableComponent = Object.assign(DataTableRoot, {\n SortButton: DataTableSortButton,\n});\n\nexport { DataTableComponent as DataTable, type ColumnDef, flexRender };\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\";\nimport { cn } from \"@/lib/utils\";\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport { Button } from \"./Button\";\nimport { Input } from \"./Input\";\nimport { Sheet } from \"./Sheet\";\nimport { Skeleton } from \"./Skeleton\";\nimport { Tooltip } from \"./Tooltip\";\n\n/* ─── Constants ─── */\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\n/* ─── Context ─── */\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 Sidebar.Provider.\");\n }\n return context;\n}\n\n/* ─── Provider ─── */\n\ninterface ISidebarProviderProps extends React.HTMLAttributes<HTMLDivElement> {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst SidebarProvider = ({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: ISidebarProviderProps) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\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 document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\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 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 <Tooltip.Provider delayDuration={0}>\n <div\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-background flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </Tooltip.Provider>\n </SidebarContext.Provider>\n );\n};\nSidebarProvider.displayName = \"Sidebar.Provider\";\n\n/* ─── Sidebar Root ─── */\n\ninterface ISidebarRootProps extends React.HTMLAttributes<HTMLDivElement> {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}\n\nconst SidebarRoot = ({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: ISidebarRootProps) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"bg-background text-foreground flex h-full w-(--sidebar-width) flex-col border-r-2 border-border\",\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 <Sheet.Content\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-background text-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 <Sheet.Header className=\"sr-only\">\n <Sheet.Title>Sidebar</Sheet.Title>\n <Sheet.Description>Displays the mobile sidebar.</Sheet.Description>\n </Sheet.Header>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </Sheet.Content>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* Sidebar gap on desktop */}\n <div\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 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 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-2 border-r-border group-data-[side=right]:border-l-2 border-l-border\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"bg-background flex h-full w-full flex-col\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n};\nSidebarRoot.displayName = \"Sidebar\";\n\n/* ─── Trigger ─── */\n\ntype ISidebarTriggerProps = React.ComponentPropsWithoutRef<typeof Button>;\n\nconst SidebarTrigger = React.forwardRef<\n HTMLButtonElement,\n ISidebarTriggerProps\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n ref={ref}\n data-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});\nSidebarTrigger.displayName = \"Sidebar.Trigger\";\n\n/* ─── Rail ─── */\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] 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-muted 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});\nSidebarRail.displayName = \"Sidebar.Rail\";\n\n/* ─── Inset ─── */\n\nconst SidebarInset = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <main\n ref={ref}\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]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className,\n )}\n {...props}\n />\n));\nSidebarInset.displayName = \"Sidebar.Inset\";\n\n/* ─── Input ─── */\n\nconst SidebarInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentPropsWithoutRef<typeof Input>\n>(({ className, ...props }, ref) => (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n));\nSidebarInput.displayName = \"Sidebar.Input\";\n\n/* ─── Header ─── */\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n \"flex flex-col gap-2 p-2 border-b-2 border-b-border\",\n className,\n )}\n {...props}\n />\n));\nSidebarHeader.displayName = \"Sidebar.Header\";\n\n/* ─── Footer ─── */\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\n \"flex flex-col gap-2 p-2 border-t-2 border-t-border\",\n className,\n )}\n {...props}\n />\n));\nSidebarFooter.displayName = \"Sidebar.Footer\";\n\n/* ─── Content ─── */\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n));\nSidebarContent.displayName = \"Sidebar.Content\";\n\n/* ─── Group ─── */\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n \"relative flex w-full min-w-0 flex-col p-2 border-b-2 border-b-border last:border-b-0\",\n className,\n )}\n {...props}\n />\n));\nSidebarGroup.displayName = \"Sidebar.Group\";\n\n/* ─── GroupLabel ─── */\n\ninterface ISidebarGroupLabelProps extends React.HTMLAttributes<HTMLDivElement> {\n asChild?: boolean;\n}\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n ISidebarGroupLabelProps\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"text-foreground ring-ring flex h-8 shrink-0 items-center px-2 text-sm font-head 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});\nSidebarGroupLabel.displayName = \"Sidebar.GroupLabel\";\n\n/* ─── GroupAction ─── */\n\ninterface ISidebarGroupActionProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n}\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n ISidebarGroupActionProps\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n});\nSidebarGroupAction.displayName = \"Sidebar.GroupAction\";\n\n/* ─── GroupContent ─── */\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n));\nSidebarGroupContent.displayName = \"Sidebar.GroupContent\";\n\n/* ─── Menu ─── */\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.HTMLAttributes<HTMLUListElement>\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n));\nSidebarMenu.displayName = \"Sidebar.Menu\";\n\n/* ─── MenuItem ─── */\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.LiHTMLAttributes<HTMLLIElement>\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative font-sans\", className)}\n {...props}\n />\n));\nSidebarMenuItem.displayName = \"Sidebar.MenuItem\";\n\n/* ─── MenuButton ─── */\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden outline-2 outline-transparent p-2 text-left text-sm ring-ring transition-[width,height,padding] hover:bg-primary hover:text-primary-foreground hover:outline-border focus-visible:outline-border focus-visible:text-primary-foreground focus-visible:bg-primary 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 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 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 size: \"default\",\n },\n },\n);\n\ninterface ISidebarMenuButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof sidebarMenuButtonVariants> {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentPropsWithoutRef<typeof Tooltip.Content>;\n}\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n ISidebarMenuButtonProps\n>(\n (\n {\n asChild = false,\n isActive = false,\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n const tooltipProps =\n typeof tooltip === \"string\" ? { children: tooltip } : tooltip;\n\n return (\n <Tooltip>\n <Tooltip.Trigger asChild>{button}</Tooltip.Trigger>\n <Tooltip.Content\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltipProps}\n />\n </Tooltip>\n );\n },\n);\nSidebarMenuButton.displayName = \"Sidebar.MenuButton\";\n\n/* ─── MenuAction ─── */\n\ninterface ISidebarMenuActionProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n showOnHover?: boolean;\n}\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n ISidebarMenuActionProps\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"[&_svg]:text-foreground hover:[&_svg]:text-primary-foreground text-primary-foreground hover:bg-primary hover:outline-border outline-transparent outline-2 absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center p-0 transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-primary-foreground md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = \"Sidebar.MenuAction\";\n\n/* ─── MenuBadge ─── */\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center px-1 text-xs font-sans tabular-nums select-none\",\n \"peer-hover/menu-button:text-primary-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));\nSidebarMenuBadge.displayName = \"Sidebar.MenuBadge\";\n\n/* ─── MenuSkeleton ─── */\n\ninterface ISidebarMenuSkeletonProps\n extends React.HTMLAttributes<HTMLDivElement> {\n showIcon?: boolean;\n}\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n ISidebarMenuSkeletonProps\n>(({ className, showIcon = false, ...props }, ref) => {\n const [width] = React.useState(\n () => `${Math.floor(Math.random() * 40) + 50}%`,\n );\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton className=\"size-4\" data-sidebar=\"menu-skeleton-icon\" />\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});\nSidebarMenuSkeleton.displayName = \"Sidebar.MenuSkeleton\";\n\n/* ─── MenuSub ─── */\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.HTMLAttributes<HTMLUListElement>\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-l-foreground/50 mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l-2 px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n));\nSidebarMenuSub.displayName = \"Sidebar.MenuSub\";\n\n/* ─── MenuSubItem ─── */\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.LiHTMLAttributes<HTMLLIElement>\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n));\nSidebarMenuSubItem.displayName = \"Sidebar.MenuSubItem\";\n\n/* ─── MenuSubButton ─── */\n\ninterface ISidebarMenuSubButtonProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n ISidebarMenuSubButtonProps\n>(({ asChild = false, size = \"md\", isActive = false, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-foreground hover:bg-primary hover:outline-border hover:text-primary-foreground active:bg-primary outline-transparent outline-2 [&>svg]:text-primary-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden px-2 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-primary data-[active=true]:outline-border\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n});\nSidebarMenuSubButton.displayName = \"Sidebar.MenuSubButton\";\n\n/* ─── Composite export ─── */\n\nconst SidebarComponent = Object.assign(SidebarRoot, {\n Provider: SidebarProvider,\n Trigger: SidebarTrigger,\n Rail: SidebarRail,\n Inset: SidebarInset,\n Input: SidebarInput,\n Header: SidebarHeader,\n Footer: SidebarFooter,\n Content: SidebarContent,\n Group: SidebarGroup,\n GroupLabel: SidebarGroupLabel,\n GroupAction: SidebarGroupAction,\n GroupContent: SidebarGroupContent,\n Menu: SidebarMenu,\n MenuItem: SidebarMenuItem,\n MenuButton: SidebarMenuButton,\n MenuAction: SidebarMenuAction,\n MenuBadge: SidebarMenuBadge,\n MenuSkeleton: SidebarMenuSkeleton,\n MenuSub: SidebarMenuSub,\n MenuSubItem: SidebarMenuSubItem,\n MenuSubButton: SidebarMenuSubButton,\n});\n\nexport {\n SidebarComponent as Sidebar,\n useSidebar,\n sidebarMenuButtonVariants,\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(\n undefined,\n );\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener(\"change\", onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\n\n return !!isMobile;\n}\n","import React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface CardGridProps {\n children?: React.ReactNode;\n columns?: 2 | 3 | 4;\n className?: string;\n}\n\n// ─── Component ───\n\nconst columnClasses = {\n 2: \"grid gap-4 sm:grid-cols-2\",\n 3: \"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\",\n};\n\nexport function CardGrid({ children, columns = 3, className }: CardGridProps) {\n const isEmpty = React.Children.count(children) === 0;\n\n if (isEmpty) {\n return (\n <div\n className={cn(\n \"border-2 border-dashed border-border p-12 text-center\",\n className,\n )}\n >\n <p className=\"font-head text-lg text-muted-foreground\">\n Nothing here yet\n </p>\n </div>\n );\n }\n\n return (\n <div className={cn(columnClasses[columns], className)}>\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { AlignJustify, X, ChevronDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/Button\";\nimport { Menu } from \"@/components/ui/Menu\";\nimport { Drawer } from \"@/components/ui/Drawer\";\nimport { Avatar } from \"@/components/ui/Avatar\";\n\n// ─── Types ───\n\nexport interface NavLink {\n label: string;\n href: string;\n}\n\nexport interface NavMenuItem {\n label: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface NavBrand {\n name: string;\n logo?: string;\n href?: string;\n}\n\nexport type NavAuth =\n | {\n state: \"signed-out\";\n href: string;\n label?: string;\n }\n | {\n state: \"signed-in\";\n user: {\n name: string;\n avatar?: string;\n };\n menuItems: NavMenuItem[];\n };\n\nexport interface NavBarProps {\n brand: NavBrand;\n links?: NavLink[];\n auth: NavAuth;\n /** Element used for navigation links. Defaults to `\"a\"`. Pass `Link` from `next/link` (or your router's equivalent) for client-side transitions. */\n linkComponent?: React.ElementType;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function NavBar({ brand, links = [], auth, linkComponent: LinkComp = \"a\", className }: NavBarProps) {\n const [drawerOpen, setDrawerOpen] = useState(false);\n\n return (\n <nav\n className={cn(\n \"sticky top-0 z-40 w-full border-b-2 bg-background\",\n className,\n )}\n >\n <div className=\"mx-auto max-w-6xl px-4\">\n <div className=\"flex h-16 items-center justify-between\">\n {/* ─── Brand ─── */}\n <LinkComp\n href={brand.href ?? \"/\"}\n className=\"shrink-0 font-head text-2xl text-foreground\"\n >\n {brand.name}\n </LinkComp>\n\n {/* ─── Desktop Links (hidden below lg) ─── */}\n {links.length > 0 && (\n <div className=\"hidden lg:flex items-center gap-6\">\n {links.map((link) => (\n <LinkComp\n key={link.href}\n href={link.href}\n className=\"font-sans text-sm hover:underline decoration-primary underline-offset-4 transition-all\"\n >\n {link.label}\n </LinkComp>\n ))}\n </div>\n )}\n\n {/* ─── Desktop Auth (hidden below lg) ─── */}\n <div className=\"hidden lg:flex items-center gap-3\">\n {auth.state === \"signed-out\" ? (\n <SignedOutActions auth={auth} linkComponent={LinkComp} />\n ) : (\n <UserMenu auth={auth} linkComponent={LinkComp} />\n )}\n </div>\n\n {/* ─── Mobile: minimal actions + hamburger (visible below lg) ─── */}\n <div className=\"flex lg:hidden items-center gap-3\">\n {/* On tablet, show auth CTA inline */}\n {auth.state === \"signed-out\" && (\n <div className=\"hidden sm:flex items-center gap-2\">\n <SignedOutActions auth={auth} linkComponent={LinkComp} />\n </div>\n )}\n\n <Button\n size=\"icon\"\n variant=\"outline\"\n className=\"p-2 shadow-sm\"\n onClick={() => setDrawerOpen(true)}\n >\n <AlignJustify className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n\n {/* ─── Mobile Drawer ─── */}\n <Drawer\n direction=\"right\"\n open={drawerOpen}\n onOpenChange={setDrawerOpen}\n >\n <Drawer.Content>\n <Drawer.Header className=\"flex-row items-center justify-between\">\n <Drawer.Title>{brand.name}</Drawer.Title>\n <Drawer.Close asChild>\n <Button size=\"icon\" variant=\"ghost\" className=\"p-1\">\n <X className=\"h-5 w-5\" />\n </Button>\n </Drawer.Close>\n </Drawer.Header>\n\n <div className=\"flex flex-col gap-1 px-4\">\n {links.map((link) => (\n <LinkComp\n key={link.href}\n href={link.href}\n onClick={() => setDrawerOpen(false)}\n className=\"font-sans text-base py-2 px-2 hover:bg-accent transition-colors\"\n >\n {link.label}\n </LinkComp>\n ))}\n </div>\n\n <Drawer.Footer>\n {auth.state === \"signed-out\" ? (\n <Button asChild>\n <LinkComp href={auth.href}>\n {auth.label ?? \"Get Started\"}\n </LinkComp>\n </Button>\n ) : (\n <div className=\"flex flex-col gap-1 border-t-2 pt-4\">\n <div className=\"flex items-center gap-3 px-2 pb-3\">\n <Avatar className=\"h-8 w-8\">\n {auth.user.avatar ? (\n <Avatar.Image src={auth.user.avatar} alt={auth.user.name} />\n ) : (\n <Avatar.Fallback>\n {auth.user.name.charAt(0).toUpperCase()}\n </Avatar.Fallback>\n )}\n </Avatar>\n <span className=\"font-head text-sm\">{auth.user.name}</span>\n </div>\n {auth.menuItems.map((item) =>\n item.href ? (\n <LinkComp\n key={item.label}\n href={item.href}\n onClick={() => setDrawerOpen(false)}\n className=\"font-sans text-sm py-2 px-2 hover:bg-accent transition-colors\"\n >\n {item.label}\n </LinkComp>\n ) : (\n <button\n key={item.label}\n onClick={() => {\n item.onClick?.();\n setDrawerOpen(false);\n }}\n className=\"font-sans text-sm py-2 px-2 text-left hover:bg-accent transition-colors cursor-pointer\"\n >\n {item.label}\n </button>\n ),\n )}\n </div>\n )}\n </Drawer.Footer>\n </Drawer.Content>\n </Drawer>\n </nav>\n );\n}\n\n// ─── Sub-components ───\n\nfunction SignedOutActions({\n auth,\n linkComponent: LinkComp = \"a\",\n}: {\n auth: Extract<NavAuth, { state: \"signed-out\" }>;\n linkComponent?: React.ElementType;\n}) {\n return (\n <Button asChild size=\"sm\">\n <LinkComp href={auth.href}>{auth.label ?? \"Get Started\"}</LinkComp>\n </Button>\n );\n}\n\nfunction UserMenu({\n auth,\n linkComponent: LinkComp = \"a\",\n}: {\n auth: Extract<NavAuth, { state: \"signed-in\" }>;\n linkComponent?: React.ElementType;\n}) {\n return (\n <Menu>\n <Menu.Trigger asChild>\n <button className=\"flex items-center gap-2 cursor-pointer outline-hidden\">\n <Avatar className=\"h-8 w-8\">\n {auth.user.avatar ? (\n <Avatar.Image src={auth.user.avatar} alt={auth.user.name} />\n ) : (\n <Avatar.Fallback>\n {auth.user.name.charAt(0).toUpperCase()}\n </Avatar.Fallback>\n )}\n </Avatar>\n <ChevronDown className=\"h-3 w-3\" />\n </button>\n </Menu.Trigger>\n <Menu.Content align=\"end\" className=\"min-w-40\">\n {auth.menuItems.map((item) =>\n item.href ? (\n <Menu.Item key={item.label} asChild>\n <LinkComp href={item.href}>{item.label}</LinkComp>\n </Menu.Item>\n ) : (\n <Menu.Item key={item.label} onSelect={() => item.onClick?.()}>\n {item.label}\n </Menu.Item>\n ),\n )}\n </Menu.Content>\n </Menu>\n );\n}\n","import React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface SimplePageProps {\n title: string;\n subtitle?: string;\n actions?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function SimplePage({\n title,\n subtitle,\n actions,\n children,\n className,\n}: SimplePageProps) {\n return (\n <div className={cn(\"min-h-screen\", className)}>\n <header className=\"border-b-2 bg-background\">\n <div className=\"mx-auto max-w-6xl px-4 py-8\">\n <div className=\"flex items-start justify-between gap-4\">\n <div>\n <h1 className=\"font-head text-4xl mb-2\">{title}</h1>\n {subtitle && (\n <p className=\"font-sans text-lg text-muted-foreground max-w-xl\">\n {subtitle}\n </p>\n )}\n </div>\n {actions && (\n <div className=\"shrink-0 flex items-center gap-2\">{actions}</div>\n )}\n </div>\n </div>\n </header>\n <main className=\"mx-auto max-w-6xl px-4 py-12 flex flex-col gap-12\">\n {children}\n </main>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface SectionNavItem {\n label: string;\n id: string;\n}\n\nexport interface ISectionNavProps {\n items: SectionNavItem[];\n className?: string;\n /** Offset from top in pixels (e.g. to stack below a sticky header) */\n offsetTop?: number;\n}\n\nexport function SectionNav({ items, className, offsetTop }: ISectionNavProps) {\n const [activeId, setActiveId] = useState<string>(items[0]?.id ?? \"\");\n\n useEffect(() => {\n const observers: IntersectionObserver[] = [];\n\n for (const item of items) {\n const el = document.getElementById(item.id);\n if (!el) continue;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setActiveId(item.id);\n }\n },\n { rootMargin: \"-80px 0px -60% 0px\", threshold: 0 },\n );\n\n observer.observe(el);\n observers.push(observer);\n }\n\n return () => {\n for (const observer of observers) {\n observer.disconnect();\n }\n };\n }, [items]);\n\n return (\n <nav\n aria-label=\"Section navigation\"\n className={cn(\n \"sticky z-30 bg-background text-foreground border-b-[4px] border-border\",\n className,\n )}\n style={{ top: offsetTop != null ? `${offsetTop}px` : 0 }}\n >\n <div className=\"mx-auto max-w-6xl px-4 flex items-center gap-1 overflow-x-auto\">\n {items.map((item) => (\n <a\n key={item.id}\n href={`#${item.id}`}\n aria-current={activeId === item.id ? \"location\" : undefined}\n className={cn(\n \"font-head text-sm px-4 py-3 shrink-0 transition-colors duration-200\",\n activeId === item.id\n ? \"bg-primary text-primary-foreground\"\n : \"text-muted-foreground hover:bg-primary hover:text-primary-foreground\",\n )}\n >\n {item.label}\n </a>\n ))}\n </div>\n </nav>\n );\n}\n","\"use client\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Drawer } from \"@/components/ui/Drawer\";\nimport { Button } from \"@/components/ui/Button\";\nimport { PanelRight } from \"lucide-react\";\nimport React, { useState } from \"react\";\n\ninterface TwoColumnLayoutProps {\n children: React.ReactNode;\n className?: string;\n drawerTitle?: string;\n}\n\nfunction TwoColumnLayout({\n children,\n className,\n drawerTitle = \"Details\",\n}: TwoColumnLayoutProps) {\n const [drawerOpen, setDrawerOpen] = useState(false);\n\n let leftContent: React.ReactNode = null;\n let rightContent: React.ReactNode = null;\n\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n const type = child.type as { displayName?: string };\n if (type.displayName === \"TwoColumnLayout.Left\") leftContent = child;\n if (type.displayName === \"TwoColumnLayout.Right\") rightContent = child;\n });\n\n return (\n <div className={cn(\"flex flex-col md:flex-row gap-0 min-h-0\", className)}>\n {/* Left column — always visible */}\n <div className=\"flex-1 min-w-0 md:border-r-2\">{leftContent}</div>\n\n {/* Right column — visible on md+, hidden on mobile */}\n <div className=\"hidden md:block flex-1 min-w-0\">{rightContent}</div>\n\n {/* Mobile drawer trigger */}\n {rightContent && (\n <div className=\"fixed bottom-6 right-6 md:hidden z-40\">\n <Button\n variant=\"default\"\n size=\"icon\"\n onClick={() => setDrawerOpen(true)}\n aria-label=\"Open right panel\"\n >\n <PanelRight className=\"size-5\" />\n </Button>\n </div>\n )}\n\n {/* Mobile drawer */}\n <Drawer open={drawerOpen} onOpenChange={setDrawerOpen} direction=\"right\">\n <Drawer.Content>\n <Drawer.Header>\n <Drawer.Title>{drawerTitle}</Drawer.Title>\n </Drawer.Header>\n <div className=\"flex-1 overflow-y-auto p-4\">{rightContent}</div>\n </Drawer.Content>\n </Drawer>\n </div>\n );\n}\n\ninterface TwoColumnPanelProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction TwoColumnLeft({ children, className }: TwoColumnPanelProps) {\n return <div className={cn(\"h-full\", className)}>{children}</div>;\n}\nTwoColumnLeft.displayName = \"TwoColumnLayout.Left\";\n\nfunction TwoColumnRight({ children, className }: TwoColumnPanelProps) {\n return <div className={cn(\"h-full\", className)}>{children}</div>;\n}\nTwoColumnRight.displayName = \"TwoColumnLayout.Right\";\n\nconst TwoColumnLayoutComponent = Object.assign(TwoColumnLayout, {\n Left: TwoColumnLeft,\n Right: TwoColumnRight,\n});\n\nexport { TwoColumnLayoutComponent as TwoColumnLayout };\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\nimport { useTheme } from \"@/components/ThemeProvider\";\nimport { IconButton } from \"@/components/ui/IconButton\";\nimport { cn } from \"@/lib/utils\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport type { iconButtonVariants } from \"@/components/ui/IconButton\";\n\nconst subscribe = () => () => {};\nconst getSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\nexport interface ThemeToggleProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof iconButtonVariants> {}\n\nexport function ThemeToggle({\n variant = \"ghost\",\n size = \"md\",\n className,\n ...props\n}: ThemeToggleProps) {\n const { resolvedTheme, setTheme } = useTheme();\n const mounted = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n const opposite = resolvedTheme === \"dark\" ? \"light\" : \"dark\";\n\n return (\n <IconButton\n variant={variant}\n size={size}\n className={cn(className)}\n onClick={() => setTheme(opposite)}\n aria-label={mounted ? `Switch to ${opposite} mode` : \"Toggle theme\"}\n {...props}\n >\n {/* Sun icon — shown in dark mode */}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"hidden dark:block\"\n aria-hidden=\"true\"\n >\n <circle cx={12} cy={12} r={5} />\n <line x1={12} y1={1} x2={12} y2={3} />\n <line x1={12} y1={21} x2={12} y2={23} />\n <line x1={4.22} y1={4.22} x2={5.64} y2={5.64} />\n <line x1={18.36} y1={18.36} x2={19.78} y2={19.78} />\n <line x1={1} y1={12} x2={3} y2={12} />\n <line x1={21} y1={12} x2={23} y2={12} />\n <line x1={4.22} y1={19.78} x2={5.64} y2={18.36} />\n <line x1={18.36} y1={5.64} x2={19.78} y2={4.22} />\n </svg>\n {/* Moon icon — shown in light mode */}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"block dark:hidden\"\n aria-hidden=\"true\"\n >\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n </IconButton>\n );\n}\n","export interface ThemeConfig {\n /** Primary brand color and its foreground */\n primary?: string;\n primaryForeground?: string;\n /** Secondary color */\n secondary?: string;\n secondaryForeground?: string;\n /** Background and foreground */\n background?: string;\n foreground?: string;\n /** Card surface */\n card?: string;\n cardForeground?: string;\n /** Muted/subtle surface */\n muted?: string;\n mutedForeground?: string;\n /** Accent color */\n accent?: string;\n accentForeground?: string;\n /** Destructive/error */\n destructive?: string;\n destructiveForeground?: string;\n /** Success */\n success?: string;\n successForeground?: string;\n /** Warning */\n warning?: string;\n warningForeground?: string;\n /** Border color */\n border?: string;\n /** Input border */\n input?: string;\n /** Focus ring */\n ring?: string;\n /** Default border radius override */\n radius?: string;\n}\n\n/**\n * Generate a CSS class string with custom property overrides for a named theme.\n * Apply the returned CSS to your stylesheet, then add the class name to a container element.\n *\n * @example\n * const css = createTheme(\"brand\", { primary: \"#E63946\", background: \"#F1FAEE\" });\n * // Returns: \".theme-brand { --primary: #E63946; --background: #F1FAEE; }\"\n */\nexport function createTheme(name: string, config: ThemeConfig): string {\n const declarations: string[] = [];\n\n const tokenMap: Record<keyof ThemeConfig, string> = {\n primary: \"--primary\",\n primaryForeground: \"--primary-foreground\",\n secondary: \"--secondary\",\n secondaryForeground: \"--secondary-foreground\",\n background: \"--background\",\n foreground: \"--foreground\",\n card: \"--card\",\n cardForeground: \"--card-foreground\",\n muted: \"--muted\",\n mutedForeground: \"--muted-foreground\",\n accent: \"--accent\",\n accentForeground: \"--accent-foreground\",\n destructive: \"--destructive\",\n destructiveForeground: \"--destructive-foreground\",\n success: \"--success\",\n successForeground: \"--success-foreground\",\n warning: \"--warning\",\n warningForeground: \"--warning-foreground\",\n border: \"--border\",\n input: \"--input\",\n ring: \"--ring\",\n radius: \"--radius\",\n };\n\n for (const [key, value] of Object.entries(config)) {\n const token = tokenMap[key as keyof ThemeConfig];\n if (token && value) {\n declarations.push(` ${token}: ${value};`);\n }\n }\n\n if (declarations.length === 0) return \"\";\n\n return `.theme-${name} {\\n${declarations.join(\"\\n\")}\\n}`;\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface HeroProps {\n badge?: React.ReactNode;\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n actions?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n align?: \"left\" | \"center\";\n}\n\n// ─── Component ───\n\nexport function Hero({\n badge,\n title,\n subtitle,\n actions,\n children,\n className,\n align = \"center\",\n}: HeroProps) {\n return (\n <section\n className={cn(\n \"w-full border-b-2 bg-background\",\n className,\n )}\n >\n <div\n className={cn(\n \"mx-auto max-w-6xl px-4 py-20 lg:py-28 flex flex-col gap-6\",\n align === \"center\" && \"items-center text-center\",\n align === \"left\" && \"items-start text-left\",\n )}\n >\n {badge && <div>{badge}</div>}\n\n <h1 className=\"font-head text-4xl sm:text-5xl lg:text-6xl max-w-4xl\">\n {title}\n </h1>\n\n {subtitle && (\n <p className=\"font-sans text-lg lg:text-xl text-muted-foreground max-w-2xl\">\n {subtitle}\n </p>\n )}\n\n {actions && (\n <div className=\"flex flex-wrap gap-3 mt-2\">{actions}</div>\n )}\n\n {children}\n </div>\n </section>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\n// ─── Variants ───\n\nexport const sectionVariants = cva(\"w-full py-16 lg:py-24 scroll-mt-[120px]\", {\n variants: {\n background: {\n default: \"bg-background\",\n muted: \"bg-muted/30\",\n card: \"bg-card border-y-2\",\n primary: \"bg-primary text-primary-foreground\",\n },\n },\n defaultVariants: {\n background: \"default\",\n },\n});\n\n// ─── Types ───\n\nexport interface SectionProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"title\">,\n VariantProps<typeof sectionVariants> {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n align?: \"left\" | \"center\";\n}\n\n// ─── Component ───\n\nexport function Section({\n title,\n subtitle,\n children,\n className,\n background = \"default\",\n align = \"center\",\n ...props\n}: SectionProps) {\n return (\n <section\n className={cn(sectionVariants({ background }), className)}\n {...props}\n >\n <div className=\"mx-auto max-w-6xl px-4\">\n {(title || subtitle) && (\n <div\n className={cn(\n \"mb-12\",\n align === \"center\" && \"text-center\",\n align === \"left\" && \"text-left\",\n )}\n >\n {title && (\n <h2 className=\"font-head text-3xl lg:text-4xl mb-3\">{title}</h2>\n )}\n {subtitle && (\n <p className=\"font-sans text-lg text-muted-foreground max-w-2xl mx-auto\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n {children}\n </div>\n </section>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface FooterLinkGroup {\n title: string;\n links: { label: string; href: string }[];\n}\n\nexport interface FooterProps {\n brand: React.ReactNode;\n tagline?: string;\n groups?: FooterLinkGroup[];\n bottom?: React.ReactNode;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function Footer({\n brand,\n tagline,\n groups = [],\n bottom,\n className,\n}: FooterProps) {\n return (\n <footer className={cn(\"w-full border-t-2 bg-background\", className)}>\n <div className=\"mx-auto max-w-6xl px-4 py-12 lg:py-16\">\n <div className=\"grid gap-8 lg:grid-cols-[1.5fr_repeat(auto-fit,1fr)]\">\n {/* Brand column */}\n <div className=\"max-w-xs\">\n <div className=\"font-head text-2xl mb-2\">{brand}</div>\n {tagline && (\n <p className=\"font-sans text-sm text-muted-foreground\">\n {tagline}\n </p>\n )}\n </div>\n\n {/* Link groups */}\n {groups.length > 0 && (\n <div className=\"grid gap-8 sm:grid-cols-2 lg:grid-cols-3 col-span-full lg:col-span-1\">\n {groups.map((group) => (\n <div key={group.title}>\n <h4 className=\"font-head text-sm uppercase mb-3\">\n {group.title}\n </h4>\n <ul className=\"flex flex-col gap-2\">\n {group.links.map((link) => (\n <li key={link.label}>\n <a\n href={link.href}\n className=\"font-sans text-sm text-muted-foreground hover:text-foreground transition-colors\"\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Bottom bar */}\n {bottom && (\n <div className=\"mt-12 pt-6 border-t-2 font-sans text-sm text-muted-foreground\">\n {bottom}\n </div>\n )}\n </div>\n </footer>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface PricingFeature {\n text: string;\n included: boolean;\n}\n\nexport interface PricingTier {\n name: string;\n price: React.ReactNode;\n description?: string;\n features: PricingFeature[];\n cta: React.ReactNode;\n highlighted?: boolean;\n badge?: React.ReactNode;\n}\n\nexport interface PricingTableProps {\n tiers: PricingTier[];\n className?: string;\n}\n\n// ─── Component ───\n\nexport function PricingTable({ tiers, className }: PricingTableProps) {\n return (\n <div\n className={cn(\n \"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\",\n className,\n )}\n >\n {tiers.map((tier) => (\n <div\n key={tier.name}\n className={cn(\n \"border-2 flex flex-col bg-card\",\n tier.highlighted\n ? \"shadow-lg border-primary ring-2 ring-primary scale-[1.02]\"\n : \"shadow-md\",\n )}\n >\n {/* Header */}\n <div className=\"p-6 border-b-2\">\n <div className=\"flex items-center justify-between mb-2\">\n <h3 className=\"font-head text-xl\">{tier.name}</h3>\n {tier.badge}\n </div>\n <div className=\"font-head text-4xl mb-1\">{tier.price}</div>\n {tier.description && (\n <p className=\"font-sans text-sm text-muted-foreground\">\n {tier.description}\n </p>\n )}\n </div>\n\n {/* Features */}\n <div className=\"p-6 flex-1\">\n <ul className=\"flex flex-col gap-3\">\n {tier.features.map((feature) => (\n <li\n key={feature.text}\n className={cn(\n \"font-sans text-sm flex items-start gap-2\",\n !feature.included && \"text-muted-foreground line-through\",\n )}\n >\n <span\n className={cn(\n \"font-head text-xs mt-0.5 shrink-0\",\n feature.included\n ? \"text-primary-foreground\"\n : \"text-muted-foreground\",\n )}\n >\n {feature.included ? \"+\" : \"-\"}\n </span>\n {feature.text}\n </li>\n ))}\n </ul>\n </div>\n\n {/* CTA */}\n <div className=\"p-6 border-t-2\">{tier.cta}</div>\n </div>\n ))}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface Feature {\n icon?: React.ReactNode;\n title: string;\n description: string;\n}\n\nexport interface FeatureSectionProps {\n features: Feature[];\n columns?: 2 | 3 | 4;\n className?: string;\n}\n\n// ─── Component ───\n\nconst columnClasses = {\n 2: \"grid gap-6 sm:grid-cols-2\",\n 3: \"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid gap-6 sm:grid-cols-2 lg:grid-cols-4\",\n};\n\nexport function FeatureSection({\n features,\n columns = 3,\n className,\n}: FeatureSectionProps) {\n return (\n <div className={cn(columnClasses[columns], className)}>\n {features.map((feature) => (\n <div\n key={feature.title}\n className=\"border-2 p-6 bg-card shadow-md\"\n >\n {feature.icon && (\n <div className=\"mb-4 inline-flex items-center justify-center h-12 w-12 border-2 bg-primary text-primary-foreground shadow-sm\">\n {feature.icon}\n </div>\n )}\n <h3 className=\"font-head text-lg mb-2\">{feature.title}</h3>\n <p className=\"font-sans text-sm text-muted-foreground\">\n {feature.description}\n </p>\n </div>\n ))}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface TestimonialItem {\n quote: string;\n name: string;\n role?: string;\n company?: string;\n avatar?: React.ReactNode;\n}\n\nexport interface TestimonialProps {\n testimonials: TestimonialItem[];\n columns?: 1 | 2 | 3;\n className?: string;\n}\n\n// ─── Component ───\n\nconst columnClasses = {\n 1: \"grid gap-6 max-w-2xl mx-auto\",\n 2: \"grid gap-6 sm:grid-cols-2\",\n 3: \"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\",\n};\n\nexport function Testimonial({\n testimonials,\n columns = 3,\n className,\n}: TestimonialProps) {\n return (\n <div className={cn(columnClasses[columns], className)}>\n {testimonials.map((t) => (\n <div\n key={t.name}\n className=\"border-2 p-6 bg-card shadow-md flex flex-col\"\n >\n <blockquote className=\"font-sans text-sm leading-relaxed flex-1 mb-6\">\n &ldquo;{t.quote}&rdquo;\n </blockquote>\n <div className=\"flex items-center gap-3 border-t-2 pt-4\">\n {t.avatar && (\n <div className=\"h-10 w-10 shrink-0 border-2 overflow-hidden\">\n {t.avatar}\n </div>\n )}\n <div>\n <p className=\"font-head text-sm\">{t.name}</p>\n {(t.role || t.company) && (\n <p className=\"font-sans text-xs text-muted-foreground\">\n {[t.role, t.company].filter(Boolean).join(\", \")}\n </p>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface LogoCloudProps {\n children: React.ReactNode;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function LogoCloud({ children, className }: LogoCloudProps) {\n return (\n <div\n className={cn(\n \"flex flex-wrap items-center justify-center gap-8 lg:gap-12\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface CTABannerProps {\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n actions?: React.ReactNode;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function CTABanner({\n title,\n subtitle,\n actions,\n className,\n}: CTABannerProps) {\n return (\n <section\n className={cn(\n \"w-full border-y-2 bg-primary text-primary-foreground\",\n className,\n )}\n >\n <div className=\"mx-auto max-w-6xl px-4 py-16 lg:py-20 flex flex-col items-center text-center gap-4\">\n <h2 className=\"font-head text-3xl lg:text-4xl\">{title}</h2>\n {subtitle && (\n <p className=\"font-sans text-lg max-w-xl\">{subtitle}</p>\n )}\n {actions && (\n <div className=\"flex flex-wrap gap-3 mt-2\">{actions}</div>\n )}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronDown } from \"lucide-react\";\n\n// ─── Types ───\n\nexport interface FAQItem {\n question: string;\n answer: React.ReactNode;\n}\n\nexport interface FAQProps {\n items: FAQItem[];\n className?: string;\n}\n\n// ─── Component ───\n\nexport function FAQ({ items, className }: FAQProps) {\n const [openIndex, setOpenIndex] = React.useState<number | null>(null);\n\n return (\n <div className={cn(\"w-full max-w-3xl mx-auto\", className)}>\n {items.map((item, i) => {\n const isOpen = openIndex === i;\n return (\n <div key={i} className=\"border-2 border-b-0 last:border-b-2\">\n <button\n onClick={() => setOpenIndex(isOpen ? null : i)}\n className=\"w-full flex items-center justify-between p-4 text-left cursor-pointer hover:bg-accent/30 transition-colors\"\n >\n <span className=\"font-head text-sm pr-4\">{item.question}</span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\",\n )}\n />\n </button>\n {isOpen && (\n <div className=\"px-4 pb-4 font-sans text-sm text-muted-foreground\">\n {item.answer}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface Stat {\n value: React.ReactNode;\n label: string;\n}\n\nexport interface StatsBarProps {\n stats: Stat[];\n className?: string;\n}\n\n// ─── Component ───\n\nexport function StatsBar({ stats, className }: StatsBarProps) {\n return (\n <div\n className={cn(\n \"w-full border-y-2 bg-card\",\n className,\n )}\n >\n <div className=\"mx-auto max-w-6xl px-4 py-10 grid grid-cols-2 lg:grid-cols-4 gap-8\">\n {stats.map((stat) => (\n <div key={stat.label} className=\"text-center\">\n <div className=\"font-head text-3xl lg:text-4xl mb-1\">\n {stat.value}\n </div>\n <div className=\"font-sans text-sm text-muted-foreground uppercase\">\n {stat.label}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { X } from \"lucide-react\";\n\n// ─── Types ───\n\nexport interface AnnouncementBannerProps {\n children: React.ReactNode;\n dismissible?: boolean;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function AnnouncementBanner({\n children,\n dismissible = true,\n className,\n}: AnnouncementBannerProps) {\n const [visible, setVisible] = React.useState(() => {\n if (typeof window === \"undefined\") return true;\n return sessionStorage.getItem(\"announcement-dismissed\") !== \"true\";\n });\n\n const handleDismiss = () => {\n setVisible(false);\n sessionStorage.setItem(\"announcement-dismissed\", \"true\");\n };\n\n if (!visible) return null;\n\n return (\n <div\n className={cn(\n \"w-full bg-primary text-primary-foreground border-b-2\",\n className,\n )}\n >\n <div className=\"mx-auto max-w-6xl px-4 py-2 flex items-center justify-center gap-3\">\n <p className=\"font-sans text-sm text-center flex-1\">{children}</p>\n {dismissible && (\n <button\n onClick={handleDismiss}\n className=\"shrink-0 p-2 min-w-[44px] min-h-[44px] inline-flex items-center justify-center hover:bg-foreground/10 transition-colors cursor-pointer\"\n aria-label=\"Dismiss\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Types ───\n\nexport interface NewsletterSignupProps {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n inputPlaceholder?: string;\n buttonLabel?: React.ReactNode;\n className?: string;\n}\n\n// ─── Component ───\n\nexport function NewsletterSignup({\n title = \"Stay in the loop\",\n subtitle,\n inputPlaceholder = \"you@example.com\",\n buttonLabel = \"Subscribe\",\n className,\n}: NewsletterSignupProps) {\n return (\n <div className={cn(\"w-full max-w-md mx-auto\", className)}>\n {title && (\n <h3 className=\"font-head text-xl mb-2 text-center\">{title}</h3>\n )}\n {subtitle && (\n <p className=\"font-sans text-sm text-muted-foreground text-center mb-4\">\n {subtitle}\n </p>\n )}\n <form\n onSubmit={(e) => e.preventDefault()}\n className=\"flex gap-2\"\n >\n <input\n type=\"email\"\n placeholder={inputPlaceholder}\n className=\"flex-1 h-10 border-2 bg-background px-4 font-sans text-sm shadow-md transition placeholder:text-muted-foreground focus:outline-none focus:shadow-xs\"\n required\n />\n <button\n type=\"submit\"\n className=\"font-head px-4 h-10 border-2 bg-primary text-primary-foreground shadow-md hover:shadow active:shadow-none transition-all hover:translate-y-0.5 active:translate-y-1 cursor-pointer text-sm\"\n >\n {buttonLabel}\n </button>\n </form>\n </div>\n );\n}\n"],"mappings":"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","names":["cva","React","Slot","jsx","cva","React","Slot","React","cva","Slot","jsx","cva","Slot","React","jsx","Trigger","Content","React","jsx","React","cva","jsx","jsxs","cva","DropdownMenu","React","jsx","jsxs","React","React","jsx","React","jsx","React","React","jsx","React","React","cva","jsx","cva","React","cva","jsx","jsxs","cva","React","Check","jsx","jsxs","Check","React","jsx","React","jsx","jsxs","jsx","React","jsx","jsxs","cva","React","Slot","jsx","cva","React","Slot","React","cva","jsx","cva","cva","React","Slot","jsx","cva","React","Slot","React","cva","jsx","cva","React","cva","jsx","jsxs","cva","React","cva","jsx","jsxs","cva","React","cva","jsx","cva","React","cva","jsx","cva","React","cva","jsx","cva","React","cva","jsx","cva","React","ChevronDown","jsx","jsxs","ChevronDown","React","jsx","jsxs","React","jsx","React","jsx","React","jsx","React","jsx","CollapsibleTrigger","CollapsibleContent","React","jsx","React","jsx","Check","React","jsx","jsxs","Check","Check","ChevronRight","Circle","React","jsx","jsxs","ChevronRight","Check","Circle","React","jsx","Check","ChevronRight","Circle","React","jsx","jsxs","Check","Circle","ChevronRight","React","cva","ChevronDown","jsx","jsxs","cva","ChevronDown","Group","Separator","jsx","Group","Separator","React","jsx","jsxs","config","React","createContext","useContext","useState","useMemo","jsx","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","_a","React","jsx","jsxs","React","Slot","ChevronRight","MoreHorizontal","jsx","jsxs","Slot","ChevronRight","MoreHorizontal","React","ChevronRight","jsx","_a","_b","Icon","ChevronRight","React","jsx","jsxs","React","ChevronLeft","ChevronRight","MoreHorizontal","jsx","jsxs","ChevronLeft","ChevronRight","MoreHorizontal","React","cva","X","jsx","jsxs","cva","X","React","Slot","jsx","FormField","Slot","_a","React","jsx","jsxs","React","Check","jsx","jsxs","Check","React","ChevronDown","jsx","jsxs","ChevronDown","_a","React","Slot","cva","React","jsx","jsxs","open","Slot","cva","React","jsx","React","useState","X","ChevronDown","jsx","jsxs","useState","X","_a","ChevronDown","jsx","jsxs","useEffect","useState","jsx","useState","useEffect","React","useState","jsx","jsxs","jsx","jsxs","jsx","jsxs","cva","jsx","jsxs","cva","jsx","jsxs","jsx","jsxs","jsx","jsxs","columnClasses","jsx","jsxs","columnClasses","jsx","jsx","jsxs","React","ChevronDown","jsx","jsxs","jsx","jsxs","React","X","jsx","jsxs","jsx","jsxs"]}