@iclips/ui 1.0.3 → 1.0.9

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":["../components/ui/utils.ts","../components/ui/accordion.tsx","../components/ui/button.tsx","../components/ui/alert-dialog.tsx","../components/ui/alert.tsx","../components/ui/scroll-area.tsx","../components/ui/badge.tsx","../imports/svg-txovph4k0g.ts","../imports/svg-p4zgbw8x8e.ts","../imports/svg-agvoxj05dl.ts","../components/ui/brand-logo.tsx","../components/ui/app-layout.tsx","../components/ui/aspect-ratio.tsx","../components/ui/avatar.tsx","../components/ui/breadcrumb.tsx","../components/ui/card.tsx","../components/figma/ImageWithFallback.tsx","../components/print-templates/shared/PrintHeader.tsx","../components/print-templates/shared/PrintFooter.tsx","../components/print-templates/shared/PrintSection.tsx","../components/print-templates/shared/PrintInfoGrid.tsx","../components/print-templates/shared/PrintTable.tsx","../components/print-templates/shared/PrintSignature.tsx","../components/print-templates/ContractTemplate.tsx","../components/ui/use-print-contract.ts","../components/ui/contract-print.tsx","../components/ui/calendar.tsx","../components/ui/carousel.tsx","../components/ui/chart.tsx","../components/ui/checkbox.tsx","../components/ui/popover.tsx","../components/ui/input.tsx","../components/ui/label.tsx","../components/ui/color-picker.tsx","../components/ui/collapsible.tsx","../components/ui/time-picker.tsx","../components/ui/date-time-picker.tsx","../components/ui/separator.tsx","../components/ui/date-range-picker.tsx","../components/ui/progress.tsx","../components/ui/dropdown-menu.tsx","../components/ui/kanban-card.tsx","../components/ui/dialog.tsx","../components/ui/command.tsx","../components/ui/context-menu.tsx","../components/ui/drawer.tsx","../components/ui/form.tsx","../components/ui/hover-card.tsx","../components/ui/input-otp.tsx","../components/ui/menubar.tsx","../components/ui/navigation-menu.tsx","../components/ui/pagination.tsx","../components/ui/radio-group.tsx","../components/ui/resizable.tsx","../components/ui/select.tsx","../components/ui/sheet.tsx","../components/ui/use-mobile.ts","../components/ui/skeleton.tsx","../components/ui/tooltip.tsx","../components/ui/sidebar.tsx","../components/ui/slider.tsx","../components/ui/sonner.tsx","../components/ui/switch.tsx","../components/ui/table.tsx","../components/ui/table-pagination.tsx","../components/ui/table-types.ts","../components/ui/tabs.tsx","../components/ui/underline-tabs.tsx","../components/ui/textarea.tsx","../components/ui/toggle.tsx","../components/ui/toggle-group.tsx","../components/ui/illustrations.tsx","../components/print-templates/ProposalTemplate.tsx"],"names":["twMerge","clsx","AccordionPrimitive","jsx","jsxs","ChevronDownIcon","cva","React","Slot","AlertDialogPrimitive","React2","ScrollAreaPrimitive","React3","Home","Folder","Users","Calendar","BarChart3","Settings","LayoutGrid","FileText","Star","MessageSquare","Download","Sparkles","React4","Pin","Icon","Plus","ChevronRight","Zap","PanelLeftClose","PanelLeft","Bell","AspectRatioPrimitive","AvatarPrimitive","MoreHorizontal","useState","React6","Printer","Eye","DayPicker","props","ChevronLeft","React7","useEmblaCarousel","api","ArrowLeft","ArrowRight","React8","RechartsPrimitive","config","Fragment","CheckboxPrimitive","Check","PopoverPrimitive","React9","LabelPrimitive","React10","HexColorPicker","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","React11","React12","CalendarIcon","format","SeparatorPrimitive","React13","ProgressPrimitive","DropdownMenuPrimitive","CheckIcon","CircleIcon","ChevronRightIcon","React14","MoreVertical","AlertCircle","CheckSquare","Paperclip","DialogPrimitive","React15","XIcon","CommandPrimitive","SearchIcon","ContextMenuPrimitive","DrawerPrimitive","React16","FormProvider","React17","Controller","useFormContext","useFormState","HoverCardPrimitive","OTPInput","React18","OTPInputContext","MinusIcon","MenubarPrimitive","NavigationMenuPrimitive","ChevronLeftIcon","MoreHorizontalIcon","RadioGroup","RadioGroupPrimitive","ResizablePrimitive","GripVerticalIcon","SelectPrimitive","ChevronUpIcon","SheetPrimitive","React19","React20","TooltipPrimitive","Tooltip","React21","open","PanelLeftIcon","React22","SliderPrimitive","useTheme","Sonner","SwitchPrimitive","React23","ChevronsLeft","ChevronsRight","TabsPrimitive","React24","TogglePrimitive","React25","ToggleGroupPrimitive"],"mappings":"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","file":"index.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9 rounded-md\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }\n>(({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n});\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"./utils\";\nimport { buttonVariants } from \"./button\";\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n );\n}\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n});\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"./utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Badge = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }\n>(({ className, variant, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n ref={ref}\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n );\n});\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };","export default {\np395de780: \"M0 1.88343C0 0.870644 0.847464 0 1.86025 0C2.89622 0 3.74369 0.871417 3.74369 1.88343C3.74369 2.89622 2.89622 3.74446 1.86025 3.74446C0.847464 3.74446 0 2.89622 0 1.88343Z\",\np9466600: \"M14.366 0.0315111C9.86678 -0.373296 6.07442 3.17572 6.07442 7.59306V25.1303C6.07442 27.4664 7.74695 29.567 10.0661 29.8474C12.8287 30.1811 15.1857 28.0234 15.1857 25.3258V15.2102V14.0661C15.1857 13.1908 14.4757 12.4809 13.6004 12.4809H12.1488V15.2102V25.2161C12.1488 25.9847 11.5355 26.7689 10.7699 26.8384C9.86987 26.9195 9.11125 26.2095 9.11125 25.3258V7.78928C9.11125 5.45314 10.783 3.35263 13.1021 3.07142C15.8647 2.73692 18.2225 4.8946 18.2225 7.59306V21.0459C18.2225 21.0459 18.2225 21.0931 18.2225 21.1595C18.2225 21.9483 18.2225 25.3428 18.2225 25.3605C18.2024 29.7655 14.4124 33.2967 9.91931 32.8858C5.96936 32.525 3.03682 29.0355 3.03682 25.0693V15.1291V12.4816H1.58524C0.709959 12.4816 0 13.1916 0 14.0669V25.0152C0 30.6014 4.18017 35.4676 9.74781 35.9195C15.6461 36.3977 20.6529 32.029 21.2083 26.3725C21.2145 26.3053 21.2408 23.8325 21.2531 21.8216L21.2593 21.8231V7.85031C21.2601 3.87872 18.3206 0.386876 14.366 0.0315111Z\",\n}\n","export default {\np1cdcfe80: \"M21.9603 17.085C21.9556 16.3915 22.1577 15.7123 22.5408 15.1339C22.9239 14.5555 23.4707 14.104 24.1116 13.837C24.7525 13.57 25.4585 13.4995 26.1397 13.6345C26.8208 13.7696 27.4463 14.104 27.9365 14.5952C28.4267 15.0864 28.7594 15.7122 28.8923 16.3929C29.0251 17.0736 28.9521 17.7784 28.6825 18.4175C28.4129 19.0566 27.959 19.6011 27.3784 19.9817C26.7979 20.3623 26.1171 20.5618 25.4227 20.5547C24.5062 20.5422 23.631 20.1723 22.984 19.5239C22.337 18.8756 21.9696 18.0003 21.9603 17.085V17.085Z\",\np2cb5a300: \"M98.983 25.9984C101.074 28.2086 102.206 31.1541 102.134 34.1939C102.207 37.2482 101.076 40.2089 98.983 42.4373C98.0369 43.5032 96.8719 44.353 95.5674 44.929C94.2629 45.505 92.8495 45.7937 91.4233 45.7754C90.0666 45.8501 88.7117 45.5978 87.4731 45.0398C86.2345 44.4817 85.1486 43.6343 84.3069 42.5689V54.8204H81.5394C80.7736 54.8204 80.0392 54.5166 79.4978 53.9758C78.9563 53.4351 78.6521 52.7017 78.6521 51.937V23.2227H81.9947C82.2987 23.2211 82.6001 23.2797 82.8814 23.3952C83.1626 23.5107 83.4182 23.6807 83.6332 23.8955C83.8482 24.1102 84.0185 24.3654 84.1341 24.6462C84.2498 24.9271 84.3085 25.2281 84.3069 25.5318V25.807C85.1512 24.7453 86.2379 23.9013 87.4761 23.3455C88.7143 22.7897 90.0678 22.5383 91.4233 22.6125C92.8528 22.6025 94.2678 22.8997 95.5721 23.4839C96.8765 24.0681 98.0398 24.9257 98.983 25.9984V25.9984ZM90.369 40.3555C91.1724 40.3816 91.9727 40.2432 92.7206 39.949C93.4685 39.6548 94.1482 39.2109 94.718 38.6446C95.302 38.0584 95.7595 37.359 96.0624 36.5894C96.3653 35.8198 96.5071 34.9964 96.4791 34.17C96.5113 33.3502 96.3713 32.5328 96.068 31.7703C95.7646 31.0079 95.3048 30.3174 94.718 29.7432C93.5516 28.6161 91.9921 27.9859 90.369 27.9859C88.746 27.9859 87.1865 28.6161 86.0201 29.7432C85.4473 30.3253 84.9997 31.0184 84.7051 31.7797C84.4105 32.541 84.275 33.3544 84.3069 34.17C84.2815 34.992 84.4199 35.8108 84.714 36.579C85.0081 37.3471 85.4521 38.0492 86.0201 38.6446C86.5912 39.2107 87.2706 39.656 88.0178 39.954C88.765 40.2521 89.5646 40.3968 90.369 40.3795V40.3555Z\",\np2d489f00: \"M67.1509 17.085C67.1485 16.3949 67.3516 15.7197 67.7343 15.145C68.117 14.5704 68.6621 14.1223 69.3003 13.8577C69.9385 13.593 70.6411 13.5238 71.3188 13.6587C71.9966 13.7937 72.6188 14.1267 73.1066 14.6155C73.5944 15.1044 73.9258 15.7269 74.0585 16.4042C74.1913 17.0815 74.1196 17.7828 73.8524 18.4193C73.5852 19.0557 73.1346 19.5985 72.5579 19.9787C71.9811 20.3589 71.3043 20.5594 70.6132 20.5547C69.6968 20.5422 68.8215 20.1723 68.1746 19.5239C67.5276 18.8756 67.1602 18.0003 67.1509 17.085V17.085Z\",\np344a5f80: \"M114.869 31.8729C118.068 32.5309 122.249 34.0623 122.201 38.7523C122.254 39.7667 122.048 40.7778 121.602 41.6904C121.155 42.603 120.483 43.3871 119.649 43.9688C117.799 45.2158 115.603 45.8481 113.372 45.7754C108.855 45.7754 105.776 44.0166 104.159 40.5589L107.118 38.8839C107.569 38.6258 108.095 38.5289 108.609 38.6094C109.123 38.6899 109.595 38.9428 109.945 39.3266C110.382 39.7887 110.916 40.1492 111.508 40.3828C112.1 40.6165 112.736 40.7174 113.372 40.6786C115.396 40.6786 116.403 40.0684 116.403 38.7882C116.403 37.508 114.654 36.9457 112.413 36.3954C109.155 35.5579 105.081 34.1939 105.081 29.6356C105.046 28.6587 105.245 27.6876 105.662 26.8032C106.079 25.9187 106.701 25.1465 107.477 24.5507C108.587 23.7568 109.846 23.1971 111.179 22.9057C112.513 22.6144 113.891 22.5975 115.231 22.8562C116.571 23.1148 117.844 23.6436 118.972 24.4101C120.101 25.1767 121.061 26.1649 121.794 27.3145L118.727 28.9895C118.302 29.2175 117.816 29.3077 117.338 29.2477C116.859 29.1877 116.411 28.9803 116.055 28.6545C115.346 28.0113 114.413 27.6719 113.456 27.7093C112.006 27.7093 110.904 28.4152 110.904 29.5039C110.904 30.5927 112.617 31.2986 114.869 31.8729Z\",\np35662200: \"M22.6552 23.2346V34.0025V47.2828C22.6619 47.9663 22.4243 48.6297 21.9851 49.1538C21.5459 49.6779 20.9339 50.0284 20.2591 50.1423C19.8565 50.2006 19.4462 50.1718 19.0557 50.0579C18.6653 49.9441 18.3039 49.7477 17.9961 49.4823C17.6882 49.2168 17.441 48.8884 17.2713 48.5193C17.1016 48.1501 17.0133 47.7489 17.0124 47.3427V14.1777C16.9965 11.9279 17.8761 9.76402 19.4579 8.16199C21.0396 6.55996 23.1938 5.65104 25.4466 5.63517C27.6994 5.61931 29.8663 6.4978 31.4705 8.07739C33.0747 9.65698 33.9848 11.8083 34.0007 14.058V20.5546H36.7802C37.546 20.5546 38.2804 20.2508 38.8218 19.7101C39.3633 19.1694 39.6675 18.436 39.6675 17.6712V14.2255C39.6898 10.4749 38.2191 6.86905 35.5792 4.20125C32.9392 1.53344 29.3461 0.0222044 25.5904 -7.4932e-06C21.8347 -0.0222194 18.2239 1.44641 15.5525 4.08281C12.8811 6.7192 11.3678 10.3074 11.3456 14.058V47.1632C11.3377 48.2772 11.5496 49.3818 11.9692 50.4139C12.3888 51.4461 13.0079 52.3856 13.7911 53.1789C15.3728 54.7809 17.5271 55.6898 19.7799 55.7057C22.0327 55.7216 24.1995 54.8431 25.8037 53.2635C27.4079 51.6839 28.3181 49.5326 28.3339 47.2828V33.9427V26.118C28.3339 25.3533 28.0297 24.6199 27.4883 24.0792C26.9468 23.5384 26.2124 23.2346 25.4466 23.2346H22.6552Z\",\np3838afa0: \"M67.8097 42.2698V23.2347H70.5773C70.9564 23.2347 71.3319 23.3092 71.6822 23.4541C72.0325 23.599 72.3508 23.8114 72.6189 24.0792C72.887 24.3469 73.0997 24.6648 73.2448 25.0146C73.3899 25.3644 73.4646 25.7394 73.4646 26.118V45.1532H70.6851C69.9214 45.15 69.1901 44.8449 68.6512 44.3045C68.1123 43.7641 67.8097 43.0325 67.8097 42.2698V42.2698Z\",\np38a74f0: \"M33.9767 47.929C33.4376 55.3229 27.2676 61.4247 20.0554 61.4247C16.2424 61.4247 12.5857 59.9121 9.88955 57.2196C7.19341 54.5271 5.67874 50.8753 5.67874 47.0675V23.2466H2.89926C2.13239 23.2466 1.39675 23.55 0.853375 24.0904C0.309997 24.6308 0.00313895 25.3642 -2.99221e-05 26.13V47.1154C-0.0224375 52.3706 2.03925 57.421 5.73442 61.1627C9.4296 64.9045 14.4577 67.0333 19.7199 67.0838C24.2797 67.0831 28.704 65.5352 32.2674 62.694C35.8307 59.8529 38.3217 55.8869 39.332 51.4465C39.4399 51.0198 39.4486 50.574 39.3573 50.1435C39.2661 49.7129 39.0773 49.3089 38.8056 48.9625C38.5338 48.616 38.1862 48.3363 37.7895 48.1447C37.3927 47.9531 36.9573 47.8547 36.5166 47.8572H33.9767V47.929Z\",\npe814d80: \"M56.9674 42.2698V16.4628C56.9673 16.0801 57.0436 15.7012 57.1916 15.3482C57.3397 14.9953 57.5567 14.6752 57.8299 14.4069C58.1031 14.1385 58.4271 13.9271 58.783 13.785C59.1388 13.643 59.5194 13.5731 59.9026 13.5794H62.6701V45.1532H59.9026C59.5194 45.1596 59.1388 45.0897 58.783 44.9476C58.4271 44.8056 58.1031 44.5942 57.8299 44.3258C57.5567 44.0574 57.3397 43.7374 57.1916 43.3844C57.0436 43.0314 56.9673 42.6525 56.9674 42.2698V42.2698Z\",\npf48a00: \"M35.7618 42.4373C34.6809 41.3588 33.8312 40.0716 33.2648 38.6543C32.6983 37.2371 32.427 35.7194 32.4672 34.1939C32.4311 32.6648 32.7061 31.1442 33.2755 29.7242C33.845 28.3043 34.697 27.0144 35.7801 25.9329C36.8631 24.8513 38.1547 24.0004 39.5766 23.4317C40.9985 22.8631 42.5211 22.5884 44.0524 22.6245C46.0565 22.5718 48.0365 23.0708 49.7756 24.0669C51.5147 25.0629 52.9458 26.5176 53.9123 28.2716L50.8334 30.0782C50.399 30.3371 49.8912 30.4457 49.3888 30.3873C48.8863 30.3289 48.4171 30.1067 48.0539 29.7552C46.9749 28.7253 45.5327 28.1621 44.0404 28.1879C43.2541 28.1709 42.4726 28.3149 41.7441 28.6109C41.0156 28.907 40.3555 29.3488 39.8044 29.9092C39.2533 30.4696 38.823 31.1367 38.5398 31.8695C38.2567 32.6023 38.1267 33.3852 38.1579 34.17C38.1376 34.9603 38.2742 35.7468 38.5601 36.4841C38.8459 37.2213 39.2752 37.8947 39.8232 38.4652C40.936 39.5183 42.404 40.1161 43.9369 40.1405C45.4697 40.1648 46.956 39.614 48.1018 38.5968C48.4741 38.2608 48.9427 38.05 49.4414 37.9942C49.9401 37.9384 50.4437 38.0404 50.8813 38.2857L53.9842 40.0564C53.0823 41.5777 51.8458 42.8744 50.3684 43.8484C48.8909 44.8224 47.2111 45.4483 45.4558 45.6788C43.7006 45.9093 41.9158 45.7384 40.2364 45.1789C38.557 44.6194 37.027 43.686 35.7618 42.4493V42.4373Z\",\n}\n","export default {\np12652a00: \"M12.7929 15.2014C12.4062 14.8151 12.1022 14.354 11.8996 13.8463C11.697 13.3386 11.5999 12.795 11.6143 12.2486C11.6014 11.7008 11.6997 11.1561 11.9034 10.6475C12.1071 10.1388 12.4119 9.67682 12.7994 9.28938C13.1868 8.90195 13.6488 8.59716 14.1575 8.39346C14.6661 8.18975 15.2108 8.09138 15.7586 8.10429C16.4755 8.08543 17.1838 8.26417 17.8059 8.62096C18.428 8.97775 18.94 9.49883 19.2857 10.1271L18.1843 10.7743C18.0289 10.867 17.8473 10.9059 17.6675 10.885C17.4878 10.8641 17.3199 10.7845 17.19 10.6586C16.804 10.2897 16.2881 10.0879 15.7543 10.0971C15.473 10.0911 15.1934 10.1426 14.9328 10.2487C14.6722 10.3547 14.4361 10.513 14.239 10.7137C14.0418 10.9145 13.8879 11.1535 13.7866 11.4159C13.6853 11.6784 13.6388 11.9589 13.65 12.24C13.6427 12.5231 13.6916 12.8048 13.7938 13.0689C13.8961 13.333 14.0497 13.5742 14.2457 13.7786C14.6438 14.1558 15.1689 14.3699 15.7172 14.3787C16.2656 14.3874 16.7973 14.1901 17.2071 13.8257C17.3403 13.7054 17.5079 13.6299 17.6863 13.6099C17.8647 13.5899 18.0449 13.6264 18.2014 13.7143L19.3114 14.3486C18.9888 14.8935 18.5465 15.358 18.0179 15.7069C17.4894 16.0558 16.8885 16.28 16.2606 16.3626C15.6327 16.4451 14.9943 16.3839 14.3935 16.1835C13.7928 15.9831 13.2454 15.6487 12.7929 15.2057V15.2014Z\",\np128e2c00: \"M7.85574 6.12C7.85405 5.87159 7.92633 5.62829 8.06338 5.4211C8.20043 5.21391 8.39604 5.05219 8.62531 4.95654C8.85457 4.86089 9.10712 4.83565 9.35078 4.88401C9.59445 4.93238 9.8182 5.05217 9.99356 5.22813C10.1689 5.40409 10.2879 5.62826 10.3355 5.87209C10.383 6.11592 10.3569 6.36838 10.2604 6.59731C10.164 6.82625 10.0016 7.0213 9.79392 7.15763C9.58626 7.29396 9.34271 7.36541 9.09431 7.36286C8.76647 7.3584 8.45337 7.22589 8.22193 6.99365C7.99049 6.76141 7.85906 6.44786 7.85574 6.12V6.12Z\",\np15ebc880: \"M24.0214 6.12001C24.0206 5.8728 24.0932 5.63092 24.2301 5.42508C24.3671 5.21925 24.562 5.05874 24.7903 4.96394C25.0187 4.86915 25.27 4.84434 25.5124 4.89268C25.7549 4.94101 25.9775 5.06031 26.152 5.23541C26.3265 5.41051 26.445 5.63353 26.4925 5.87613C26.54 6.11873 26.5143 6.36998 26.4187 6.59796C26.3231 6.82594 26.162 7.02037 25.9557 7.15656C25.7493 7.29275 25.5072 7.36456 25.26 7.36286C24.9322 7.3584 24.6191 7.22589 24.3876 6.99365C24.1562 6.76141 24.0248 6.44786 24.0214 6.12001V6.12001Z\",\np2b03ee00: \"M8.10429 8.32285V12.18V16.9371C8.10669 17.1819 8.0217 17.4196 7.86458 17.6073C7.70747 17.7951 7.48854 17.9206 7.24715 17.9614C7.10315 17.9823 6.95635 17.972 6.81668 17.9312C6.67701 17.8904 6.54774 17.8201 6.43761 17.725C6.32748 17.6299 6.23907 17.5123 6.17836 17.38C6.11765 17.2478 6.08605 17.1041 6.08572 16.9586V5.07857C6.08003 4.27269 6.39472 3.49756 6.96054 2.9237C7.52637 2.34984 8.29698 2.02425 9.10286 2.01857C9.90874 2.01289 10.6839 2.32757 11.2577 2.89339C11.8316 3.45922 12.1572 4.22983 12.1629 5.03571V7.36285H13.1571C13.4311 7.36285 13.6938 7.25404 13.8875 7.06034C14.0812 6.86664 14.19 6.60393 14.19 6.33V5.09571C14.198 3.7522 13.6719 2.46056 12.7275 1.50492C11.7831 0.549292 10.4978 0.00795366 9.15429 -2.83887e-06C7.81078 -0.00795933 6.51913 0.518118 5.5635 1.4625C4.60787 2.40688 4.06653 3.6922 4.05857 5.03571V16.8943C4.05576 17.2933 4.13157 17.689 4.28167 18.0587C4.43177 18.4285 4.65323 18.765 4.9334 19.0492C5.49922 19.623 6.26984 19.9486 7.07572 19.9543C7.8816 19.96 8.65673 19.6453 9.23059 19.0795C9.80445 18.5136 10.13 17.743 10.1357 16.9371V12.1586V9.35571C10.1357 9.08178 10.0269 8.81907 9.8332 8.62537C9.6395 8.43167 9.37679 8.32285 9.10286 8.32285H8.10429Z\",\np3000fb00: \"M41.0914 11.4171C42.2357 11.6529 43.7314 12.2014 43.7143 13.8814C43.7333 14.2448 43.6594 14.607 43.4997 14.9339C43.34 15.2608 43.0997 15.5417 42.8014 15.75C42.1396 16.1967 41.3537 16.4232 40.5557 16.3971C38.94 16.3971 37.8386 15.7671 37.26 14.5286L38.3186 13.9286C38.4801 13.8361 38.6683 13.8014 38.8521 13.8302C39.036 13.8591 39.2046 13.9497 39.33 14.0871C39.4864 14.2527 39.6773 14.3818 39.889 14.4655C40.1008 14.5492 40.3284 14.5853 40.5557 14.5714C41.28 14.5714 41.64 14.3529 41.64 13.8943C41.64 13.4357 41.0143 13.2343 40.2129 13.0371C39.0472 12.7371 37.59 12.2486 37.59 10.6157C37.5775 10.2658 37.6488 9.91796 37.7979 9.60114C37.947 9.28433 38.1696 9.0077 38.4472 8.79429C38.844 8.5099 39.2946 8.3094 39.7715 8.20504C40.2484 8.10067 40.7416 8.09463 41.2209 8.18729C41.7002 8.27994 42.1556 8.46935 42.5593 8.74393C42.9629 9.01851 43.3063 9.37251 43.5686 9.78429L42.4714 10.3843C42.3194 10.466 42.1457 10.4983 41.9744 10.4768C41.8032 10.4553 41.6429 10.381 41.5157 10.2643C41.2621 10.0339 40.9281 9.91232 40.5857 9.92572C40.0671 9.92572 39.6729 10.1786 39.6729 10.5686C39.6729 10.9586 40.2857 11.2114 41.0914 11.4171Z\",\np3405fff0: \"M12.1543 17.1686C11.9614 19.8172 9.75428 22.0029 7.17428 22.0029C5.81031 22.0029 4.5022 21.461 3.53773 20.4966C2.57325 19.5321 2.03142 18.224 2.03142 16.86V8.32715H1.03713C0.762807 8.32715 0.499653 8.43583 0.305274 8.62941C0.110895 8.82298 0.00112454 9.08569 -9.03731e-06 9.36001V16.8772C-0.00802475 18.7596 0.729489 20.5687 2.05134 21.909C3.37319 23.2494 5.17188 24.0119 7.05428 24.03C8.68543 24.0298 10.2681 23.4753 11.5428 22.4576C12.8175 21.4398 13.7086 20.0192 14.07 18.4286C14.1086 18.2757 14.1117 18.1161 14.079 17.9618C14.0464 17.8076 13.9789 17.6629 13.8817 17.5388C13.7844 17.4147 13.6601 17.3145 13.5182 17.2459C13.3763 17.1772 13.2205 17.142 13.0628 17.1429H12.1543V17.1686Z\",\np36679780: \"M24.2571 15.1414V8.32286H25.2471C25.3828 8.32286 25.5171 8.34958 25.6424 8.40148C25.7677 8.45339 25.8816 8.52947 25.9775 8.62538C26.0734 8.72129 26.1495 8.83515 26.2014 8.96046C26.2533 9.08577 26.28 9.22008 26.28 9.35572V16.1743H25.2857C25.0125 16.1732 24.7509 16.0638 24.5581 15.8703C24.3654 15.6767 24.2571 15.4146 24.2571 15.1414V15.1414Z\",\np75f2980: \"M20.3786 15.1414V5.89714C20.3786 5.76004 20.4058 5.62432 20.4588 5.49788C20.5118 5.37144 20.5894 5.2568 20.6871 5.16067C20.7849 5.06453 20.9008 4.98881 21.0281 4.93792C21.1553 4.88704 21.2915 4.862 21.4286 4.86428H22.4186V16.1743H21.4286C21.2915 16.1766 21.1553 16.1515 21.0281 16.1006C20.9008 16.0498 20.7849 15.974 20.6871 15.8779C20.5894 15.7818 20.5118 15.6671 20.4588 15.5407C20.4058 15.4142 20.3786 15.2785 20.3786 15.1414V15.1414Z\",\npb292700: \"M35.4086 9.31285C36.1566 10.1046 36.5616 11.1597 36.5357 12.2486C36.562 13.3426 36.1572 14.4032 35.4086 15.2014C35.0701 15.5832 34.6534 15.8876 34.1867 16.094C33.7201 16.3003 33.2144 16.4037 32.7043 16.3971C32.2189 16.4239 31.7343 16.3336 31.2912 16.1337C30.8481 15.9337 30.4596 15.6302 30.1586 15.2486V19.6371H29.1686C28.8946 19.6371 28.6319 19.5283 28.4382 19.3346C28.2445 19.1409 28.1357 18.8782 28.1357 18.6043V8.31857H29.3314C29.4402 8.318 29.548 8.33901 29.6486 8.38037C29.7492 8.42174 29.8406 8.48264 29.9176 8.55957C29.9945 8.63649 30.0554 8.7279 30.0967 8.82851C30.1381 8.92912 30.1591 9.03693 30.1586 9.14571V9.24428C30.4606 8.864 30.8493 8.56165 31.2923 8.36255C31.7352 8.16346 32.2194 8.07343 32.7043 8.1C33.2156 8.09642 33.7218 8.20287 34.1884 8.41214C34.655 8.62141 35.0711 8.92859 35.4086 9.31285V9.31285ZM32.3271 14.4557C32.6145 14.465 32.9008 14.4155 33.1683 14.3101C33.4359 14.2047 33.679 14.0457 33.8828 13.8429C34.0917 13.6329 34.2554 13.3823 34.3638 13.1067C34.4721 12.831 34.5229 12.536 34.5128 12.24C34.5244 11.9463 34.4743 11.6535 34.3658 11.3804C34.2573 11.1073 34.0928 10.86 33.8828 10.6543C33.4656 10.2505 32.9077 10.0248 32.3271 10.0248C31.7465 10.0248 31.1887 10.2505 30.7714 10.6543C30.5665 10.8628 30.4064 11.1111 30.301 11.3838C30.1956 11.6565 30.1471 11.9479 30.1586 12.24C30.1495 12.5344 30.199 12.8278 30.3042 13.1029C30.4094 13.3781 30.5682 13.6296 30.7714 13.8429C30.9757 14.0456 31.2187 14.2051 31.486 14.3119C31.7533 14.4187 32.0394 14.4705 32.3271 14.4643V14.4557Z\",\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\nimport svgPathsSymbol from \"../../imports/svg-txovph4k0g\"\nimport svgPathsPositive from \"../../imports/svg-p4zgbw8x8e\"\nimport svgPathsNegative from \"../../imports/svg-agvoxj05dl\"\n\nexport interface BrandLogoProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"symbol\" | \"full\"\n mode?: \"positive\" | \"negative\"\n}\n\nexport function BrandLogo({ variant = \"full\", mode = \"positive\", className, ...props }: BrandLogoProps) {\n if (variant === \"symbol\") {\n return (\n <div className={cn(\"relative inline-block\", className)} {...props} data-name=\"Logo Símbolo\">\n <svg \n className=\"block w-full h-full\" \n fill=\"none\" \n viewBox=\"0 0 22 36\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <path d={svgPathsSymbol.p9466600} fill=\"#E62EA8\" transform=\"translate(0.37, 0.02)\" />\n <path d={svgPathsSymbol.p395de780} fill=\"#E62EA8\" transform=\"translate(11.65, 7.32)\" />\n </svg>\n </div>\n )\n }\n\n if (mode === \"positive\") {\n return (\n <div className={cn(\"relative inline-block\", className)} {...props} data-name=\"Logo\">\n <svg \n className=\"block w-full h-full\" \n fill=\"none\" \n viewBox=\"0 0 123 67\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <g clipPath=\"url(#clip0_positive)\">\n <g id=\"Group_Positive\">\n <path d={svgPathsPositive.p38a74f0} fill=\"#E52EA8\" />\n <path d={svgPathsPositive.p35662200} fill=\"#E52EA8\" />\n <path d={svgPathsPositive.p1cdcfe80} fill=\"#E52EA8\" />\n </g>\n <path d={svgPathsPositive.pf48a00} fill=\"#5B158C\" />\n <path d={svgPathsPositive.pe814d80} fill=\"#5B158C\" />\n <path d={svgPathsPositive.p3838afa0} fill=\"#5B158C\" />\n <path d={svgPathsPositive.p2d489f00} fill=\"#5B158C\" />\n <path d={svgPathsPositive.p2cb5a300} fill=\"#5B158C\" />\n <path d={svgPathsPositive.p344a5f80} fill=\"#5B158C\" />\n </g>\n <defs>\n <clipPath id=\"clip0_positive\">\n <rect width=\"122.201\" height=\"67\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </div>\n )\n }\n\n // Negative\n return (\n <div className={cn(\"relative inline-block\", className)} {...props} data-name=\"Logo Negative\">\n <svg \n className=\"block w-full h-full\" \n fill=\"none\" \n viewBox=\"0 0 44 24\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <g clipPath=\"url(#clip0_negative)\">\n <g id=\"Group_Negative\">\n <path d={svgPathsNegative.p3405fff0} fill=\"#E52EA8\" />\n <path d={svgPathsNegative.p2b03ee00} fill=\"#E52EA8\" />\n <path d={svgPathsNegative.p128e2c00} fill=\"#E52EA8\" />\n </g>\n <path d={svgPathsNegative.p12652a00} fill=\"white\" />\n <path d={svgPathsNegative.p75f2980} fill=\"white\" />\n <path d={svgPathsNegative.p36679780} fill=\"white\" />\n <path d={svgPathsNegative.p15ebc880} fill=\"white\" />\n <path d={svgPathsNegative.pb292700} fill=\"white\" />\n <path d={svgPathsNegative.p3000fb00} fill=\"white\" />\n </g>\n <defs>\n <clipPath id=\"clip0_negative\">\n <rect width=\"43.7143\" height=\"24\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { \n Home, \n Folder, \n Users, \n Calendar, \n BarChart3, \n Settings,\n LayoutGrid,\n FileText,\n Star,\n MessageSquare,\n Download,\n Sparkles,\n Zap,\n Bell,\n PanelLeftClose,\n PanelLeft,\n Plus,\n ChevronRight,\n Pin,\n type LucideIcon\n} from \"lucide-react\"\nimport { ScrollArea } from \"./scroll-area\"\nimport { Button } from \"./button\"\nimport { Badge } from \"./badge\"\nimport { BrandLogo } from \"./brand-logo\"\nimport { cn } from \"./utils\"\n\n// TypeScript Interfaces\nexport interface PrimaryNavItem {\n id: string\n label: string\n icon: LucideIcon\n}\n\nexport interface SecondaryNavItem {\n label: string\n icon: LucideIcon\n badge?: string | number\n chevron?: boolean\n highlighted?: boolean\n}\n\nexport interface AppLayoutProps {\n children: React.ReactNode\n title?: string\n theme?: \"light\" | \"dark\"\n onThemeToggle?: () => void\n primaryNavItems?: PrimaryNavItem[]\n secondaryNavItems?: SecondaryNavItem[]\n secondaryNavTitle?: string\n activePrimaryItem?: string\n onPrimaryItemClick?: (id: string) => void\n logoComponent?: React.ReactNode\n hideSecondaryNav?: boolean\n defaultPrimaryNavPinned?: boolean\n defaultSecondaryNavOpen?: boolean\n}\n\n// Default Navigation Items\nconst DEFAULT_PRIMARY_NAV_ITEMS: PrimaryNavItem[] = [\n { id: \"home\", label: \"Início\", icon: Home },\n { id: \"projects\", label: \"Projetos\", icon: Folder },\n { id: \"clients\", label: \"Clientes\", icon: Users },\n { id: \"calendar\", label: \"Calendário\", icon: Calendar },\n { id: \"reports\", label: \"Relatórios\", icon: BarChart3 },\n { id: \"settings\", label: \"Configurações\", icon: Settings }\n]\n\nconst DEFAULT_SECONDARY_NAV_ITEMS: SecondaryNavItem[] = [\n { label: \"Todos os Projetos\", icon: LayoutGrid },\n { label: \"Documentos\", icon: FileText, badge: \"3\" },\n { label: \"Favoritos\", icon: Star, chevron: true },\n { label: \"Comentários\", icon: MessageSquare, badge: \"12\", highlighted: true },\n { label: \"Downloads\", icon: Download },\n { label: \"Recentes\", icon: Sparkles, chevron: true }\n]\n\n// Main AppLayout Component\nexport function AppLayout({\n children,\n title = \"Dashboard\",\n theme = \"light\",\n onThemeToggle,\n primaryNavItems = DEFAULT_PRIMARY_NAV_ITEMS,\n secondaryNavItems = DEFAULT_SECONDARY_NAV_ITEMS,\n secondaryNavTitle = \"Menu\",\n activePrimaryItem,\n onPrimaryItemClick,\n logoComponent,\n hideSecondaryNav = false,\n defaultPrimaryNavPinned = false,\n defaultSecondaryNavOpen = true\n}: AppLayoutProps) {\n const [isPrimaryNavPinned, setIsPrimaryNavPinned] = React.useState(defaultPrimaryNavPinned)\n const [isPrimaryNavHovered, setIsPrimaryNavHovered] = React.useState(false)\n const [isSecondaryNavOpen, setIsSecondaryNavOpen] = React.useState(defaultSecondaryNavOpen)\n const [activeItem, setActiveItem] = React.useState(activePrimaryItem || primaryNavItems[0]?.id)\n\n const isPrimaryNavExpanded = isPrimaryNavPinned || isPrimaryNavHovered\n\n const handlePrimaryItemClick = (id: string) => {\n setActiveItem(id)\n if (onPrimaryItemClick) {\n onPrimaryItemClick(id)\n }\n }\n\n return (\n <div className=\"flex h-screen w-full bg-background\">\n {/* Primary Navigation */}\n <div\n className={cn(\n \"relative border-r bg-background transition-all duration-200\",\n isPrimaryNavExpanded ? \"w-56\" : \"w-16\"\n )}\n onMouseEnter={() => setIsPrimaryNavHovered(true)}\n onMouseLeave={() => setIsPrimaryNavHovered(false)}\n >\n <ScrollArea className=\"h-full\">\n <div className=\"flex h-full flex-col\">\n {/* Logo */}\n <div className=\"flex h-14 min-h-[65px] items-center border-b bg-background px-3\">\n {isPrimaryNavExpanded ? (\n <div className=\"flex min-w-0 flex-1 items-center justify-between overflow-hidden\">\n {logoComponent || (\n <BrandLogo variant=\"full\" className=\"h-8 w-auto\" />\n )}\n <button\n className=\"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded hover:bg-accent\"\n onClick={() => setIsPrimaryNavPinned(!isPrimaryNavPinned)}\n >\n <Pin className={cn(\"h-3.5 w-3.5\", isPrimaryNavPinned ? \"fill-primary text-primary\" : \"text-muted-foreground\")} />\n </button>\n </div>\n ) : (\n <div className=\"flex w-full justify-center\">\n {logoComponent || (\n <BrandLogo variant=\"symbol\" className=\"h-8 w-8\" />\n )}\n </div>\n )}\n </div>\n\n {/* Navigation Items */}\n <nav className=\"flex-1 space-y-1 p-2\">\n {primaryNavItems.map((item) => {\n const Icon = item.icon\n const isActive = activeItem === item.id\n return (\n <button\n key={item.id}\n onClick={() => handlePrimaryItemClick(item.id)}\n className={cn(\n \"flex w-full items-center gap-3 rounded px-3 py-2 text-sm transition-colors\",\n isActive\n ? \"bg-accent text-accent-foreground\"\n : \"text-muted-foreground hover:bg-accent hover:text-accent-foreground\"\n )}\n >\n <Icon className=\"h-4 w-4 shrink-0\" />\n <span\n className={cn(\n \"transition-all duration-300\",\n isPrimaryNavExpanded ? \"opacity-100\" : \"w-0 opacity-0\"\n )}\n >\n {item.label}\n </span>\n </button>\n )\n })}\n </nav>\n </div>\n </ScrollArea>\n </div>\n\n {/* Secondary Navigation */}\n {!hideSecondaryNav && isSecondaryNavOpen && (\n <div className=\"w-64 border-l bg-background\">\n <ScrollArea className=\"h-full\">\n <div className=\"flex h-full flex-col\">\n {/* Secondary Header */}\n <div className=\"flex h-14 items-center justify-between border-b px-3\">\n <h2 className=\"text-sm font-semibold\">{secondaryNavTitle}</h2>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6 p-0\">\n <Plus className=\"h-4 w-4\" />\n </Button>\n </div>\n\n {/* Secondary Navigation Items */}\n <nav className=\"flex-1 space-y-0.5 p-2\">\n {secondaryNavItems.map((item, index) => {\n const Icon = item.icon\n return (\n <button\n key={index}\n className={cn(\n \"flex w-full items-center gap-2 rounded px-3 py-2 text-sm transition-colors\",\n item.highlighted\n ? \"bg-primary/5 text-primary hover:bg-accent\"\n : \"text-muted-foreground hover:bg-accent hover:text-accent-foreground\"\n )}\n >\n <Icon className=\"h-4 w-4 shrink-0\" />\n <span className={cn(\"flex-1 text-left\", item.highlighted && \"font-medium\")}>{item.label}</span>\n {item.badge && (\n <Badge \n variant={item.highlighted ? \"default\" : \"secondary\"}\n className=\"min-w-5 px-1.5 text-xs\"\n >\n {item.badge}\n </Badge>\n )}\n {item.chevron && (\n <ChevronRight className=\"h-3 w-3\" />\n )}\n </button>\n )\n })}\n </nav>\n\n {/* Secondary Footer */}\n <div className=\"border-t p-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-primary text-primary-foreground\">\n <Zap className=\"h-4 w-4\" />\n </div>\n <div className=\"flex-1\">\n <p className=\"text-xs font-medium\">Ações rápidas</p>\n <p className=\"text-xs text-muted-foreground\">Ver todas</p>\n </div>\n </div>\n </div>\n </div>\n </ScrollArea>\n </div>\n )}\n\n {/* Main Content Area */}\n <div className=\"flex flex-1 flex-col\">\n {/* Main Header */}\n <div className=\"flex h-14 items-center justify-between border-b bg-background px-4\">\n <div className=\"flex items-center gap-3\">\n {!hideSecondaryNav && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 p-0\"\n onClick={() => setIsSecondaryNavOpen(!isSecondaryNavOpen)}\n >\n {isSecondaryNavOpen ? (\n <PanelLeftClose className=\"h-4 w-4\" />\n ) : (\n <PanelLeft className=\"h-4 w-4\" />\n )}\n </Button>\n )}\n <h1 className=\"text-base font-semibold\">{title}</h1>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8 p-0\">\n <Bell className=\"h-4 w-4\" />\n </Button>\n {onThemeToggle && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onThemeToggle}\n >\n {theme === \"light\" ? \"🌙\" : \"☀️\"}\n </Button>\n )}\n </div>\n </div>\n\n {/* Content */}\n <ScrollArea className=\"flex-1\">\n <div className=\"p-4\">\n {children}\n </div>\n </ScrollArea>\n </div>\n </div>\n )\n}\n","\"use client\";\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />;\n}\n\nexport { AspectRatio };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\n\nimport { cn } from \"./utils\";\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-10 shrink-0 overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 pt-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <h4\n data-slot=\"card-title\"\n className={cn(\"leading-none\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <p\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 [&:last-child]:pb-6\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 pb-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import React, { useState } from 'react'\n\nconst ERROR_IMG_SRC =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvcGFjaXR5PSIuMyIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIzLjciPjxyZWN0IHg9IjE2IiB5PSIxNiIgd2lkdGg9IjU2IiBoZWlnaHQ9IjU2IiByeD0iNiIvPjxwYXRoIGQ9Im0xNiA1OCAxNi0xOCAzMiAzMiIvPjxjaXJjbGUgY3g9IjUzIiBjeT0iMzUiIHI9IjciLz48L3N2Zz4KCg=='\n\nexport function ImageWithFallback(props: React.ImgHTMLAttributes<HTMLImageElement>) {\n const [didError, setDidError] = useState(false)\n\n const handleError = () => {\n setDidError(true)\n }\n\n const { src, alt, style, className, ...rest } = props\n\n return didError ? (\n <div\n className={`inline-block bg-gray-100 text-center align-middle ${className ?? ''}`}\n style={style}\n >\n <div className=\"flex items-center justify-center w-full h-full\">\n <img src={ERROR_IMG_SRC} alt=\"Error loading image\" {...rest} data-original-url={src} />\n </div>\n </div>\n ) : (\n <img src={src} alt={alt} className={className} style={style} {...rest} onError={handleError} />\n )\n}\n","import { ImageWithFallback } from \"../../figma/ImageWithFallback\";\n\ninterface PrintHeaderProps {\n /**\n * URL ou path do logo da empresa\n */\n logo?: string;\n /**\n * Nome da empresa\n */\n companyName?: string;\n /**\n * Informações de contato\n */\n contactInfo?: {\n address?: string;\n phone?: string;\n email?: string;\n website?: string;\n };\n /**\n * Tipo de documento (aparece no canto direito)\n */\n documentType?: string;\n /**\n * Número do documento\n */\n documentNumber?: string;\n /**\n * Data de emissão\n */\n issueDate?: string;\n}\n\nexport function PrintHeader({\n logo,\n companyName = \"iClips\",\n contactInfo,\n documentType,\n documentNumber,\n issueDate,\n}: PrintHeaderProps) {\n return (\n <div className=\"print-header border-b-2 border-primary pb-6 mb-8\">\n <div className=\"flex items-start justify-between\">\n {/* Logo e informações da empresa */}\n <div className=\"flex items-start gap-4\">\n {logo && (\n <div className=\"w-24 h-24 flex-shrink-0\">\n <ImageWithFallback\n src={logo}\n alt={`${companyName} Logo`}\n className=\"w-full h-full object-contain\"\n />\n </div>\n )}\n \n <div className=\"space-y-1\">\n <h2 className=\"text-xl font-semibold text-primary\">{companyName}</h2>\n \n {contactInfo && (\n <div className=\"text-xs text-gray-600 space-y-0.5\">\n {contactInfo.address && <p>{contactInfo.address}</p>}\n {contactInfo.phone && <p>Tel: {contactInfo.phone}</p>}\n {contactInfo.email && <p>Email: {contactInfo.email}</p>}\n {contactInfo.website && <p>Site: {contactInfo.website}</p>}\n </div>\n )}\n </div>\n </div>\n\n {/* Informações do documento */}\n {(documentType || documentNumber || issueDate) && (\n <div className=\"text-right space-y-1\">\n {documentType && (\n <h3 className=\"text-lg font-semibold text-gray-900\">\n {documentType}\n </h3>\n )}\n {documentNumber && (\n <p className=\"text-sm text-gray-600\">\n Nº {documentNumber}\n </p>\n )}\n {issueDate && (\n <p className=\"text-xs text-gray-500\">\n Emitido em: {issueDate}\n </p>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n","interface PrintFooterProps {\n /**\n * Número da página atual\n */\n pageNumber?: number;\n /**\n * Total de páginas\n */\n totalPages?: number;\n /**\n * Texto de rodapé customizado\n */\n footerText?: string;\n /**\n * Mostrar data de geração\n */\n showGeneratedDate?: boolean;\n}\n\nexport function PrintFooter({\n pageNumber,\n totalPages,\n footerText,\n showGeneratedDate = true,\n}: PrintFooterProps) {\n const currentDate = new Date().toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n\n return (\n <div className=\"print-footer mt-12 pt-6 border-t border-gray-200\">\n <div className=\"flex items-center justify-between text-xs text-gray-500\">\n {/* Texto de rodapé ou data */}\n <div>\n {footerText ? (\n <p>{footerText}</p>\n ) : showGeneratedDate ? (\n <p>Documento gerado em {currentDate}</p>\n ) : null}\n </div>\n\n {/* Paginação */}\n {pageNumber && totalPages && (\n <div>\n <p>\n Página {pageNumber} de {totalPages}\n </p>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { cn } from \"../../ui/utils\";\n\ninterface PrintSectionProps {\n /**\n * Título da seção\n */\n title?: string;\n /**\n * Subtítulo da seção\n */\n subtitle?: string;\n /**\n * Conteúdo da seção\n */\n children: React.ReactNode;\n /**\n * Classe CSS adicional\n */\n className?: string;\n /**\n * Evitar quebra de página\n */\n avoidBreak?: boolean;\n /**\n * Forçar quebra de página antes\n */\n pageBreak?: boolean;\n}\n\nexport function PrintSection({\n title,\n subtitle,\n children,\n className,\n avoidBreak = false,\n pageBreak = false,\n}: PrintSectionProps) {\n return (\n <div\n className={cn(\n \"print-section mb-8\",\n avoidBreak && \"avoid-break\",\n pageBreak && \"page-break\",\n className\n )}\n >\n {title && (\n <div className=\"mb-4\">\n <h2 className=\"text-lg font-semibold text-gray-900 border-b-2 border-primary pb-2\">\n {title}\n </h2>\n {subtitle && (\n <p className=\"text-sm text-gray-600 mt-1\">{subtitle}</p>\n )}\n </div>\n )}\n\n <div className=\"text-sm text-gray-700 leading-relaxed\">\n {children}\n </div>\n </div>\n );\n}\n","import { cn } from \"../../ui/utils\";\n\ninterface InfoItem {\n label: string;\n value: string | React.ReactNode;\n highlight?: boolean;\n}\n\ninterface PrintInfoGridProps {\n /**\n * Lista de informações a serem exibidas\n */\n items: InfoItem[];\n /**\n * Número de colunas\n */\n columns?: 1 | 2 | 3 | 4;\n /**\n * Classe CSS adicional\n */\n className?: string;\n}\n\nexport function PrintInfoGrid({\n items,\n columns = 2,\n className,\n}: PrintInfoGridProps) {\n const gridClass = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n }[columns];\n\n return (\n <div className={cn(\"print-info-grid\", className)}>\n <div className={cn(\"grid gap-4\", gridClass)}>\n {items.map((item, index) => (\n <div\n key={index}\n className={cn(\n \"info-item\",\n item.highlight && \"bg-gray-50 p-3 rounded border border-gray-200\"\n )}\n >\n <dt className=\"text-xs font-medium text-gray-500 uppercase tracking-wide mb-1\">\n {item.label}\n </dt>\n <dd\n className={cn(\n \"text-sm text-gray-900\",\n item.highlight && \"font-semibold\"\n )}\n >\n {item.value}\n </dd>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { cn } from \"../../ui/utils\";\n\ninterface Column {\n header: string;\n key: string;\n align?: \"left\" | \"center\" | \"right\";\n width?: string;\n render?: (value: any, row: any) => React.ReactNode;\n}\n\ninterface PrintTableProps {\n /**\n * Colunas da tabela\n */\n columns: Column[];\n /**\n * Dados da tabela\n */\n data: any[];\n /**\n * Título da tabela (opcional)\n */\n title?: string;\n /**\n * Mostrar zebra (linhas alternadas)\n */\n striped?: boolean;\n /**\n * Mostrar borda\n */\n bordered?: boolean;\n /**\n * Densidade (espaçamento)\n */\n density?: \"compact\" | \"normal\" | \"comfortable\";\n}\n\nexport function PrintTable({\n columns,\n data,\n title,\n striped = true,\n bordered = true,\n density = \"normal\",\n}: PrintTableProps) {\n const paddingClass = {\n compact: \"px-2 py-1\",\n normal: \"px-3 py-2\",\n comfortable: \"px-4 py-3\",\n }[density];\n\n return (\n <div className=\"print-table-container avoid-break\">\n {title && (\n <h3 className=\"text-base font-semibold text-gray-900 mb-3\">\n {title}\n </h3>\n )}\n\n <table\n className={cn(\n \"w-full text-sm\",\n bordered && \"border border-gray-300\"\n )}\n >\n <thead>\n <tr className=\"bg-gray-100\">\n {columns.map((column, index) => (\n <th\n key={index}\n className={cn(\n paddingClass,\n \"font-semibold text-gray-900 border-b-2 border-gray-300\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\"\n )}\n style={{ width: column.width }}\n >\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.map((row, rowIndex) => (\n <tr\n key={rowIndex}\n className={cn(\n striped && rowIndex % 2 === 0 && \"bg-gray-50\",\n \"avoid-break\"\n )}\n >\n {columns.map((column, colIndex) => {\n const value = row[column.key];\n const displayValue = column.render\n ? column.render(value, row)\n : value;\n\n return (\n <td\n key={colIndex}\n className={cn(\n paddingClass,\n \"border-b border-gray-200\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\"\n )}\n >\n {displayValue}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","interface SignatureField {\n label: string;\n name?: string;\n role?: string;\n date?: string;\n}\n\ninterface PrintSignatureProps {\n /**\n * Lista de assinaturas necessárias\n */\n signatures: SignatureField[];\n /**\n * Layout das assinaturas\n */\n layout?: \"horizontal\" | \"vertical\";\n /**\n * Mostrar linha de assinatura\n */\n showLine?: boolean;\n /**\n * Texto de instrução\n */\n instructionText?: string;\n}\n\nexport function PrintSignature({\n signatures,\n layout = \"horizontal\",\n showLine = true,\n instructionText,\n}: PrintSignatureProps) {\n return (\n <div className=\"print-signature mt-12 page-break avoid-break\">\n {instructionText && (\n <p className=\"text-sm text-gray-600 mb-6\">{instructionText}</p>\n )}\n\n <div\n className={\n layout === \"horizontal\"\n ? \"grid grid-cols-2 gap-8\"\n : \"space-y-12\"\n }\n >\n {signatures.map((signature, index) => (\n <div key={index} className=\"signature-field\">\n {/* Espaço para assinatura */}\n <div className=\"h-20 mb-2\" />\n\n {/* Linha de assinatura */}\n {showLine && (\n <div className=\"border-t-2 border-gray-900 mb-2\" />\n )}\n\n {/* Informações */}\n <div className=\"text-sm\">\n <p className=\"font-semibold text-gray-900\">{signature.label}</p>\n {signature.name && (\n <p className=\"text-gray-600\">{signature.name}</p>\n )}\n {signature.role && (\n <p className=\"text-gray-500 text-xs\">{signature.role}</p>\n )}\n {signature.date && (\n <p className=\"text-gray-500 text-xs mt-1\">\n Data: {signature.date}\n </p>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { cn } from \"../ui/utils\";\nimport { PrintHeader } from \"./shared/PrintHeader\";\nimport { PrintFooter } from \"./shared/PrintFooter\";\nimport { PrintSection } from \"./shared/PrintSection\";\nimport { PrintInfoGrid } from \"./shared/PrintInfoGrid\";\nimport { PrintTable } from \"./shared/PrintTable\";\nimport { PrintSignature } from \"./shared/PrintSignature\";\n\nexport interface DadosContrato {\n // Informações do contrato\n numeroContrato: string;\n dataEmissao: string;\n dataInicio: string;\n dataTermino: string;\n \n // Informações do cliente\n cliente: {\n nome: string;\n cnpj?: string;\n endereco?: string;\n representante?: string;\n email?: string;\n telefone?: string;\n };\n \n // Informações da agência\n agencia: {\n nome: string;\n cnpj?: string;\n endereco?: string;\n representante?: string;\n email?: string;\n telefone?: string;\n };\n \n // Valores e condições\n valorFee: number;\n totalHoras: number;\n valorHora?: number;\n condicoesPagamento: string;\n formaPagamento?: string;\n \n // Serviços incluídos\n servicos?: Array<{\n nome: string;\n descricao?: string;\n horasEstimadas?: number;\n }>;\n \n // Cláusulas contratuais\n clausulas?: Array<{\n titulo: string;\n conteudo: string;\n }>;\n \n // Observações\n observacoes?: string;\n}\n\ninterface ContractTemplateProps {\n data: DadosContrato;\n showPreview?: boolean;\n logo?: string;\n showServices?: boolean;\n}\n\nexport function ContractTemplate({\n data,\n showPreview = false,\n logo,\n showServices = true,\n}: ContractTemplateProps) {\n const formatCurrency = (value: number) => {\n return new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n }).format(value);\n };\n\n const formatDate = (dateStr: string) => {\n return new Date(dateStr).toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n };\n\n return (\n <div\n className={cn(\n \"contract-template bg-white text-black\",\n showPreview\n ? \"shadow-lg rounded-lg p-8 max-w-5xl mx-auto my-8\"\n : \"p-0\"\n )}\n style={{\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n fontSize: \"12pt\",\n lineHeight: \"1.6\",\n }}\n >\n {/* Cabeçalho */}\n <PrintHeader\n logo={logo}\n companyName={data.agencia.nome}\n contactInfo={{\n address: data.agencia.endereco,\n phone: data.agencia.telefone,\n email: data.agencia.email,\n }}\n documentType=\"Contrato de Fee Mensal\"\n documentNumber={data.numeroContrato}\n issueDate={formatDate(data.dataEmissao)}\n />\n\n {/* Informações Principais */}\n <PrintSection title=\"Informações do Contrato\">\n <PrintInfoGrid\n columns={2}\n items={[\n {\n label: \"Número do Contrato\",\n value: data.numeroContrato,\n highlight: true,\n },\n {\n label: \"Data de Emissão\",\n value: formatDate(data.dataEmissao),\n },\n {\n label: \"Vigência - Início\",\n value: formatDate(data.dataInicio),\n },\n {\n label: \"Vigência - Término\",\n value: formatDate(data.dataTermino),\n },\n {\n label: \"Valor do Fee Mensal\",\n value: formatCurrency(data.valorFee),\n highlight: true,\n },\n {\n label: \"Total de Horas\",\n value: `${data.totalHoras}h/mês`,\n },\n ]}\n />\n </PrintSection>\n\n {/* Partes Contratantes */}\n <PrintSection title=\"Partes Contratantes\" className=\"grid grid-cols-2 gap-6\">\n <div>\n <h3 className=\"font-semibold text-sm mb-3 text-primary\">\n CONTRATANTE\n </h3>\n <PrintInfoGrid\n columns={1}\n items={[\n { label: \"Razão Social\", value: data.cliente.nome },\n ...(data.cliente.cnpj\n ? [{ label: \"CNPJ\", value: data.cliente.cnpj }]\n : []),\n ...(data.cliente.endereco\n ? [{ label: \"Endereço\", value: data.cliente.endereco }]\n : []),\n ...(data.cliente.representante\n ? [\n {\n label: \"Representante Legal\",\n value: data.cliente.representante,\n },\n ]\n : []),\n ...(data.cliente.email\n ? [{ label: \"E-mail\", value: data.cliente.email }]\n : []),\n ...(data.cliente.telefone\n ? [{ label: \"Telefone\", value: data.cliente.telefone }]\n : []),\n ]}\n />\n </div>\n\n <div>\n <h3 className=\"font-semibold text-sm mb-3 text-primary\">\n CONTRATADA\n </h3>\n <PrintInfoGrid\n columns={1}\n items={[\n { label: \"Razão Social\", value: data.agencia.nome },\n ...(data.agencia.cnpj\n ? [{ label: \"CNPJ\", value: data.agencia.cnpj }]\n : []),\n ...(data.agencia.endereco\n ? [{ label: \"Endereço\", value: data.agencia.endereco }]\n : []),\n ...(data.agencia.representante\n ? [\n {\n label: \"Representante Legal\",\n value: data.agencia.representante,\n },\n ]\n : []),\n ...(data.agencia.email\n ? [{ label: \"E-mail\", value: data.agencia.email }]\n : []),\n ...(data.agencia.telefone\n ? [{ label: \"Telefone\", value: data.agencia.telefone }]\n : []),\n ]}\n />\n </div>\n </PrintSection>\n\n {/* Escopo dos Serviços */}\n {showServices && data.servicos && data.servicos.length > 0 && (\n <PrintSection title=\"Escopo dos Serviços\">\n <PrintTable\n columns={[\n { header: \"Serviço\", key: \"nome\", width: \"40%\" },\n { header: \"Descrição\", key: \"descricao\", width: \"45%\" },\n {\n header: \"Horas Est.\",\n key: \"horasEstimadas\",\n align: \"center\",\n width: \"15%\",\n render: (value) => (value ? `${value}h` : \"-\"),\n },\n ]}\n data={data.servicos}\n striped\n density=\"comfortable\"\n />\n </PrintSection>\n )}\n\n {/* Condições Comerciais */}\n <PrintSection title=\"Condições Comerciais\">\n <PrintInfoGrid\n columns={2}\n items={[\n {\n label: \"Valor do Fee Mensal\",\n value: formatCurrency(data.valorFee),\n highlight: true,\n },\n {\n label: \"Total de Horas Mensais\",\n value: `${data.totalHoras} horas`,\n },\n ...(data.valorHora\n ? [\n {\n label: \"Valor da Hora Adicional\",\n value: formatCurrency(data.valorHora),\n },\n ]\n : []),\n {\n label: \"Condições de Pagamento\",\n value: data.condicoesPagamento,\n },\n ...(data.formaPagamento\n ? [\n {\n label: \"Forma de Pagamento\",\n value: data.formaPagamento,\n },\n ]\n : []),\n ]}\n />\n </PrintSection>\n\n {/* Cláusulas Contratuais */}\n {data.clausulas && data.clausulas.length > 0 && (\n <PrintSection title=\"Cláusulas Contratuais\" pageBreak>\n <div className=\"space-y-6\">\n {data.clausulas.map((clause, index) => (\n <div key={index} className=\"clause avoid-break\">\n <h4 className=\"font-semibold text-sm mb-2\">\n Cláusula {index + 1}ª - {clause.titulo}\n </h4>\n <p className=\"text-sm text-gray-700 leading-relaxed pl-4\">\n {clause.conteudo}\n </p>\n </div>\n ))}\n </div>\n </PrintSection>\n )}\n\n {/* Observações */}\n {data.observacoes && (\n <PrintSection title=\"Observações\">\n <p className=\"text-sm text-gray-700 leading-relaxed\">{data.observacoes}</p>\n </PrintSection>\n )}\n\n {/* Assinaturas */}\n <PrintSignature\n signatures={[\n {\n label: \"CONTRATANTE\",\n name: data.cliente.nome,\n role: data.cliente.representante,\n },\n {\n label: \"CONTRATADA\",\n name: data.agencia.nome,\n role: data.agencia.representante,\n },\n ]}\n instructionText=\"As partes, estando de acordo com os termos e condições estabelecidos neste contrato, assinam o presente instrumento em duas vias de igual teor e forma.\"\n />\n\n {/* Rodapé */}\n <PrintFooter pageNumber={1} totalPages={1} />\n </div>\n );\n}\n\n/**\n * Dados de exemplo para o contrato\n * Use este objeto para testar o componente ContractTemplate\n */\nexport const dadosContratoExemplo: DadosContrato = {\n numeroContrato: 'FEE-2024-001',\n dataEmissao: '2024-01-15',\n dataInicio: '2024-02-01',\n dataTermino: '2025-01-31',\n \n cliente: {\n nome: 'Coca-Cola Brasil Ltda.',\n cnpj: '00.000.000/0001-00',\n endereco: 'Av. Paulista, 1000 - São Paulo, SP - CEP 01310-100',\n representante: 'João da Silva',\n email: 'joao.silva@cocacola.com.br',\n telefone: '(11) 3000-0000',\n },\n \n agencia: {\n nome: 'iClips Publicidade e Marketing',\n cnpj: '11.111.111/0001-11',\n endereco: 'Rua das Flores, 500 - São Paulo, SP - CEP 04567-890',\n representante: 'Maria Santos',\n email: 'contato@iclips.com.br',\n telefone: '(11) 4000-0000',\n },\n \n valorFee: 15000,\n totalHoras: 160,\n valorHora: 150,\n condicoesPagamento: 'Até o 5º dia útil do mês subsequente',\n formaPagamento: 'Transferência bancária',\n \n servicos: [\n {\n nome: 'Gestão de Mídias Sociais',\n descricao: 'Planejamento, criação de conteúdo e publicação em redes sociais',\n horasEstimadas: 60,\n },\n {\n nome: 'Criação de Campanhas',\n descricao: 'Desenvolvimento de campanhas publicitárias integradas',\n horasEstimadas: 50,\n },\n {\n nome: 'Produção de Conteúdo',\n descricao: 'Criação de textos, imagens e vídeos para diversos canais',\n horasEstimadas: 30,\n },\n {\n nome: 'Atendimento e Planejamento',\n descricao: 'Reuniões de alinhamento, relatórios e planejamento estratégico',\n horasEstimadas: 20,\n },\n ],\n \n clausulas: [\n {\n titulo: 'Do Objeto',\n conteudo:\n 'O presente contrato tem por objeto a prestação de serviços de publicidade e marketing pela CONTRATADA à CONTRATANTE, compreendendo as atividades descritas no escopo dos serviços, mediante o pagamento do fee mensal estabelecido.',\n },\n {\n titulo: 'Do Valor e Forma de Pagamento',\n conteudo:\n 'Pelos serviços prestados, a CONTRATANTE pagará à CONTRATADA o valor mensal de R$ 15.000,00 (quinze mil reais), que deverá ser pago até o 5º dia útil do mês subsequente à prestação dos serviços, mediante transferência bancária para a conta indicada pela CONTRATADA.',\n },\n {\n titulo: 'Das Horas de Trabalho',\n conteudo:\n 'O fee mensal inclui até 160 (cento e sessenta) horas de trabalho. Horas excedentes serão cobradas separadamente ao valor de R$ 150,00 (cento e cinquenta reais) por hora, mediante aprovação prévia da CONTRATANTE.',\n },\n {\n titulo: 'Da Vigência',\n conteudo:\n 'O presente contrato terá vigência de 12 (doze) meses, iniciando-se em 01 de fevereiro de 2024 e encerrando-se em 31 de janeiro de 2025, podendo ser renovado mediante acordo entre as partes.',\n },\n {\n titulo: 'Da Rescisão',\n conteudo:\n 'Qualquer das partes poderá rescindir o presente contrato mediante comunicação por escrito com antecedência mínima de 30 (trinta) dias, sem prejuízo das obrigações já assumidas até a data da rescisão.',\n },\n {\n titulo: 'Da Confidencialidade',\n conteudo:\n 'As partes se comprometem a manter sigilo sobre todas as informações confidenciais a que tiverem acesso em decorrência deste contrato, não podendo divulgá-las a terceiros sem prévia autorização por escrito da outra parte.',\n },\n {\n titulo: 'Da Propriedade Intelectual',\n conteudo:\n 'Todos os materiais criados pela CONTRATADA no âmbito deste contrato serão de propriedade da CONTRATANTE após o pagamento integral dos valores devidos, sendo permitido à CONTRATADA utilizar tais materiais em seu portfólio.',\n },\n {\n titulo: 'Do Foro',\n conteudo:\n 'As partes elegem o foro da Comarca de São Paulo, Estado de São Paulo, para dirimir quaisquer dúvidas ou questões oriundas do presente contrato, com renúncia expressa a qualquer outro, por mais privilegiado que seja.',\n },\n ],\n \n observacoes:\n 'Este contrato substitui e cancela todos os acordos anteriores, sejam verbais ou escritos, entre as partes. Qualquer alteração deverá ser feita por escrito e assinada por ambas as partes.',\n};\n","import { RefObject } from 'react';\n\n/**\n * Opções para o hook de impressão de contratos\n */\nexport interface UsePrintContractOptions {\n /** Callback chamado antes de iniciar a impressão */\n onPrintStart?: () => void;\n /** Callback chamado após impressão bem-sucedida */\n onPrintSuccess?: () => void;\n /** Callback chamado em caso de erro */\n onPrintError?: (error: Error) => void;\n /** Callback chamado antes de iniciar download do PDF */\n onDownloadStart?: () => void;\n /** Callback chamado após download bem-sucedido */\n onDownloadSuccess?: () => void;\n /** Callback chamado em caso de erro no download */\n onDownloadError?: (error: Error) => void;\n}\n\n/**\n * Hook para gerenciar impressão e download de contratos\n * \n * @example\n * ```tsx\n * const printRef = useRef<HTMLDivElement>(null);\n * const { printContract, downloadPDF } = usePrintContract(printRef, 'FEE-2024-001', {\n * onPrintSuccess: () => toast.success('Impresso!'),\n * onDownloadSuccess: () => toast.success('PDF gerado!'),\n * });\n * ```\n */\nexport function usePrintContract(\n contentRef: RefObject<HTMLElement | null>,\n contractNumber?: string,\n options: UsePrintContractOptions = {}\n) {\n const {\n onPrintStart,\n onPrintSuccess,\n onPrintError,\n onDownloadStart,\n onDownloadSuccess,\n onDownloadError,\n } = options;\n\n /**\n * Imprime o contrato abrindo em nova janela\n */\n const printContract = () => {\n try {\n const content = contentRef.current;\n if (!content) {\n throw new Error('Ref do conteúdo não está disponível');\n }\n\n onPrintStart?.();\n\n const printWindow = window.open('', '_blank');\n if (!printWindow) {\n throw new Error('Não foi possível abrir janela de impressão');\n }\n\n const title = contractNumber \n ? `Contrato-${contractNumber}` \n : 'Contrato';\n\n printWindow.document.write(`\n <!DOCTYPE html>\n <html>\n <head>\n <title>${title}</title>\n <meta charset=\"utf-8\">\n <style>\n @page {\n size: A4;\n margin: 10mm;\n }\n \n body {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 12pt;\n line-height: 1.6;\n color: #000;\n }\n \n .container {\n padding: 10mm;\n }\n \n /* Evitar quebras de página inadequadas */\n .avoid-break {\n page-break-inside: avoid !important;\n }\n \n /* Forçar quebra de página */\n .page-break {\n page-break-before: always !important;\n }\n \n /* Ocultar elementos com classe no-print */\n .no-print {\n display: none !important;\n }\n \n /* Garantir que cores sejam preservadas */\n * {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n }\n </style>\n </head>\n <body>\n <div class=\"container\">\n ${content.innerHTML}\n </div>\n </body>\n </html>\n `);\n\n printWindow.document.close();\n \n printWindow.onload = () => {\n setTimeout(() => {\n printWindow.print();\n printWindow.close();\n onPrintSuccess?.();\n }, 250);\n };\n } catch (error) {\n onPrintError?.(error as Error);\n console.error('Erro ao imprimir contrato:', error);\n }\n };\n\n /**\n * Gera PDF do contrato\n * \n * Nota: Esta é uma implementação simulada. Para geração real de PDF,\n * integre com bibliotecas como jsPDF, html2pdf.js, ou envie para API backend.\n * \n * @example Integração com html2pdf.js\n * ```tsx\n * import html2pdf from 'html2pdf.js';\n * \n * const downloadPDF = () => {\n * const element = contentRef.current;\n * const opt = {\n * margin: 10,\n * filename: `contrato-${contractNumber}.pdf`,\n * image: { type: 'jpeg', quality: 0.98 },\n * html2canvas: { scale: 2 },\n * jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }\n * };\n * html2pdf().from(element).set(opt).save();\n * };\n * ```\n */\n const downloadPDF = () => {\n try {\n onDownloadStart?.();\n \n // Implementação simulada\n // Aqui você integraria com jsPDF, html2pdf.js ou API backend\n setTimeout(() => {\n console.log('PDF gerado (simulado):', {\n contractNumber,\n timestamp: new Date().toISOString(),\n });\n onDownloadSuccess?.();\n }, 1500);\n \n // Exemplo de mensagem para o desenvolvedor\n console.info(\n 'usePrintContract: downloadPDF é uma implementação simulada. ' +\n 'Para gerar PDFs reais, integre com html2pdf.js ou jsPDF. ' +\n 'Veja a documentação do hook para exemplos.'\n );\n } catch (error) {\n onDownloadError?.(error as Error);\n console.error('Erro ao gerar PDF:', error);\n }\n };\n\n return {\n /** Imprime o contrato em nova janela */\n printContract,\n /** Gera e baixa PDF do contrato (implementação simulada) */\n downloadPDF,\n };\n}\n","import * as React from 'react';\nimport { Printer, Download, Eye } from 'lucide-react';\nimport { Button } from './button';\nimport { Card, CardContent, CardHeader, CardTitle } from './card';\nimport { ContractTemplate, DadosContrato } from '../print-templates/ContractTemplate';\nimport { usePrintContract } from './use-print-contract';\nimport { cn } from './utils';\n\nexport interface ContractPrintProps {\n /** Dados do contrato */\n data: DadosContrato;\n /** URL ou caminho do logo da empresa */\n logo?: string;\n /** Mostrar barra de ações (imprimir/download) */\n showActions?: boolean;\n /** Mostrar informações resumidas do contrato */\n showSummary?: boolean;\n /** Mostrar seção de serviços */\n showServices?: boolean;\n /** Mostrar informações sobre o template */\n showInfo?: boolean;\n /** Classe CSS adicional */\n className?: string;\n /** Callbacks de impressão */\n onPrintStart?: () => void;\n onPrintSuccess?: () => void;\n onPrintError?: (error: Error) => void;\n /** Callbacks de download */\n onDownloadStart?: () => void;\n onDownloadSuccess?: () => void;\n onDownloadError?: (error: Error) => void;\n}\n\n/**\n * Componente wrapper completo para exibir e imprimir contratos\n * \n * Inclui:\n * - Preview do contrato\n * - Botões de ação (Imprimir/Download PDF)\n * - Informações resumidas\n * - Todas as funcionalidades prontas\n * \n * @example\n * ```tsx\n * import { ContractPrint, dadosContratoExemplo } from '@iclips/design-system';\n * \n * function MinhaPage() {\n * return (\n * <ContractPrint \n * data={dadosContratoExemplo}\n * logo=\"/logo.png\"\n * showActions\n * showSummary\n * />\n * );\n * }\n * ```\n */\nexport function ContractPrint({\n data,\n logo,\n showActions = true,\n showSummary = true,\n showServices = true,\n showInfo = false,\n className,\n onPrintStart,\n onPrintSuccess,\n onPrintError,\n onDownloadStart,\n onDownloadSuccess,\n onDownloadError,\n}: ContractPrintProps) {\n const printRef = React.useRef<HTMLDivElement>(null);\n \n const { printContract, downloadPDF } = usePrintContract(\n printRef,\n data.numeroContrato,\n {\n onPrintStart,\n onPrintSuccess,\n onPrintError,\n onDownloadStart,\n onDownloadSuccess,\n onDownloadError,\n }\n );\n\n const formatCurrency = (value: number) => {\n return new Intl.NumberFormat('pt-BR', {\n style: 'currency',\n currency: 'BRL',\n }).format(value);\n };\n\n return (\n <div className={cn('space-y-6', className)}>\n {/* Barra de Ações */}\n {showActions && (\n <Card className=\"no-print\">\n <CardHeader>\n <CardTitle className=\"flex items-center justify-between\">\n <span>Ações do Documento</span>\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={downloadPDF}\n className=\"gap-2\"\n >\n <Download className=\"h-4 w-4\" />\n Download PDF\n </Button>\n <Button\n variant=\"default\"\n size=\"sm\"\n onClick={printContract}\n className=\"gap-2\"\n >\n <Printer className=\"h-4 w-4\" />\n Imprimir\n </Button>\n </div>\n </CardTitle>\n </CardHeader>\n \n {showSummary && (\n <CardContent>\n <div className=\"grid grid-cols-3 gap-4 text-sm\">\n <div>\n <p className=\"text-muted-foreground mb-1\">Nº do Contrato</p>\n <p className=\"font-semibold\">{data.numeroContrato}</p>\n </div>\n <div>\n <p className=\"text-muted-foreground mb-1\">Cliente</p>\n <p className=\"font-semibold\">{data.cliente.nome}</p>\n </div>\n <div>\n <p className=\"text-muted-foreground mb-1\">Valor do Fee</p>\n <p className=\"font-semibold\">\n {formatCurrency(data.valorFee)}\n </p>\n </div>\n </div>\n </CardContent>\n )}\n </Card>\n )}\n\n {/* Preview do Contrato */}\n <div className=\"bg-white rounded-lg shadow-sm p-8\">\n <div ref={printRef}>\n <ContractTemplate\n data={data}\n showPreview={true}\n logo={logo}\n showServices={showServices}\n />\n </div>\n </div>\n\n {/* Informações Adicionais */}\n {showInfo && (\n <Card className=\"no-print\">\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Eye className=\"h-5 w-5\" />\n Sobre este Template\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2 text-sm text-muted-foreground\">\n <p>\n ✅ <strong>Design System:</strong> Utiliza a paleta de cores e\n tipografia do iClips\n </p>\n <p>\n ✅ <strong>Impressão Otimizada:</strong> Layout preparado para\n impressão em A4\n </p>\n <p>\n ✅ <strong>Componentes Reutilizáveis:</strong> PrintHeader,\n PrintFooter, PrintTable, PrintSignature\n </p>\n <p>\n ✅ <strong>Quebras de Página:</strong> Configuradas\n automaticamente para evitar cortes\n </p>\n <p>\n ✅ <strong>Profissional:</strong> Layout clean e adequado para\n documentos legais\n </p>\n </div>\n </CardContent>\n </Card>\n )}\n </div>\n );\n}\n\n/**\n * Componente simplificado apenas com o preview do contrato\n * Útil quando você quer construir sua própria UI de ações\n * \n * @example\n * ```tsx\n * import { ContractPrintPreview, dadosContratoExemplo } from '@iclips/design-system';\n * \n * function MinhaPage() {\n * const printRef = useRef<HTMLDivElement>(null);\n * \n * return (\n * <div>\n * <MeusPropriosBotoes printRef={printRef} />\n * <ContractPrintPreview \n * ref={printRef}\n * data={dadosContratoExemplo}\n * />\n * </div>\n * );\n * }\n * ```\n */\nexport const ContractPrintPreview = React.forwardRef<\n HTMLDivElement,\n {\n data: DadosContrato;\n logo?: string;\n showServices?: boolean;\n className?: string;\n }\n>(({ data, logo, showServices = true, className }, ref) => {\n return (\n <div className={cn('bg-white rounded-lg shadow-sm p-8', className)} ref={ref}>\n <ContractTemplate\n data={data}\n showPreview={true}\n logo={logo}\n showServices={showServices}\n />\n </div>\n );\n});\n\nContractPrintPreview.displayName = 'ContractPrintPreview';\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { cn } from \"./utils\";\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: React.ComponentProps<typeof DayPicker>) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row gap-2\",\n month: \"flex flex-col gap-4\",\n caption: \"flex justify-center pt-1 relative items-center w-full\",\n caption_label: \"text-sm font-medium\",\n nav: \"flex items-center gap-1\",\n nav_button: cn(\n \"size-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-x-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: cn(\n \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md\",\n props.mode === \"range\"\n ? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\n : \"[&:has([aria-selected])]:rounded-md\",\n ),\n day: cn(\n \"size-8 p-0 font-normal aria-selected:opacity-100\",\n ),\n day_range_start:\n \"day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground\",\n day_range_end:\n \"day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground aria-selected:text-muted-foreground\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation, ...props }) => {\n const Icon = orientation === \"left\" ? ChevronLeft : ChevronRight;\n return <Icon className=\"size-4\" {...props} />;\n },\n }}\n {...props}\n />\n );\n}\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\";\n\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"./utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\");\n }\n\n return context;\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n}) {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nfunction ChartTooltipContent({\n active,\n payload = [],\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n payload?: any[];\n label?: string;\n }) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item: any, index: number) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\",\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n hideIcon?: boolean;\n nameKey?: string;\n payload?: any[];\n verticalAlign?: \"top\" | \"bottom\";\n }) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload.map((item: any) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\",\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <Check className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"./utils\";\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nconst PopoverTrigger = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Trigger>\n>((props, ref) => {\n return <PopoverPrimitive.Trigger ref={ref} data-slot=\"popover-trigger\" {...props} />;\n});\nPopoverTrigger.displayName = PopoverPrimitive.Trigger.displayName;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n});\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nconst PopoverAnchor = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Anchor>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Anchor>\n>((props, ref) => {\n return <PopoverPrimitive.Anchor ref={ref} data-slot=\"popover-anchor\" {...props} />;\n});\nPopoverAnchor.displayName = PopoverPrimitive.Anchor.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\n\nimport { cn } from \"./utils\";\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { HexColorPicker } from \"react-colorful\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Label } from \"./label\";\nimport { cn } from \"./utils\";\n\ninterface ColorPickerProps {\n value?: string;\n onChange?: (color: string) => void;\n label?: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport function ColorPicker({\n value = \"#7F26BF\",\n onChange,\n label,\n className,\n disabled = false,\n}: ColorPickerProps) {\n const [color, setColor] = useState(value);\n const [open, setOpen] = useState(false);\n\n React.useEffect(() => {\n setColor(value);\n }, [value]);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n onChange?.(newColor);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let inputValue = e.target.value;\n \n // Remove # if exists\n inputValue = inputValue.replace(\"#\", \"\");\n \n // Only allow valid hex characters\n inputValue = inputValue.replace(/[^0-9A-Fa-f]/g, \"\");\n \n // Limit to 6 characters\n if (inputValue.length > 6) {\n inputValue = inputValue.slice(0, 6);\n }\n \n const newColor = \"#\" + inputValue;\n setColor(newColor);\n \n // Only call onChange if we have a complete hex color\n if (inputValue.length === 6) {\n onChange?.(newColor);\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && <Label>{label}</Label>}\n \n <div className=\"flex gap-2\">\n {/* Color Preview Button */}\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"w-12 h-10 p-0 border-2\"\n style={{ backgroundColor: color }}\n disabled={disabled}\n aria-label=\"Selecionar cor\"\n >\n <span className=\"sr-only\">Selecionar cor</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-64 p-3\" align=\"start\">\n <div className=\"space-y-3\">\n <HexColorPicker \n color={color} \n onChange={handleColorChange}\n style={{ width: \"100%\" }}\n />\n \n <div className=\"space-y-2\">\n <Label className=\"text-xs\">Código Hexadecimal</Label>\n <div className=\"flex gap-2\">\n <div className=\"relative flex-1\">\n <span className=\"absolute left-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground\">\n #\n </span>\n <Input\n value={color.replace(\"#\", \"\").toUpperCase()}\n onChange={handleInputChange}\n className=\"pl-7 font-mono text-sm\"\n placeholder=\"7F26BF\"\n maxLength={6}\n />\n </div>\n <div \n className=\"w-10 h-10 rounded border-2\"\n style={{ backgroundColor: color }}\n />\n </div>\n </div>\n\n {/* Preset Colors */}\n <div className=\"space-y-2\">\n <Label className=\"text-xs\">Cores Rápidas</Label>\n <div className=\"grid grid-cols-8 gap-1\">\n {[\n \"#7F26BF\", \"#5B158C\", \"#420F66\", // Purple\n \"#0086E6\", \"#0053A6\", \"#003066\", // Blue\n \"#24B347\", \"#007F2A\", \"#004D19\", // Green\n \"#FAB325\", \"#E6960B\", \"#CC7C04\", // Yellow\n \"#F26924\", \"#E64D0B\", \"#BF3000\", // Orange\n \"#F22435\", \"#CC0A1A\", \"#99000D\", // Red\n \"#000000\", \"#697280\", \"#C5CDD9\", \"#FFFFFF\", // Grays\n ].map((presetColor) => (\n <button\n key={presetColor}\n type=\"button\"\n className={cn(\n \"w-6 h-6 rounded border transition-all hover:scale-110\",\n color.toLowerCase() === presetColor.toLowerCase()\n ? \"border-2 border-primary ring-2 ring-primary/20\"\n : \"border-border\"\n )}\n style={{ backgroundColor: presetColor }}\n onClick={() => handleColorChange(presetColor)}\n title={presetColor}\n />\n ))}\n </div>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Text Input */}\n <div className=\"relative flex-1\">\n <span className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\n #\n </span>\n <Input\n value={color.replace(\"#\", \"\").toUpperCase()}\n onChange={handleInputChange}\n className=\"pl-8 font-mono\"\n placeholder=\"7F26BF\"\n disabled={disabled}\n maxLength={6}\n />\n </div>\n </div>\n </div>\n );\n}\n\n// Simplified version without label for inline use\nexport function ColorPickerInline({\n value = \"#7F26BF\",\n onChange,\n className,\n disabled = false,\n}: Omit<ColorPickerProps, \"label\">) {\n return (\n <ColorPicker\n value={value}\n onChange={onChange}\n className={className}\n disabled={disabled}\n />\n );\n}\n","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n );\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n );\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Input } from \"./input\";\nimport { Label } from \"./label\";\nimport { cn } from \"./utils\";\n\nexport interface TimePickerProps {\n date?: Date;\n onChange?: (date: Date | undefined) => void;\n label?: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport function TimePicker({\n date,\n onChange,\n label,\n className,\n disabled = false,\n}: TimePickerProps) {\n const [hours, setHours] = React.useState<string>(\n date ? String(date.getHours()).padStart(2, \"0\") : \"00\"\n );\n const [minutes, setMinutes] = React.useState<string>(\n date ? String(date.getMinutes()).padStart(2, \"0\") : \"00\"\n );\n\n React.useEffect(() => {\n if (date) {\n setHours(String(date.getHours()).padStart(2, \"0\"));\n setMinutes(String(date.getMinutes()).padStart(2, \"0\"));\n }\n }, [date]);\n\n const handleHoursChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let value = e.target.value.replace(/\\D/g, \"\");\n \n if (value.length > 2) {\n value = value.slice(0, 2);\n }\n \n const numValue = parseInt(value) || 0;\n if (numValue > 23) {\n value = \"23\";\n }\n \n setHours(value);\n \n if (value.length === 2) {\n updateDateTime(parseInt(value), parseInt(minutes));\n }\n };\n\n const handleMinutesChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let value = e.target.value.replace(/\\D/g, \"\");\n \n if (value.length > 2) {\n value = value.slice(0, 2);\n }\n \n const numValue = parseInt(value) || 0;\n if (numValue > 59) {\n value = \"59\";\n }\n \n setMinutes(value);\n \n if (value.length === 2) {\n updateDateTime(parseInt(hours), parseInt(value));\n }\n };\n\n const handleHoursBlur = () => {\n const paddedHours = hours.padStart(2, \"0\");\n setHours(paddedHours);\n updateDateTime(parseInt(paddedHours), parseInt(minutes));\n };\n\n const handleMinutesBlur = () => {\n const paddedMinutes = minutes.padStart(2, \"0\");\n setMinutes(paddedMinutes);\n updateDateTime(parseInt(hours), parseInt(paddedMinutes));\n };\n\n const updateDateTime = (h: number, m: number) => {\n const newDate = date ? new Date(date) : new Date();\n newDate.setHours(h);\n newDate.setMinutes(m);\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n onChange?.(newDate);\n };\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && <Label>{label}</Label>}\n <div className=\"flex items-center gap-2\">\n <Input\n type=\"text\"\n value={hours}\n onChange={handleHoursChange}\n onBlur={handleHoursBlur}\n placeholder=\"00\"\n className=\"w-16 text-center font-mono\"\n maxLength={2}\n disabled={disabled}\n aria-label=\"Horas\"\n />\n <span className=\"text-muted-foreground font-medium\">:</span>\n <Input\n type=\"text\"\n value={minutes}\n onChange={handleMinutesChange}\n onBlur={handleMinutesBlur}\n placeholder=\"00\"\n className=\"w-16 text-center font-mono\"\n maxLength={2}\n disabled={disabled}\n aria-label=\"Minutos\"\n />\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport { Calendar as CalendarIcon } from \"lucide-react\";\nimport { Calendar } from \"./calendar\";\nimport { TimePicker } from \"./time-picker\";\nimport { Button } from \"./button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { Label } from \"./label\";\nimport { cn } from \"./utils\";\n\nexport interface DateTimePickerProps {\n date?: Date;\n onChange?: (date: Date | undefined) => void;\n label?: string;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport function DateTimePicker({\n date,\n onChange,\n label,\n placeholder = \"Selecione data e hora\",\n className,\n disabled = false,\n}: DateTimePickerProps) {\n const [open, setOpen] = React.useState(false);\n const [selectedDate, setSelectedDate] = React.useState<Date | undefined>(date);\n\n React.useEffect(() => {\n setSelectedDate(date);\n }, [date]);\n\n const handleDateSelect = (newDate: Date | undefined) => {\n if (newDate) {\n const updated = new Date(newDate);\n if (selectedDate) {\n updated.setHours(selectedDate.getHours());\n updated.setMinutes(selectedDate.getMinutes());\n }\n setSelectedDate(updated);\n } else {\n setSelectedDate(undefined);\n }\n };\n\n const handleTimeChange = (newDate: Date | undefined) => {\n setSelectedDate(newDate);\n };\n\n const handleConfirm = () => {\n onChange?.(selectedDate);\n setOpen(false);\n };\n\n const handleCancel = () => {\n setSelectedDate(date);\n setOpen(false);\n };\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && <Label>{label}</Label>}\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !selectedDate && \"text-muted-foreground\"\n )}\n disabled={disabled}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {selectedDate ? (\n format(selectedDate, \"dd/MM/yyyy HH:mm\")\n ) : (\n <span>{placeholder}</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"p-3 space-y-3\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n initialFocus\n />\n \n <div className=\"border-t pt-3\">\n <TimePicker\n date={selectedDate}\n onChange={handleTimeChange}\n label=\"Horário\"\n />\n </div>\n\n <div className=\"flex gap-2 pt-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handleCancel}\n className=\"flex-1\"\n >\n Cancelar\n </Button>\n <Button\n size=\"sm\"\n onClick={handleConfirm}\n className=\"flex-1\"\n >\n Confirmar\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"./utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator-root\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport { Calendar as CalendarIcon } from \"lucide-react\";\nimport { DateRange } from \"react-day-picker\";\nimport { Calendar } from \"./calendar\";\nimport { TimePicker } from \"./time-picker\";\nimport { Button } from \"./button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { Label } from \"./label\";\nimport { Separator } from \"./separator\";\nimport { cn } from \"./utils\";\n\nexport interface DateRangePickerProps {\n dateRange?: DateRange;\n onChange?: (range: DateRange | undefined) => void;\n label?: string;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n withTime?: boolean;\n}\n\nexport function DateRangePicker({\n dateRange,\n onChange,\n label,\n placeholder = \"Selecione o período\",\n className,\n disabled = false,\n withTime = false,\n}: DateRangePickerProps) {\n const [open, setOpen] = React.useState(false);\n const [range, setRange] = React.useState<DateRange | undefined>(dateRange);\n\n React.useEffect(() => {\n setRange(dateRange);\n }, [dateRange]);\n\n const handleRangeSelect = (newRange: DateRange | undefined) => {\n if (newRange?.from && range?.from) {\n // Preserve time when date changes\n const updatedFrom = new Date(newRange.from);\n updatedFrom.setHours(range.from.getHours());\n updatedFrom.setMinutes(range.from.getMinutes());\n \n let updatedTo = newRange.to ? new Date(newRange.to) : undefined;\n if (updatedTo && range?.to) {\n updatedTo.setHours(range.to.getHours());\n updatedTo.setMinutes(range.to.getMinutes());\n }\n \n setRange({ from: updatedFrom, to: updatedTo });\n } else {\n setRange(newRange);\n }\n };\n\n const handleStartTimeChange = (newDate: Date | undefined) => {\n if (newDate && range?.from) {\n setRange({\n ...range,\n from: newDate,\n });\n }\n };\n\n const handleEndTimeChange = (newDate: Date | undefined) => {\n if (newDate && range?.to) {\n setRange({\n ...range,\n to: newDate,\n });\n }\n };\n\n const handleConfirm = () => {\n onChange?.(range);\n setOpen(false);\n };\n\n const handleCancel = () => {\n setRange(dateRange);\n setOpen(false);\n };\n\n const formatRangeDisplay = () => {\n if (!range?.from) {\n return placeholder;\n }\n\n const fromFormat = withTime ? \"dd/MM/yyyy HH:mm\" : \"dd/MM/yyyy\";\n const toFormat = withTime ? \"dd/MM/yyyy HH:mm\" : \"dd/MM/yyyy\";\n\n if (range.to) {\n return `${format(range.from, fromFormat)} - ${format(range.to, toFormat)}`;\n }\n\n return format(range.from, fromFormat);\n };\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && <Label>{label}</Label>}\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !range && \"text-muted-foreground\"\n )}\n disabled={disabled}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n <span>{formatRangeDisplay()}</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"p-3 space-y-3\">\n <Calendar\n mode=\"range\"\n selected={range}\n onSelect={handleRangeSelect}\n numberOfMonths={2}\n initialFocus\n />\n \n {withTime && range?.from && (\n <>\n <Separator />\n <div className=\"space-y-3\">\n <TimePicker\n date={range.from}\n onChange={handleStartTimeChange}\n label=\"Hora de Início\"\n />\n \n {range.to && (\n <TimePicker\n date={range.to}\n onChange={handleEndTimeChange}\n label=\"Hora de Término\"\n />\n )}\n </div>\n </>\n )}\n\n <div className=\"flex gap-2 pt-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handleCancel}\n className=\"flex-1\"\n >\n Cancelar\n </Button>\n <Button\n size=\"sm\"\n onClick={handleConfirm}\n className=\"flex-1\"\n >\n Confirmar\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\n\nimport { cn } from \"./utils\";\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"./card\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"./avatar\";\nimport { Badge } from \"./badge\";\nimport { Button } from \"./button\";\nimport { Progress } from \"./progress\";\nimport { cn } from \"./utils\";\nimport {\n Calendar,\n MessageSquare,\n Paperclip,\n CheckSquare,\n MoreVertical,\n AlertCircle,\n} from \"lucide-react\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"./dropdown-menu\";\n\nexport interface KanbanCardTag {\n id: string;\n label: string;\n color?: string;\n}\n\nexport interface KanbanCardAssignee {\n id: string;\n name: string;\n avatar?: string;\n initials?: string;\n}\n\nexport interface KanbanCardProps {\n id: string;\n title: string;\n description?: string;\n coverImage?: string;\n thumbnailImage?: string;\n tags?: KanbanCardTag[];\n assignees?: KanbanCardAssignee[];\n priority?: \"low\" | \"medium\" | \"high\" | \"urgent\";\n dueDate?: Date;\n comments?: number;\n attachments?: number;\n checklist?: {\n completed: number;\n total: number;\n };\n progress?: number;\n status?: string;\n variant?: \"default\" | \"compact\" | \"detailed\";\n isDragging?: boolean;\n onClick?: () => void;\n onEdit?: () => void;\n onDelete?: () => void;\n onDuplicate?: () => void;\n className?: string;\n}\n\nconst priorityConfig = {\n low: {\n color: \"bg-blue-500\",\n label: \"Baixa\",\n textColor: \"text-blue-700\",\n bgColor: \"bg-blue-50 dark:bg-blue-950/20\",\n },\n medium: {\n color: \"bg-yellow-500\",\n label: \"Média\",\n textColor: \"text-yellow-700\",\n bgColor: \"bg-yellow-50 dark:bg-yellow-950/20\",\n },\n high: {\n color: \"bg-orange-500\",\n label: \"Alta\",\n textColor: \"text-orange-700\",\n bgColor: \"bg-orange-50 dark:bg-orange-950/20\",\n },\n urgent: {\n color: \"bg-red-500\",\n label: \"Urgente\",\n textColor: \"text-red-700\",\n bgColor: \"bg-red-50 dark:bg-red-950/20\",\n },\n};\n\nexport const KanbanCard = React.forwardRef<HTMLDivElement, KanbanCardProps>(\n (\n {\n title,\n description,\n coverImage,\n thumbnailImage,\n tags = [],\n assignees = [],\n priority,\n dueDate,\n comments,\n attachments,\n checklist,\n progress,\n status,\n variant = \"default\",\n isDragging = false,\n onClick,\n onEdit,\n onDelete,\n onDuplicate,\n className,\n },\n ref\n ) => {\n const isOverdue = dueDate && new Date(dueDate) < new Date();\n const priorityStyle = priority ? priorityConfig[priority] : null;\n\n const formatDate = (date: Date) => {\n const day = date.getDate().toString().padStart(2, \"0\");\n const month = (date.getMonth() + 1).toString().padStart(2, \"0\");\n return `${day}/${month}`;\n };\n\n const handleCardClick = (e: React.MouseEvent) => {\n // Don't trigger onClick if clicking on buttons or dropdown\n if (\n (e.target as HTMLElement).closest(\"button\") ||\n (e.target as HTMLElement).closest(\"[role='menuitem']\")\n ) {\n return;\n }\n onClick?.();\n };\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"group cursor-grab active:cursor-grabbing transition-all duration-200\",\n \"hover:shadow-lg hover:scale-[1.02]\",\n isDragging && \"opacity-50 rotate-2 scale-105 shadow-2xl cursor-grabbing\",\n priority && \"border-l-4\",\n priority === \"low\" && \"border-l-blue-500\",\n priority === \"medium\" && \"border-l-yellow-500\",\n priority === \"high\" && \"border-l-orange-500\",\n priority === \"urgent\" && \"border-l-red-500\",\n variant === \"compact\" && \"hover:scale-[1.01]\",\n className\n )}\n onClick={handleCardClick}\n >\n {/* Cover Image */}\n {coverImage && variant !== \"compact\" && (\n <div className=\"relative w-full h-40 overflow-hidden rounded-t-lg\">\n <img\n src={coverImage}\n alt={title}\n className=\"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n {priority && (\n <div className=\"absolute top-2 right-2\">\n <Badge\n variant=\"secondary\"\n className={cn(\"shadow-sm\", priorityStyle?.bgColor)}\n >\n <div\n className={cn(\"w-2 h-2 rounded-full mr-1\", priorityStyle?.color)}\n />\n {priorityStyle?.label}\n </Badge>\n </div>\n )}\n </div>\n )}\n\n <CardHeader className={cn(variant === \"compact\" ? \"p-3 pb-2\" : \"p-4 pb-3\")}>\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex-1 min-w-0\">\n {/* Thumbnail + Title */}\n <div className=\"flex items-start gap-2\">\n {thumbnailImage && !coverImage && (\n <img\n src={thumbnailImage}\n alt={title}\n className=\"w-10 h-10 rounded object-cover flex-shrink-0\"\n />\n )}\n <div className=\"flex-1 min-w-0\">\n <CardTitle\n className={cn(\n \"line-clamp-2\",\n variant === \"compact\" ? \"text-sm\" : \"text-base\"\n )}\n >\n {title}\n </CardTitle>\n {status && variant === \"detailed\" && (\n <Badge variant=\"outline\" className=\"mt-1 text-xs\">\n {status}\n </Badge>\n )}\n </div>\n </div>\n\n {/* Description */}\n {description && variant !== \"compact\" && (\n <CardDescription className=\"mt-2 line-clamp-2 text-xs\">\n {description}\n </CardDescription>\n )}\n </div>\n\n {/* Actions Menu */}\n {(onEdit || onDelete || onDuplicate) && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0\"\n >\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {onEdit && (\n <DropdownMenuItem onClick={onEdit}>\n Editar\n </DropdownMenuItem>\n )}\n {onDuplicate && (\n <DropdownMenuItem onClick={onDuplicate}>\n Duplicar\n </DropdownMenuItem>\n )}\n {onDelete && (\n <DropdownMenuItem\n onClick={onDelete}\n className=\"text-destructive\"\n >\n Excluir\n </DropdownMenuItem>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n\n {/* Tags */}\n {tags.length > 0 && (\n <div className=\"flex flex-wrap gap-1 mt-2\">\n {tags.slice(0, variant === \"compact\" ? 2 : 3).map((tag) => (\n <Badge\n key={tag.id}\n variant=\"secondary\"\n className=\"text-xs\"\n style={\n tag.color\n ? {\n backgroundColor: tag.color + \"20\",\n color: tag.color,\n borderColor: tag.color + \"40\",\n }\n : undefined\n }\n >\n {tag.label}\n </Badge>\n ))}\n {tags.length > (variant === \"compact\" ? 2 : 3) && (\n <Badge variant=\"secondary\" className=\"text-xs\">\n +{tags.length - (variant === \"compact\" ? 2 : 3)}\n </Badge>\n )}\n </div>\n )}\n\n {/* Priority (without cover image) */}\n {priority && !coverImage && variant === \"detailed\" && (\n <Badge\n variant=\"secondary\"\n className={cn(\"mt-2 w-fit text-xs\", priorityStyle?.bgColor)}\n >\n <div\n className={cn(\"w-2 h-2 rounded-full mr-1\", priorityStyle?.color)}\n />\n {priorityStyle?.label}\n </Badge>\n )}\n </CardHeader>\n\n {/* Progress Bar */}\n {progress !== undefined && variant !== \"compact\" && (\n <CardContent className=\"px-4 pb-3 pt-0\">\n <div className=\"space-y-1\">\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>Progresso</span>\n <span>{progress}%</span>\n </div>\n <Progress value={progress} className=\"h-1.5\" />\n </div>\n </CardContent>\n )}\n\n <CardFooter\n className={cn(\n \"flex items-center justify-between gap-2\",\n variant === \"compact\" ? \"px-3 pb-3 pt-1\" : \"px-4 pb-4 pt-2\"\n )}\n >\n {/* Metadata */}\n <div className=\"flex items-center gap-3 text-xs text-muted-foreground flex-wrap\">\n {/* Due Date */}\n {dueDate && (\n <div\n className={cn(\n \"flex items-center gap-1\",\n isOverdue && \"text-destructive font-medium\"\n )}\n >\n {isOverdue && <AlertCircle className=\"h-3 w-3\" />}\n <Calendar className=\"h-3 w-3\" />\n <span>{formatDate(dueDate)}</span>\n </div>\n )}\n\n {/* Checklist */}\n {checklist && (\n <div className=\"flex items-center gap-1\">\n <CheckSquare className=\"h-3 w-3\" />\n <span>\n {checklist.completed}/{checklist.total}\n </span>\n </div>\n )}\n\n {/* Comments */}\n {comments !== undefined && comments > 0 && (\n <div className=\"flex items-center gap-1\">\n <MessageSquare className=\"h-3 w-3\" />\n <span>{comments}</span>\n </div>\n )}\n\n {/* Attachments */}\n {attachments !== undefined && attachments > 0 && (\n <div className=\"flex items-center gap-1\">\n <Paperclip className=\"h-3 w-3\" />\n <span>{attachments}</span>\n </div>\n )}\n </div>\n\n {/* Assignees */}\n {assignees.length > 0 && (\n <div className=\"flex -space-x-2\">\n {assignees.slice(0, 3).map((assignee) => (\n <Avatar key={assignee.id} className=\"h-6 w-6 border-2 border-background\">\n {assignee.avatar && <AvatarImage src={assignee.avatar} alt={assignee.name} />}\n <AvatarFallback className=\"text-xs\">\n {assignee.initials || assignee.name.slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n ))}\n {assignees.length > 3 && (\n <div className=\"h-6 w-6 rounded-full border-2 border-background bg-muted flex items-center justify-center text-xs\">\n +{assignees.length - 3}\n </div>\n )}\n </div>\n )}\n </CardFooter>\n </Card>\n );\n }\n);\n\nKanbanCard.displayName = \"KanbanCard\";\n\nexport default KanbanCard;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <DialogPrimitive.Overlay\n ref={ref}\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n});\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nfunction DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\">\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\";\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\nimport { cn } from \"./utils\";\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nconst DrawerTrigger = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Trigger>\n>(({ ...props }, ref) => {\n return <DrawerPrimitive.Trigger ref={ref} data-slot=\"drawer-trigger\" {...props} />;\n});\nDrawerTrigger.displayName = \"DrawerTrigger\";\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nconst DrawerClose = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Close>\n>(({ ...props }, ref) => {\n return <DrawerPrimitive.Close ref={ref} data-slot=\"drawer-close\" {...props} />;\n});\nDrawerClose.displayName = \"DrawerClose\";\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <DrawerPrimitive.Overlay\n ref={ref}\n data-slot=\"drawer-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n});\nDrawerOverlay.displayName = \"DrawerOverlay\";\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n data-slot=\"drawer-content\"\n className={cn(\n \"group/drawer-content bg-background fixed z-50 flex h-auto flex-col\",\n \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b\",\n \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className,\n )}\n {...props}\n >\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n});\nDrawerContent.displayName = \"DrawerContent\";\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\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => {\n return (\n <DrawerPrimitive.Title\n ref={ref}\n data-slot=\"drawer-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n});\nDrawerTitle.displayName = \"DrawerTitle\";\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => {\n return (\n <DrawerPrimitive.Description\n ref={ref}\n data-slot=\"drawer-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n});\nDrawerDescription.displayName = \"DrawerDescription\";\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\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\";\n\nimport { cn } from \"./utils\";\nimport { Label } from \"./label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"./utils\";\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string;\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm bg-input-background transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />;\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />;\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />;\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n );\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </MenubarPortal>\n );\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n );\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />;\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n};\n","import * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className,\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\",\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\",\n \"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n \"absolute top-full left-0 isolate z-50 flex justify-center\",\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n className,\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n","import * as React from \"react\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport { Button, buttonVariants } from \"./button\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 px-2.5 sm:pl-2.5\", className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"hidden sm:block\">Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 px-2.5 sm:pr-2.5\", className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\n\nimport { cn } from \"./utils\";\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"peer h-5 w-5 shrink-0 rounded-full border border-gray-300 bg-white shadow-sm transition-all hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex items-center justify-center\"\n >\n <div className=\"h-2 w-2 rounded-full bg-white\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { GripVerticalIcon } from \"lucide-react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"./utils\";\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-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=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n ChevronUpIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <SheetPrimitive.Overlay\n ref={ref}\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n});\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};","import * 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 { cn } from \"./utils\";\n\ninterface SkeletonProps extends React.ComponentProps<\"div\"> {\n /** Animation variant: pulse (default) or shimmer (premium) */\n variant?: \"pulse\" | \"shimmer\";\n}\n\nfunction Skeleton({ className, variant = \"pulse\", ...props }: SkeletonProps) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\n \"rounded-md\",\n variant === \"shimmer\"\n ? \"skeleton-shimmer\"\n : \"bg-accent animate-pulse\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\nexport type { SkeletonProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"./utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { VariantProps, cva } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { useIsMobile } from \"./use-mobile\";\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Separator } from \"./separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\";\nimport { Skeleton } from \"./skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"./utils\";\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-4 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\",\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","\"use client\";\n\nimport { useTheme } from \"next-themes\";\nimport { Toaster as Sonner, ToasterProps } from \"sonner\";\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"./utils\";\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface TableProps extends React.ComponentProps<\"table\"> {}\nexport interface TableHeaderProps extends React.ComponentProps<\"thead\"> {}\nexport interface TableBodyProps extends React.ComponentProps<\"tbody\"> {}\nexport interface TableFooterProps extends React.ComponentProps<\"tfoot\"> {}\nexport interface TableRowProps extends React.ComponentProps<\"tr\"> {}\nexport interface TableHeadProps extends React.ComponentProps<\"th\"> {}\nexport interface TableCellProps extends React.ComponentProps<\"td\"> {}\nexport interface TableCaptionProps extends React.ComponentProps<\"caption\"> {}\n\n// ============================================================================\n// COMPONENTS\n// ============================================================================\n\nconst Table = React.forwardRef<HTMLTableElement, TableProps>(\n ({ className, ...props }, ref) => {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n ref={ref}\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n );\n }\n);\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ className, ...props }, ref) => {\n return (\n <thead\n ref={ref}\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n );\n }\n);\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ className, ...props }, ref) => {\n return (\n <tbody\n ref={ref}\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n }\n);\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<HTMLTableSectionElement, TableFooterProps>(\n ({ className, ...props }, ref) => {\n return (\n <tfoot\n ref={ref}\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n }\n);\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n TableRowProps\n>(({ className, ...props }, ref) => {\n return (\n <tr\n ref={ref}\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className,\n )}\n {...props}\n />\n );\n});\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, ...props }, ref) => {\n return (\n <th\n ref={ref}\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium\",\n \"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n }\n);\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, ...props }, ref) => {\n return (\n <td\n ref={ref}\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle\",\n \"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n }\n);\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<HTMLTableCaptionElement, TableCaptionProps>(\n ({ className, ...props }, ref) => {\n return (\n <caption\n ref={ref}\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n }\n);\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};","\"use client\";\n\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./select\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/**\n * Labels for internationalization\n */\nexport interface TablePaginationLabels {\n /** \"Anterior\" */\n previous?: string;\n /** \"Próxima\" */\n next?: string;\n /** \"Primeira\" */\n first?: string;\n /** \"Última\" */\n last?: string;\n /** \"Mostrando\" */\n showing?: string;\n /** \"de\" */\n of?: string;\n /** \"resultados\" */\n results?: string;\n /** \"Itens por página\" */\n itemsPerPage?: string;\n /** \"Página\" */\n page?: string;\n}\n\n/**\n * Props for the TablePagination component\n * \n * @example\n * ```tsx\n * // With useTablePagination hook\n * const pagination = useTablePagination(data, { pageSize: 10 });\n * \n * <TablePagination\n * currentPage={pagination.currentPage}\n * totalPages={pagination.totalPages}\n * pageSize={pagination.pageSize}\n * totalItems={pagination.totalItems}\n * onPageChange={pagination.goToPage}\n * onPageSizeChange={pagination.setPageSize}\n * />\n * ```\n */\nexport interface TablePaginationProps {\n /** Current page number (1-indexed) */\n currentPage: number;\n /** Total number of pages */\n totalPages: number;\n /** Current page size */\n pageSize: number;\n /** Total number of items */\n totalItems: number;\n /** Callback when page changes */\n onPageChange: (page: number) => void;\n /** Callback when page size changes */\n onPageSizeChange?: (size: number) => void;\n /** Available page size options */\n pageSizeOptions?: number[];\n /** Maximum number of visible page buttons */\n maxVisiblePages?: number;\n /** Show \"Showing X of Y\" info */\n showInfo?: boolean;\n /** Show page number buttons */\n showPageNumbers?: boolean;\n /** Show page size selector */\n showPageSizeSelector?: boolean;\n /** Show first/last page buttons */\n showFirstLastButtons?: boolean;\n /** Custom labels for i18n */\n labels?: TablePaginationLabels;\n /** Additional className */\n className?: string;\n}\n\n// ============================================================================\n// DEFAULT VALUES\n// ============================================================================\n\nconst defaultLabels: Required<TablePaginationLabels> = {\n previous: \"Anterior\",\n next: \"Próxima\",\n first: \"Primeira\",\n last: \"Última\",\n showing: \"Mostrando\",\n of: \"de\",\n results: \"resultados\",\n itemsPerPage: \"Itens por página\",\n page: \"Página\",\n};\n\nconst defaultPageSizeOptions = [10, 20, 30, 50, 100];\n\n// ============================================================================\n// HELPER FUNCTION\n// ============================================================================\n\n/**\n * Generate array of page numbers with ellipsis\n */\nfunction getPageNumbers(\n currentPage: number,\n totalPages: number,\n maxVisible: number = 5\n): (number | \"ellipsis\")[] {\n if (totalPages <= maxVisible) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: (number | \"ellipsis\")[] = [];\n const halfVisible = Math.floor(maxVisible / 2);\n\n // Always show first page\n pages.push(1);\n\n // Calculate middle range\n let start = Math.max(2, currentPage - halfVisible);\n let end = Math.min(totalPages - 1, currentPage + halfVisible);\n\n // Adjust if near start or end\n if (currentPage <= halfVisible + 1) {\n end = maxVisible - 1;\n } else if (currentPage >= totalPages - halfVisible) {\n start = totalPages - maxVisible + 2;\n }\n\n // Add ellipsis after first page if needed\n if (start > 2) {\n pages.push(\"ellipsis\");\n }\n\n // Add page numbers\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Add ellipsis before last page if needed\n if (end < totalPages - 1) {\n pages.push(\"ellipsis\");\n }\n\n // Always show last page\n if (totalPages > 1) {\n pages.push(totalPages);\n }\n\n return pages;\n}\n\n// ============================================================================\n// MAIN COMPONENT\n// ============================================================================\n\n/**\n * TablePagination Component\n * \n * A complete, ready-to-use pagination component for tables and data grids.\n * Integrates seamlessly with the `useTablePagination` hook.\n * \n * @example\n * ```tsx\n * import { useTablePagination, TablePagination, Table, TableBody, ... } from \"@iclips/ui\";\n * \n * function MyTable({ data }) {\n * const pagination = useTablePagination(data, { pageSize: 10 });\n * \n * return (\n * <>\n * <Table>\n * <TableBody>\n * {pagination.paginatedData.map(item => (\n * <TableRow key={item.id}>...</TableRow>\n * ))}\n * </TableBody>\n * </Table>\n * \n * <TablePagination\n * currentPage={pagination.currentPage}\n * totalPages={pagination.totalPages}\n * pageSize={pagination.pageSize}\n * totalItems={pagination.totalItems}\n * onPageChange={pagination.goToPage}\n * onPageSizeChange={pagination.setPageSize}\n * />\n * </>\n * );\n * }\n * ```\n * \n * @example\n * ```tsx\n * // Minimal usage (without page size selector)\n * <TablePagination\n * currentPage={1}\n * totalPages={10}\n * pageSize={20}\n * totalItems={200}\n * onPageChange={(page) => setCurrentPage(page)}\n * showPageSizeSelector={false}\n * />\n * ```\n */\nexport function TablePagination({\n currentPage,\n totalPages,\n pageSize,\n totalItems,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = defaultPageSizeOptions,\n maxVisiblePages = 5,\n showInfo = true,\n showPageNumbers = true,\n showPageSizeSelector = true,\n showFirstLastButtons = true,\n labels: customLabels,\n className,\n}: TablePaginationProps) {\n const labels = { ...defaultLabels, ...customLabels };\n const pages = getPageNumbers(currentPage, totalPages, maxVisiblePages);\n\n const startItem = (currentPage - 1) * pageSize + 1;\n const endItem = Math.min(currentPage * pageSize, totalItems);\n\n const hasPreviousPage = currentPage > 1;\n const hasNextPage = currentPage < totalPages;\n\n // Don't render if no pages\n if (totalPages === 0) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\",\n className\n )}\n role=\"navigation\"\n aria-label=\"Paginação da tabela\"\n >\n {/* Left side: Info text */}\n {showInfo && (\n <p className=\"text-sm text-muted-foreground order-2 sm:order-1\">\n {labels.showing}{\" \"}\n <span className=\"font-medium text-foreground\">{startItem}</span>\n {\" - \"}\n <span className=\"font-medium text-foreground\">{endItem}</span>\n {\" \"}{labels.of}{\" \"}\n <span className=\"font-medium text-foreground\">{totalItems}</span>\n {\" \"}{labels.results}\n </p>\n )}\n\n {/* Right side: Controls */}\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-4 order-1 sm:order-2\">\n {/* Page size selector */}\n {showPageSizeSelector && onPageSizeChange && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n {labels.itemsPerPage}\n </span>\n <Select\n value={String(pageSize)}\n onValueChange={(value) => onPageSizeChange(Number(value))}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue placeholder={pageSize} />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((option) => (\n <SelectItem key={option} value={String(option)}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n {/* Page info for small screens */}\n <span className=\"text-sm text-muted-foreground sm:hidden\">\n {labels.page} {currentPage} {labels.of} {totalPages}\n </span>\n\n {/* Navigation buttons */}\n <div className=\"flex items-center gap-1\">\n {/* First page button */}\n {showFirstLastButtons && (\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => onPageChange(1)}\n disabled={!hasPreviousPage}\n aria-label={labels.first}\n >\n <ChevronsLeft className=\"h-4 w-4\" />\n </Button>\n )}\n\n {/* Previous button */}\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={!hasPreviousPage}\n aria-label={labels.previous}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n\n {/* Page numbers */}\n {showPageNumbers && (\n <div className=\"hidden sm:flex items-center gap-1\">\n {pages.map((page, index) =>\n page === \"ellipsis\" ? (\n <span\n key={`ellipsis-${index}`}\n className=\"flex items-center justify-center w-8 h-8 text-muted-foreground\"\n aria-hidden\n >\n ...\n </span>\n ) : (\n <Button\n key={page}\n variant={currentPage === page ? \"default\" : \"outline\"}\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => onPageChange(page)}\n aria-label={`${labels.page} ${page}`}\n aria-current={currentPage === page ? \"page\" : undefined}\n >\n {page}\n </Button>\n )\n )}\n </div>\n )}\n\n {/* Next button */}\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={!hasNextPage}\n aria-label={labels.next}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n\n {/* Last page button */}\n {showFirstLastButtons && (\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => onPageChange(totalPages)}\n disabled={!hasNextPage}\n aria-label={labels.last}\n >\n <ChevronsRight className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nTablePagination.displayName = \"TablePagination\";\n\n// ============================================================================\n// EXPORTS\n// ============================================================================\n\nexport { getPageNumbers };\n","/**\n * Utility types for DataTable implementations\n * \n * These types provide standard interfaces for common DataTable patterns\n * like sorting, pagination, column definitions, and selection.\n */\n\n// ============================================================================\n// SORT TYPES\n// ============================================================================\n\n/**\n * Direction of sorting\n */\nexport type SortDirection = \"asc\" | \"desc\" | null;\n\n/**\n * Sort configuration for a table\n * \n * @example\n * ```tsx\n * const [sortConfig, setSortConfig] = useState<SortConfig<User>>({\n * column: \"name\",\n * direction: \"asc\"\n * });\n * ```\n */\nexport interface SortConfig<T extends Record<string, any>> {\n column: keyof T | null;\n direction: SortDirection;\n}\n\n// ============================================================================\n// COLUMN TYPES\n// ============================================================================\n\n/**\n * Column definition for a DataTable\n * \n * @example\n * ```tsx\n * const columns: ColumnDef<User>[] = [\n * {\n * key: \"name\",\n * header: \"Name\",\n * sortable: true,\n * width: \"200px\"\n * },\n * {\n * key: \"email\",\n * header: \"Email\",\n * render: (value, row) => <a href={`mailto:${value}`}>{value}</a>\n * }\n * ];\n * ```\n */\nexport interface ColumnDef<T extends Record<string, any>> {\n /** Key of the data property to display */\n key: keyof T;\n \n /** Header label or React node */\n header: string | React.ReactNode;\n \n /** Whether this column is sortable */\n sortable?: boolean;\n \n /** Column width (CSS value) */\n width?: string | number;\n \n /** Text alignment */\n align?: \"left\" | \"center\" | \"right\";\n \n /** Custom render function for the cell content */\n render?: (value: T[keyof T], row: T, index: number) => React.ReactNode;\n \n /** Additional className for the cell */\n className?: string;\n \n /** Additional className for the header */\n headerClassName?: string;\n}\n\n// ============================================================================\n// PAGINATION TYPES\n// ============================================================================\n\n/**\n * Pagination configuration\n * \n * @example\n * ```tsx\n * const [pagination, setPagination] = useState<PaginationConfig>({\n * currentPage: 1,\n * pageSize: 10,\n * totalItems: 100\n * });\n * ```\n */\nexport interface PaginationConfig {\n /** Current page number (1-indexed) */\n currentPage: number;\n \n /** Number of items per page */\n pageSize: number;\n \n /** Total number of items */\n totalItems: number;\n \n /** Callback when page changes */\n onPageChange?: (page: number) => void;\n \n /** Callback when page size changes */\n onPageSizeChange?: (size: number) => void;\n}\n\n/**\n * Helper to calculate pagination metadata\n */\nexport interface PaginationMetadata {\n totalPages: number;\n startIndex: number;\n endIndex: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n}\n\n// ============================================================================\n// SELECTION TYPES\n// ============================================================================\n\n/**\n * Selection state for table rows\n * \n * @example\n * ```tsx\n * const [selection, setSelection] = useState<SelectionState>({\n * selectedIds: new Set([\"1\", \"2\"]),\n * isAllSelected: false\n * });\n * ```\n */\nexport interface SelectionState {\n /** Set of selected row IDs */\n selectedIds: Set<string | number>;\n \n /** Whether all rows are selected */\n isAllSelected: boolean;\n}\n\n// ============================================================================\n// TABLE STATE TYPES\n// ============================================================================\n\n/**\n * Complete table state with all common features\n * \n * @example\n * ```tsx\n * const [tableState, setTableState] = useState<TableState<User>>({\n * data: users,\n * sort: { column: \"name\", direction: \"asc\" },\n * pagination: { currentPage: 1, pageSize: 10, totalItems: 100 },\n * selection: { selectedIds: new Set(), isAllSelected: false }\n * });\n * ```\n */\nexport interface TableState<T extends Record<string, any>> {\n /** Table data */\n data: T[];\n \n /** Sort configuration */\n sort?: SortConfig<T>;\n \n /** Pagination configuration */\n pagination?: PaginationConfig;\n \n /** Selection state */\n selection?: SelectionState;\n \n /** Loading state */\n isLoading?: boolean;\n \n /** Error state */\n error?: string | null;\n}\n\n// ============================================================================\n// FILTER TYPES\n// ============================================================================\n\n/**\n * Filter operator types\n */\nexport type FilterOperator = \n | \"equals\"\n | \"contains\"\n | \"startsWith\"\n | \"endsWith\"\n | \"greaterThan\"\n | \"lessThan\"\n | \"between\"\n | \"in\";\n\n/**\n * Filter configuration for a column\n * \n * @example\n * ```tsx\n * const filters: FilterConfig<User>[] = [\n * {\n * column: \"status\",\n * operator: \"in\",\n * value: [\"active\", \"pending\"]\n * },\n * {\n * column: \"age\",\n * operator: \"greaterThan\",\n * value: 18\n * }\n * ];\n * ```\n */\nexport interface FilterConfig<T extends Record<string, any>> {\n column: keyof T;\n operator: FilterOperator;\n value: any;\n}\n\n// ============================================================================\n// DRAG & DROP TYPES\n// ============================================================================\n\n/**\n * Configuration for draggable rows\n */\nexport interface DragDropConfig {\n /** Whether drag and drop is enabled */\n enabled: boolean;\n \n /** Callback when a row is dropped */\n onDrop?: (dragIndex: number, dropIndex: number) => void;\n \n /** Custom drag handle component */\n dragHandle?: React.ReactNode;\n}\n\n// ============================================================================\n// ROW EXPANSION TYPES\n// ============================================================================\n\n/**\n * Configuration for expandable rows\n * \n * @example\n * ```tsx\n * const expandConfig: RowExpansionConfig<User> = {\n * enabled: true,\n * expandedRows: new Set([\"1\", \"3\"]),\n * renderExpandedContent: (row) => (\n * <div>Details for {row.name}</div>\n * )\n * };\n * ```\n */\nexport interface RowExpansionConfig<T extends Record<string, any>> {\n /** Whether row expansion is enabled */\n enabled: boolean;\n \n /** Set of expanded row IDs */\n expandedRows?: Set<string | number>;\n \n /** Callback when row expansion changes */\n onExpansionChange?: (rowId: string | number, isExpanded: boolean) => void;\n \n /** Custom content to render when row is expanded */\n renderExpandedContent?: (row: T, index: number) => React.ReactNode;\n}\n\n// ============================================================================\n// UTILITY FUNCTIONS TYPES\n// ============================================================================\n\n/**\n * Sort function type\n */\nexport type SortFunction<T extends Record<string, any>> = (a: T, b: T, config: SortConfig<T>) => number;\n\n/**\n * Filter function type\n */\nexport type FilterFunction<T extends Record<string, any>> = (row: T, filters: FilterConfig<T>[]) => boolean;\n\n/**\n * Helper function to calculate pagination metadata\n */\nexport function calculatePaginationMetadata(\n config: PaginationConfig\n): PaginationMetadata {\n const { currentPage, pageSize, totalItems } = config;\n const totalPages = Math.ceil(totalItems / pageSize);\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = Math.min(startIndex + pageSize, totalItems);\n \n return {\n totalPages,\n startIndex,\n endIndex,\n hasNextPage: currentPage < totalPages,\n hasPreviousPage: currentPage > 1,\n };\n}","\"use client\";\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"./utils\";\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-xl p-[3px] flex\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-card dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-xl border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"./utils\";\n\ninterface UnderlineTabsContextValue {\n value: string;\n onValueChange: (value: string) => void;\n}\n\nconst UnderlineTabsContext = React.createContext<UnderlineTabsContextValue | undefined>(undefined);\n\nfunction useUnderlineTabs() {\n const context = React.useContext(UnderlineTabsContext);\n if (!context) {\n throw new Error(\"UnderlineTabs components must be used within UnderlineTabs\");\n }\n return context;\n}\n\ninterface UnderlineTabsProps {\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function UnderlineTabs({\n defaultValue,\n value: controlledValue,\n onValueChange,\n children,\n className,\n}: UnderlineTabsProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue || \"\");\n \n const value = controlledValue !== undefined ? controlledValue : internalValue;\n \n const handleValueChange = (newValue: string) => {\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n onValueChange?.(newValue);\n };\n\n return (\n <UnderlineTabsContext.Provider value={{ value, onValueChange: handleValueChange }}>\n <div className={cn(\"w-full\", className)} role=\"tablist\">\n {children}\n </div>\n </UnderlineTabsContext.Provider>\n );\n}\n\ninterface UnderlineTabsListProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function UnderlineTabsList({ children, className }: UnderlineTabsListProps) {\n return (\n <div className={cn(\"border-b border-border bg-background\", className)}>\n <div className=\"flex\">{children}</div>\n </div>\n );\n}\n\ninterface UnderlineTabsTriggerProps {\n value: string;\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n}\n\nexport function UnderlineTabsTrigger({\n value: triggerValue,\n children,\n className,\n disabled = false,\n}: UnderlineTabsTriggerProps) {\n const { value, onValueChange } = useUnderlineTabs();\n const isActive = value === triggerValue;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-disabled={disabled}\n disabled={disabled}\n onClick={() => !disabled && onValueChange(triggerValue)}\n className={cn(\n \"px-4 h-12 text-sm font-medium border-b-2 transition-colors relative\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n isActive\n ? \"border-primary text-primary\"\n : \"border-transparent text-muted-foreground hover:text-foreground hover:border-border\",\n className\n )}\n >\n {children}\n </button>\n );\n}\n\ninterface UnderlineTabsContentProps {\n value: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function UnderlineTabsContent({\n value: contentValue,\n children,\n className,\n}: UnderlineTabsContentProps) {\n const { value } = useUnderlineTabs();\n \n if (value !== contentValue) {\n return null;\n }\n\n return (\n <div\n role=\"tabpanel\"\n aria-labelledby={contentValue}\n className={cn(\"mt-4\", className)}\n >\n {children}\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"resize-none border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-input-background px-3 py-2 text-base transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\nimport { toggleVariants } from \"./toggle\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n className,\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l\",\n className,\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n","/**\n * Illustration System - iClips Design System\n * \n * Reusable SVG illustrations for empty states and onboarding.\n * These follow the iClips brand colors (Purple #7F26BF as primary).\n */\n\nimport { cn } from \"./utils\";\n\ninterface IllustrationProps {\n className?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n /** Primary color - defaults to purple-500 */\n primaryColor?: string;\n /** Secondary color - defaults to purple-100 */\n secondaryColor?: string;\n}\n\nconst sizeClasses = {\n sm: \"w-24 h-24\",\n md: \"w-32 h-32\",\n lg: \"w-48 h-48\",\n};\n\n/**\n * Empty Inbox Illustration\n * Use for: No messages, no notifications, cleared inbox\n */\nexport function EmptyInboxIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--purple-500)\",\n secondaryColor = \"var(--purple-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Inbox box */}\n <rect x=\"30\" y=\"45\" width=\"60\" height=\"40\" rx=\"4\" fill={primaryColor} opacity=\"0.2\" />\n <rect x=\"30\" y=\"45\" width=\"60\" height=\"15\" rx=\"4\" fill={primaryColor} />\n\n {/* Inbox opening */}\n <path d=\"M35 60 L60 75 L85 60\" stroke={primaryColor} strokeWidth=\"3\" fill=\"none\" />\n\n {/* Sparkles */}\n <circle cx=\"25\" cy=\"35\" r=\"3\" fill={primaryColor} opacity=\"0.6\" />\n <circle cx=\"95\" cy=\"40\" r=\"2\" fill={primaryColor} opacity=\"0.4\" />\n <circle cx=\"100\" cy=\"70\" r=\"2.5\" fill={primaryColor} opacity=\"0.5\" />\n </svg>\n );\n}\n\n/**\n * Empty Search Illustration \n * Use for: No results found, empty search\n */\nexport function EmptySearchIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--purple-500)\",\n secondaryColor = \"var(--purple-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Magnifying glass */}\n <circle cx=\"52\" cy=\"52\" r=\"22\" stroke={primaryColor} strokeWidth=\"4\" fill=\"none\" />\n <line x1=\"68\" y1=\"68\" x2=\"88\" y2=\"88\" stroke={primaryColor} strokeWidth=\"4\" strokeLinecap=\"round\" />\n\n {/* X mark (no results) */}\n <line x1=\"45\" y1=\"45\" x2=\"59\" y2=\"59\" stroke={primaryColor} strokeWidth=\"3\" strokeLinecap=\"round\" opacity=\"0.6\" />\n <line x1=\"59\" y1=\"45\" x2=\"45\" y2=\"59\" stroke={primaryColor} strokeWidth=\"3\" strokeLinecap=\"round\" opacity=\"0.6\" />\n </svg>\n );\n}\n\n/**\n * Empty Projects Illustration\n * Use for: No projects, no campaigns, empty folder\n */\nexport function EmptyProjectsIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--purple-500)\",\n secondaryColor = \"var(--purple-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Folder back */}\n <path d=\"M25 40 L25 85 L95 85 L95 45 L55 45 L50 40 Z\" fill={primaryColor} opacity=\"0.3\" />\n\n {/* Folder front */}\n <path d=\"M25 50 L25 85 L95 85 L95 50 Z\" fill={primaryColor} opacity=\"0.6\" />\n\n {/* Plus sign */}\n <line x1=\"60\" y1=\"60\" x2=\"60\" y2=\"76\" stroke=\"white\" strokeWidth=\"3\" strokeLinecap=\"round\" />\n <line x1=\"52\" y1=\"68\" x2=\"68\" y2=\"68\" stroke=\"white\" strokeWidth=\"3\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\n/**\n * Empty Calendar Illustration\n * Use for: No events, no deadlines, clear schedule\n */\nexport function EmptyCalendarIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--purple-500)\",\n secondaryColor = \"var(--purple-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Calendar body */}\n <rect x=\"28\" y=\"35\" width=\"64\" height=\"55\" rx=\"4\" fill={primaryColor} opacity=\"0.2\" />\n <rect x=\"28\" y=\"35\" width=\"64\" height=\"15\" rx=\"4\" fill={primaryColor} />\n\n {/* Calendar rings */}\n <rect x=\"40\" y=\"30\" width=\"4\" height=\"12\" rx=\"2\" fill={primaryColor} />\n <rect x=\"76\" y=\"30\" width=\"4\" height=\"12\" rx=\"2\" fill={primaryColor} />\n\n {/* Calendar grid (simplified) */}\n <circle cx=\"45\" cy=\"62\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n <circle cx=\"60\" cy=\"62\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n <circle cx=\"75\" cy=\"62\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n <circle cx=\"45\" cy=\"77\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n <circle cx=\"60\" cy=\"77\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n <circle cx=\"75\" cy=\"77\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n </svg>\n );\n}\n\n/**\n * Error State Illustration\n * Use for: Error loading, something went wrong\n */\nexport function ErrorStateIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--red-500)\",\n secondaryColor = \"var(--red-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Alert triangle */}\n <path d=\"M60 30 L90 80 L30 80 Z\" fill={primaryColor} opacity=\"0.2\" stroke={primaryColor} strokeWidth=\"3\" />\n\n {/* Exclamation mark */}\n <line x1=\"60\" y1=\"48\" x2=\"60\" y2=\"62\" stroke={primaryColor} strokeWidth=\"4\" strokeLinecap=\"round\" />\n <circle cx=\"60\" cy=\"70\" r=\"2.5\" fill={primaryColor} />\n </svg>\n );\n}\n\n/**\n * Success State Illustration\n * Use for: Action completed, all done\n */\nexport function SuccessStateIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--green-500)\",\n secondaryColor = \"var(--green-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Success circle */}\n <circle cx=\"60\" cy=\"60\" r=\"30\" fill={primaryColor} opacity=\"0.2\" stroke={primaryColor} strokeWidth=\"3\" />\n\n {/* Checkmark */}\n <path d=\"M45 60 L55 70 L75 50\" stroke={primaryColor} strokeWidth=\"4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" fill=\"none\" />\n </svg>\n );\n}\n\n// Export all illustrations\nexport const Illustrations = {\n EmptyInbox: EmptyInboxIllustration,\n EmptySearch: EmptySearchIllustration,\n EmptyProjects: EmptyProjectsIllustration,\n EmptyCalendar: EmptyCalendarIllustration,\n ErrorState: ErrorStateIllustration,\n SuccessState: SuccessStateIllustration,\n};\n\nexport type { IllustrationProps };\n","import { cn } from \"../ui/utils\";\nimport { PrintHeader } from \"./shared/PrintHeader\";\nimport { PrintFooter } from \"./shared/PrintFooter\";\nimport { PrintSection } from \"./shared/PrintSection\";\nimport { PrintInfoGrid } from \"./shared/PrintInfoGrid\";\nimport { PrintTable } from \"./shared/PrintTable\";\nimport { PrintSignature } from \"./shared/PrintSignature\";\n\nexport interface ProposalData {\n // Informações da proposta\n proposalNumber: string;\n issueDate: string;\n validUntil: string;\n \n // Informações do cliente\n client: {\n name: string;\n contact?: string;\n email?: string;\n phone?: string;\n };\n \n // Informações da agência\n agency: {\n name: string;\n representative?: string;\n email?: string;\n phone?: string;\n };\n \n // Título e descrição do projeto\n projectTitle: string;\n projectDescription?: string;\n \n // Objetivos\n objectives?: string[];\n \n // Serviços/Itens da proposta\n items: Array<{\n name: string;\n description?: string;\n quantity?: number;\n unitPrice?: number;\n totalPrice: number;\n }>;\n \n // Valores\n subtotal: number;\n discount?: number;\n total: number;\n \n // Condições\n paymentConditions?: string;\n deliveryTime?: string;\n \n // Observações\n notes?: string;\n}\n\ninterface ProposalTemplateProps {\n data: ProposalData;\n showPreview?: boolean;\n logo?: string;\n}\n\nexport function ProposalTemplate({\n data,\n showPreview = false,\n logo,\n}: ProposalTemplateProps) {\n const formatCurrency = (value: number) => {\n return new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n }).format(value);\n };\n\n const formatDate = (dateStr: string) => {\n return new Date(dateStr).toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n };\n\n return (\n <div\n className={cn(\n \"proposal-template bg-white text-black\",\n showPreview\n ? \"shadow-lg rounded-lg p-8 max-w-5xl mx-auto my-8\"\n : \"p-0\"\n )}\n style={{\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n fontSize: \"12pt\",\n lineHeight: \"1.6\",\n }}\n >\n {/* Cabeçalho */}\n <PrintHeader\n logo={logo}\n companyName={data.agency.name}\n contactInfo={{\n email: data.agency.email,\n phone: data.agency.phone,\n }}\n documentType=\"Proposta Comercial\"\n documentNumber={data.proposalNumber}\n issueDate={formatDate(data.issueDate)}\n />\n\n {/* Informações Principais */}\n <PrintSection>\n <PrintInfoGrid\n columns={2}\n items={[\n {\n label: \"Nº da Proposta\",\n value: data.proposalNumber,\n highlight: true,\n },\n {\n label: \"Validade\",\n value: formatDate(data.validUntil),\n },\n {\n label: \"Cliente\",\n value: data.client.name,\n highlight: true,\n },\n ...(data.client.contact\n ? [{ label: \"Contato\", value: data.client.contact }]\n : []),\n ]}\n />\n </PrintSection>\n\n {/* Projeto */}\n <PrintSection title=\"Projeto\">\n <h3 className=\"text-base font-semibold text-primary mb-3\">\n {data.projectTitle}\n </h3>\n {data.projectDescription && (\n <p className=\"text-sm text-gray-700 leading-relaxed\">\n {data.projectDescription}\n </p>\n )}\n </PrintSection>\n\n {/* Objetivos */}\n {data.objectives && data.objectives.length > 0 && (\n <PrintSection title=\"Objetivos\">\n <ul className=\"list-disc list-inside space-y-2\">\n {data.objectives.map((objective, index) => (\n <li key={index} className=\"text-sm text-gray-700\">\n {objective}\n </li>\n ))}\n </ul>\n </PrintSection>\n )}\n\n {/* Serviços/Itens */}\n <PrintSection title=\"Escopo e Investimento\">\n <PrintTable\n columns={[\n { header: \"Item\", key: \"name\", width: \"35%\" },\n { header: \"Descrição\", key: \"description\", width: \"30%\" },\n {\n header: \"Qtd.\",\n key: \"quantity\",\n align: \"center\",\n width: \"10%\",\n render: (value) => value || \"-\",\n },\n {\n header: \"Valor Unit.\",\n key: \"unitPrice\",\n align: \"right\",\n width: \"12.5%\",\n render: (value) => (value ? formatCurrency(value) : \"-\"),\n },\n {\n header: \"Valor Total\",\n key: \"totalPrice\",\n align: \"right\",\n width: \"12.5%\",\n render: (value) => formatCurrency(value),\n },\n ]}\n data={data.items}\n striped\n density=\"comfortable\"\n />\n\n {/* Totais */}\n <div className=\"mt-6 flex justify-end\">\n <div className=\"w-80 space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-gray-600\">Subtotal:</span>\n <span className=\"font-semibold\">\n {formatCurrency(data.subtotal)}\n </span>\n </div>\n \n {data.discount && data.discount > 0 && (\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-gray-600\">Desconto:</span>\n <span className=\"font-semibold text-green-600\">\n - {formatCurrency(data.discount)}\n </span>\n </div>\n )}\n \n <div className=\"border-t-2 border-primary pt-2 flex justify-between\">\n <span className=\"font-semibold text-base\">Total:</span>\n <span className=\"font-semibold text-lg text-primary\">\n {formatCurrency(data.total)}\n </span>\n </div>\n </div>\n </div>\n </PrintSection>\n\n {/* Condições Comerciais */}\n {(data.paymentConditions || data.deliveryTime) && (\n <PrintSection title=\"Condições Comerciais\">\n <PrintInfoGrid\n columns={1}\n items={[\n ...(data.paymentConditions\n ? [\n {\n label: \"Forma de Pagamento\",\n value: data.paymentConditions,\n },\n ]\n : []),\n ...(data.deliveryTime\n ? [{ label: \"Prazo de Entrega\", value: data.deliveryTime }]\n : []),\n ]}\n />\n </PrintSection>\n )}\n\n {/* Observações */}\n {data.notes && (\n <PrintSection title=\"Observações\">\n <p className=\"text-sm text-gray-700 leading-relaxed\">{data.notes}</p>\n </PrintSection>\n )}\n\n {/* Aprovação */}\n <PrintSignature\n signatures={[\n {\n label: \"APROVAÇÃO DO CLIENTE\",\n name: data.client.name,\n role: data.client.contact,\n },\n ]}\n layout=\"vertical\"\n instructionText=\"Para aprovar esta proposta, assine abaixo e retorne para o e-mail indicado no cabeçalho.\"\n />\n\n {/* Rodapé */}\n <PrintFooter\n pageNumber={1}\n totalPages={1}\n footerText={`Proposta válida até ${formatDate(data.validUntil)}`}\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"index.cjs","sources":["../src/components/ui/utils.ts","../src/components/ui/accordion.tsx","../src/components/ui/button.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/alert.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/badge.tsx","../src/imports/svg-txovph4k0g.ts","../src/imports/svg-p4zgbw8x8e.ts","../src/imports/svg-agvoxj05dl.ts","../src/components/ui/brand-logo.tsx","../src/components/ui/app-layout.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/avatar.tsx","../src/components/ui/breadcrumb.tsx","../node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../node_modules/date-fns/locale/pt-BR/_lib/formatDistance.mjs","../node_modules/date-fns/locale/pt-BR/_lib/formatLong.mjs","../node_modules/date-fns/locale/pt-BR/_lib/formatRelative.mjs","../node_modules/date-fns/locale/pt-BR/_lib/localize.mjs","../node_modules/date-fns/locale/pt-BR/_lib/match.mjs","../node_modules/date-fns/locale/pt-BR.mjs","../src/components/ui/calendar.tsx","../src/components/ui/card.tsx","../src/components/figma/ImageWithFallback.tsx","../src/components/print-templates/shared/PrintHeader.tsx","../src/components/print-templates/shared/PrintFooter.tsx","../src/components/print-templates/shared/PrintSection.tsx","../src/components/print-templates/shared/PrintInfoGrid.tsx","../src/components/print-templates/shared/PrintTable.tsx","../src/components/print-templates/shared/PrintSignature.tsx","../src/components/print-templates/ContractTemplate.tsx","../src/components/ui/use-print-contract.ts","../src/components/ui/contract-print.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/popover.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/color-picker.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/select.tsx","../src/components/ui/time-picker.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/date-range-picker.tsx","../src/components/ui/progress.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/kanban-card.tsx","../src/components/ui/dialog.tsx","../src/components/ui/command.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/drawer.tsx","../src/components/ui/form.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/menubar.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/use-mobile.ts","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/slider.tsx","../src/components/ui/sonner.tsx","../src/components/ui/switch.tsx","../src/components/ui/table.tsx","../src/components/ui/table-pagination.tsx","../src/components/ui/table-types.ts","../src/hooks/use-table-pagination.ts","../src/hooks/use-data-table.ts","../src/components/ui/filter-chip.tsx","../src/components/ui/filter-bar.tsx","../src/components/ui/filter-builder.tsx","../src/components/ui/data-table.tsx","../src/components/ui/data-table-example.tsx","../src/components/ui/saved-filters.tsx","../src/components/ui/tabs.tsx","../src/components/ui/underline-tabs.tsx","../src/components/ui/textarea.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/illustrations.tsx","../src/components/print-templates/ProposalTemplate.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9 rounded-md\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }\n>(({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n});\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"./utils\";\nimport { buttonVariants } from \"./button\";\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n );\n}\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n});\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"./utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Badge = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }\n>(({ className, variant, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n ref={ref}\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n );\n});\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };","export default {\np395de780: \"M0 1.88343C0 0.870644 0.847464 0 1.86025 0C2.89622 0 3.74369 0.871417 3.74369 1.88343C3.74369 2.89622 2.89622 3.74446 1.86025 3.74446C0.847464 3.74446 0 2.89622 0 1.88343Z\",\np9466600: \"M14.366 0.0315111C9.86678 -0.373296 6.07442 3.17572 6.07442 7.59306V25.1303C6.07442 27.4664 7.74695 29.567 10.0661 29.8474C12.8287 30.1811 15.1857 28.0234 15.1857 25.3258V15.2102V14.0661C15.1857 13.1908 14.4757 12.4809 13.6004 12.4809H12.1488V15.2102V25.2161C12.1488 25.9847 11.5355 26.7689 10.7699 26.8384C9.86987 26.9195 9.11125 26.2095 9.11125 25.3258V7.78928C9.11125 5.45314 10.783 3.35263 13.1021 3.07142C15.8647 2.73692 18.2225 4.8946 18.2225 7.59306V21.0459C18.2225 21.0459 18.2225 21.0931 18.2225 21.1595C18.2225 21.9483 18.2225 25.3428 18.2225 25.3605C18.2024 29.7655 14.4124 33.2967 9.91931 32.8858C5.96936 32.525 3.03682 29.0355 3.03682 25.0693V15.1291V12.4816H1.58524C0.709959 12.4816 0 13.1916 0 14.0669V25.0152C0 30.6014 4.18017 35.4676 9.74781 35.9195C15.6461 36.3977 20.6529 32.029 21.2083 26.3725C21.2145 26.3053 21.2408 23.8325 21.2531 21.8216L21.2593 21.8231V7.85031C21.2601 3.87872 18.3206 0.386876 14.366 0.0315111Z\",\n}\n","export default {\np1cdcfe80: \"M21.9603 17.085C21.9556 16.3915 22.1577 15.7123 22.5408 15.1339C22.9239 14.5555 23.4707 14.104 24.1116 13.837C24.7525 13.57 25.4585 13.4995 26.1397 13.6345C26.8208 13.7696 27.4463 14.104 27.9365 14.5952C28.4267 15.0864 28.7594 15.7122 28.8923 16.3929C29.0251 17.0736 28.9521 17.7784 28.6825 18.4175C28.4129 19.0566 27.959 19.6011 27.3784 19.9817C26.7979 20.3623 26.1171 20.5618 25.4227 20.5547C24.5062 20.5422 23.631 20.1723 22.984 19.5239C22.337 18.8756 21.9696 18.0003 21.9603 17.085V17.085Z\",\np2cb5a300: \"M98.983 25.9984C101.074 28.2086 102.206 31.1541 102.134 34.1939C102.207 37.2482 101.076 40.2089 98.983 42.4373C98.0369 43.5032 96.8719 44.353 95.5674 44.929C94.2629 45.505 92.8495 45.7937 91.4233 45.7754C90.0666 45.8501 88.7117 45.5978 87.4731 45.0398C86.2345 44.4817 85.1486 43.6343 84.3069 42.5689V54.8204H81.5394C80.7736 54.8204 80.0392 54.5166 79.4978 53.9758C78.9563 53.4351 78.6521 52.7017 78.6521 51.937V23.2227H81.9947C82.2987 23.2211 82.6001 23.2797 82.8814 23.3952C83.1626 23.5107 83.4182 23.6807 83.6332 23.8955C83.8482 24.1102 84.0185 24.3654 84.1341 24.6462C84.2498 24.9271 84.3085 25.2281 84.3069 25.5318V25.807C85.1512 24.7453 86.2379 23.9013 87.4761 23.3455C88.7143 22.7897 90.0678 22.5383 91.4233 22.6125C92.8528 22.6025 94.2678 22.8997 95.5721 23.4839C96.8765 24.0681 98.0398 24.9257 98.983 25.9984V25.9984ZM90.369 40.3555C91.1724 40.3816 91.9727 40.2432 92.7206 39.949C93.4685 39.6548 94.1482 39.2109 94.718 38.6446C95.302 38.0584 95.7595 37.359 96.0624 36.5894C96.3653 35.8198 96.5071 34.9964 96.4791 34.17C96.5113 33.3502 96.3713 32.5328 96.068 31.7703C95.7646 31.0079 95.3048 30.3174 94.718 29.7432C93.5516 28.6161 91.9921 27.9859 90.369 27.9859C88.746 27.9859 87.1865 28.6161 86.0201 29.7432C85.4473 30.3253 84.9997 31.0184 84.7051 31.7797C84.4105 32.541 84.275 33.3544 84.3069 34.17C84.2815 34.992 84.4199 35.8108 84.714 36.579C85.0081 37.3471 85.4521 38.0492 86.0201 38.6446C86.5912 39.2107 87.2706 39.656 88.0178 39.954C88.765 40.2521 89.5646 40.3968 90.369 40.3795V40.3555Z\",\np2d489f00: \"M67.1509 17.085C67.1485 16.3949 67.3516 15.7197 67.7343 15.145C68.117 14.5704 68.6621 14.1223 69.3003 13.8577C69.9385 13.593 70.6411 13.5238 71.3188 13.6587C71.9966 13.7937 72.6188 14.1267 73.1066 14.6155C73.5944 15.1044 73.9258 15.7269 74.0585 16.4042C74.1913 17.0815 74.1196 17.7828 73.8524 18.4193C73.5852 19.0557 73.1346 19.5985 72.5579 19.9787C71.9811 20.3589 71.3043 20.5594 70.6132 20.5547C69.6968 20.5422 68.8215 20.1723 68.1746 19.5239C67.5276 18.8756 67.1602 18.0003 67.1509 17.085V17.085Z\",\np344a5f80: \"M114.869 31.8729C118.068 32.5309 122.249 34.0623 122.201 38.7523C122.254 39.7667 122.048 40.7778 121.602 41.6904C121.155 42.603 120.483 43.3871 119.649 43.9688C117.799 45.2158 115.603 45.8481 113.372 45.7754C108.855 45.7754 105.776 44.0166 104.159 40.5589L107.118 38.8839C107.569 38.6258 108.095 38.5289 108.609 38.6094C109.123 38.6899 109.595 38.9428 109.945 39.3266C110.382 39.7887 110.916 40.1492 111.508 40.3828C112.1 40.6165 112.736 40.7174 113.372 40.6786C115.396 40.6786 116.403 40.0684 116.403 38.7882C116.403 37.508 114.654 36.9457 112.413 36.3954C109.155 35.5579 105.081 34.1939 105.081 29.6356C105.046 28.6587 105.245 27.6876 105.662 26.8032C106.079 25.9187 106.701 25.1465 107.477 24.5507C108.587 23.7568 109.846 23.1971 111.179 22.9057C112.513 22.6144 113.891 22.5975 115.231 22.8562C116.571 23.1148 117.844 23.6436 118.972 24.4101C120.101 25.1767 121.061 26.1649 121.794 27.3145L118.727 28.9895C118.302 29.2175 117.816 29.3077 117.338 29.2477C116.859 29.1877 116.411 28.9803 116.055 28.6545C115.346 28.0113 114.413 27.6719 113.456 27.7093C112.006 27.7093 110.904 28.4152 110.904 29.5039C110.904 30.5927 112.617 31.2986 114.869 31.8729Z\",\np35662200: \"M22.6552 23.2346V34.0025V47.2828C22.6619 47.9663 22.4243 48.6297 21.9851 49.1538C21.5459 49.6779 20.9339 50.0284 20.2591 50.1423C19.8565 50.2006 19.4462 50.1718 19.0557 50.0579C18.6653 49.9441 18.3039 49.7477 17.9961 49.4823C17.6882 49.2168 17.441 48.8884 17.2713 48.5193C17.1016 48.1501 17.0133 47.7489 17.0124 47.3427V14.1777C16.9965 11.9279 17.8761 9.76402 19.4579 8.16199C21.0396 6.55996 23.1938 5.65104 25.4466 5.63517C27.6994 5.61931 29.8663 6.4978 31.4705 8.07739C33.0747 9.65698 33.9848 11.8083 34.0007 14.058V20.5546H36.7802C37.546 20.5546 38.2804 20.2508 38.8218 19.7101C39.3633 19.1694 39.6675 18.436 39.6675 17.6712V14.2255C39.6898 10.4749 38.2191 6.86905 35.5792 4.20125C32.9392 1.53344 29.3461 0.0222044 25.5904 -7.4932e-06C21.8347 -0.0222194 18.2239 1.44641 15.5525 4.08281C12.8811 6.7192 11.3678 10.3074 11.3456 14.058V47.1632C11.3377 48.2772 11.5496 49.3818 11.9692 50.4139C12.3888 51.4461 13.0079 52.3856 13.7911 53.1789C15.3728 54.7809 17.5271 55.6898 19.7799 55.7057C22.0327 55.7216 24.1995 54.8431 25.8037 53.2635C27.4079 51.6839 28.3181 49.5326 28.3339 47.2828V33.9427V26.118C28.3339 25.3533 28.0297 24.6199 27.4883 24.0792C26.9468 23.5384 26.2124 23.2346 25.4466 23.2346H22.6552Z\",\np3838afa0: \"M67.8097 42.2698V23.2347H70.5773C70.9564 23.2347 71.3319 23.3092 71.6822 23.4541C72.0325 23.599 72.3508 23.8114 72.6189 24.0792C72.887 24.3469 73.0997 24.6648 73.2448 25.0146C73.3899 25.3644 73.4646 25.7394 73.4646 26.118V45.1532H70.6851C69.9214 45.15 69.1901 44.8449 68.6512 44.3045C68.1123 43.7641 67.8097 43.0325 67.8097 42.2698V42.2698Z\",\np38a74f0: \"M33.9767 47.929C33.4376 55.3229 27.2676 61.4247 20.0554 61.4247C16.2424 61.4247 12.5857 59.9121 9.88955 57.2196C7.19341 54.5271 5.67874 50.8753 5.67874 47.0675V23.2466H2.89926C2.13239 23.2466 1.39675 23.55 0.853375 24.0904C0.309997 24.6308 0.00313895 25.3642 -2.99221e-05 26.13V47.1154C-0.0224375 52.3706 2.03925 57.421 5.73442 61.1627C9.4296 64.9045 14.4577 67.0333 19.7199 67.0838C24.2797 67.0831 28.704 65.5352 32.2674 62.694C35.8307 59.8529 38.3217 55.8869 39.332 51.4465C39.4399 51.0198 39.4486 50.574 39.3573 50.1435C39.2661 49.7129 39.0773 49.3089 38.8056 48.9625C38.5338 48.616 38.1862 48.3363 37.7895 48.1447C37.3927 47.9531 36.9573 47.8547 36.5166 47.8572H33.9767V47.929Z\",\npe814d80: \"M56.9674 42.2698V16.4628C56.9673 16.0801 57.0436 15.7012 57.1916 15.3482C57.3397 14.9953 57.5567 14.6752 57.8299 14.4069C58.1031 14.1385 58.4271 13.9271 58.783 13.785C59.1388 13.643 59.5194 13.5731 59.9026 13.5794H62.6701V45.1532H59.9026C59.5194 45.1596 59.1388 45.0897 58.783 44.9476C58.4271 44.8056 58.1031 44.5942 57.8299 44.3258C57.5567 44.0574 57.3397 43.7374 57.1916 43.3844C57.0436 43.0314 56.9673 42.6525 56.9674 42.2698V42.2698Z\",\npf48a00: \"M35.7618 42.4373C34.6809 41.3588 33.8312 40.0716 33.2648 38.6543C32.6983 37.2371 32.427 35.7194 32.4672 34.1939C32.4311 32.6648 32.7061 31.1442 33.2755 29.7242C33.845 28.3043 34.697 27.0144 35.7801 25.9329C36.8631 24.8513 38.1547 24.0004 39.5766 23.4317C40.9985 22.8631 42.5211 22.5884 44.0524 22.6245C46.0565 22.5718 48.0365 23.0708 49.7756 24.0669C51.5147 25.0629 52.9458 26.5176 53.9123 28.2716L50.8334 30.0782C50.399 30.3371 49.8912 30.4457 49.3888 30.3873C48.8863 30.3289 48.4171 30.1067 48.0539 29.7552C46.9749 28.7253 45.5327 28.1621 44.0404 28.1879C43.2541 28.1709 42.4726 28.3149 41.7441 28.6109C41.0156 28.907 40.3555 29.3488 39.8044 29.9092C39.2533 30.4696 38.823 31.1367 38.5398 31.8695C38.2567 32.6023 38.1267 33.3852 38.1579 34.17C38.1376 34.9603 38.2742 35.7468 38.5601 36.4841C38.8459 37.2213 39.2752 37.8947 39.8232 38.4652C40.936 39.5183 42.404 40.1161 43.9369 40.1405C45.4697 40.1648 46.956 39.614 48.1018 38.5968C48.4741 38.2608 48.9427 38.05 49.4414 37.9942C49.9401 37.9384 50.4437 38.0404 50.8813 38.2857L53.9842 40.0564C53.0823 41.5777 51.8458 42.8744 50.3684 43.8484C48.8909 44.8224 47.2111 45.4483 45.4558 45.6788C43.7006 45.9093 41.9158 45.7384 40.2364 45.1789C38.557 44.6194 37.027 43.686 35.7618 42.4493V42.4373Z\",\n}\n","export default {\np12652a00: \"M12.7929 15.2014C12.4062 14.8151 12.1022 14.354 11.8996 13.8463C11.697 13.3386 11.5999 12.795 11.6143 12.2486C11.6014 11.7008 11.6997 11.1561 11.9034 10.6475C12.1071 10.1388 12.4119 9.67682 12.7994 9.28938C13.1868 8.90195 13.6488 8.59716 14.1575 8.39346C14.6661 8.18975 15.2108 8.09138 15.7586 8.10429C16.4755 8.08543 17.1838 8.26417 17.8059 8.62096C18.428 8.97775 18.94 9.49883 19.2857 10.1271L18.1843 10.7743C18.0289 10.867 17.8473 10.9059 17.6675 10.885C17.4878 10.8641 17.3199 10.7845 17.19 10.6586C16.804 10.2897 16.2881 10.0879 15.7543 10.0971C15.473 10.0911 15.1934 10.1426 14.9328 10.2487C14.6722 10.3547 14.4361 10.513 14.239 10.7137C14.0418 10.9145 13.8879 11.1535 13.7866 11.4159C13.6853 11.6784 13.6388 11.9589 13.65 12.24C13.6427 12.5231 13.6916 12.8048 13.7938 13.0689C13.8961 13.333 14.0497 13.5742 14.2457 13.7786C14.6438 14.1558 15.1689 14.3699 15.7172 14.3787C16.2656 14.3874 16.7973 14.1901 17.2071 13.8257C17.3403 13.7054 17.5079 13.6299 17.6863 13.6099C17.8647 13.5899 18.0449 13.6264 18.2014 13.7143L19.3114 14.3486C18.9888 14.8935 18.5465 15.358 18.0179 15.7069C17.4894 16.0558 16.8885 16.28 16.2606 16.3626C15.6327 16.4451 14.9943 16.3839 14.3935 16.1835C13.7928 15.9831 13.2454 15.6487 12.7929 15.2057V15.2014Z\",\np128e2c00: \"M7.85574 6.12C7.85405 5.87159 7.92633 5.62829 8.06338 5.4211C8.20043 5.21391 8.39604 5.05219 8.62531 4.95654C8.85457 4.86089 9.10712 4.83565 9.35078 4.88401C9.59445 4.93238 9.8182 5.05217 9.99356 5.22813C10.1689 5.40409 10.2879 5.62826 10.3355 5.87209C10.383 6.11592 10.3569 6.36838 10.2604 6.59731C10.164 6.82625 10.0016 7.0213 9.79392 7.15763C9.58626 7.29396 9.34271 7.36541 9.09431 7.36286C8.76647 7.3584 8.45337 7.22589 8.22193 6.99365C7.99049 6.76141 7.85906 6.44786 7.85574 6.12V6.12Z\",\np15ebc880: \"M24.0214 6.12001C24.0206 5.8728 24.0932 5.63092 24.2301 5.42508C24.3671 5.21925 24.562 5.05874 24.7903 4.96394C25.0187 4.86915 25.27 4.84434 25.5124 4.89268C25.7549 4.94101 25.9775 5.06031 26.152 5.23541C26.3265 5.41051 26.445 5.63353 26.4925 5.87613C26.54 6.11873 26.5143 6.36998 26.4187 6.59796C26.3231 6.82594 26.162 7.02037 25.9557 7.15656C25.7493 7.29275 25.5072 7.36456 25.26 7.36286C24.9322 7.3584 24.6191 7.22589 24.3876 6.99365C24.1562 6.76141 24.0248 6.44786 24.0214 6.12001V6.12001Z\",\np2b03ee00: \"M8.10429 8.32285V12.18V16.9371C8.10669 17.1819 8.0217 17.4196 7.86458 17.6073C7.70747 17.7951 7.48854 17.9206 7.24715 17.9614C7.10315 17.9823 6.95635 17.972 6.81668 17.9312C6.67701 17.8904 6.54774 17.8201 6.43761 17.725C6.32748 17.6299 6.23907 17.5123 6.17836 17.38C6.11765 17.2478 6.08605 17.1041 6.08572 16.9586V5.07857C6.08003 4.27269 6.39472 3.49756 6.96054 2.9237C7.52637 2.34984 8.29698 2.02425 9.10286 2.01857C9.90874 2.01289 10.6839 2.32757 11.2577 2.89339C11.8316 3.45922 12.1572 4.22983 12.1629 5.03571V7.36285H13.1571C13.4311 7.36285 13.6938 7.25404 13.8875 7.06034C14.0812 6.86664 14.19 6.60393 14.19 6.33V5.09571C14.198 3.7522 13.6719 2.46056 12.7275 1.50492C11.7831 0.549292 10.4978 0.00795366 9.15429 -2.83887e-06C7.81078 -0.00795933 6.51913 0.518118 5.5635 1.4625C4.60787 2.40688 4.06653 3.6922 4.05857 5.03571V16.8943C4.05576 17.2933 4.13157 17.689 4.28167 18.0587C4.43177 18.4285 4.65323 18.765 4.9334 19.0492C5.49922 19.623 6.26984 19.9486 7.07572 19.9543C7.8816 19.96 8.65673 19.6453 9.23059 19.0795C9.80445 18.5136 10.13 17.743 10.1357 16.9371V12.1586V9.35571C10.1357 9.08178 10.0269 8.81907 9.8332 8.62537C9.6395 8.43167 9.37679 8.32285 9.10286 8.32285H8.10429Z\",\np3000fb00: \"M41.0914 11.4171C42.2357 11.6529 43.7314 12.2014 43.7143 13.8814C43.7333 14.2448 43.6594 14.607 43.4997 14.9339C43.34 15.2608 43.0997 15.5417 42.8014 15.75C42.1396 16.1967 41.3537 16.4232 40.5557 16.3971C38.94 16.3971 37.8386 15.7671 37.26 14.5286L38.3186 13.9286C38.4801 13.8361 38.6683 13.8014 38.8521 13.8302C39.036 13.8591 39.2046 13.9497 39.33 14.0871C39.4864 14.2527 39.6773 14.3818 39.889 14.4655C40.1008 14.5492 40.3284 14.5853 40.5557 14.5714C41.28 14.5714 41.64 14.3529 41.64 13.8943C41.64 13.4357 41.0143 13.2343 40.2129 13.0371C39.0472 12.7371 37.59 12.2486 37.59 10.6157C37.5775 10.2658 37.6488 9.91796 37.7979 9.60114C37.947 9.28433 38.1696 9.0077 38.4472 8.79429C38.844 8.5099 39.2946 8.3094 39.7715 8.20504C40.2484 8.10067 40.7416 8.09463 41.2209 8.18729C41.7002 8.27994 42.1556 8.46935 42.5593 8.74393C42.9629 9.01851 43.3063 9.37251 43.5686 9.78429L42.4714 10.3843C42.3194 10.466 42.1457 10.4983 41.9744 10.4768C41.8032 10.4553 41.6429 10.381 41.5157 10.2643C41.2621 10.0339 40.9281 9.91232 40.5857 9.92572C40.0671 9.92572 39.6729 10.1786 39.6729 10.5686C39.6729 10.9586 40.2857 11.2114 41.0914 11.4171Z\",\np3405fff0: \"M12.1543 17.1686C11.9614 19.8172 9.75428 22.0029 7.17428 22.0029C5.81031 22.0029 4.5022 21.461 3.53773 20.4966C2.57325 19.5321 2.03142 18.224 2.03142 16.86V8.32715H1.03713C0.762807 8.32715 0.499653 8.43583 0.305274 8.62941C0.110895 8.82298 0.00112454 9.08569 -9.03731e-06 9.36001V16.8772C-0.00802475 18.7596 0.729489 20.5687 2.05134 21.909C3.37319 23.2494 5.17188 24.0119 7.05428 24.03C8.68543 24.0298 10.2681 23.4753 11.5428 22.4576C12.8175 21.4398 13.7086 20.0192 14.07 18.4286C14.1086 18.2757 14.1117 18.1161 14.079 17.9618C14.0464 17.8076 13.9789 17.6629 13.8817 17.5388C13.7844 17.4147 13.6601 17.3145 13.5182 17.2459C13.3763 17.1772 13.2205 17.142 13.0628 17.1429H12.1543V17.1686Z\",\np36679780: \"M24.2571 15.1414V8.32286H25.2471C25.3828 8.32286 25.5171 8.34958 25.6424 8.40148C25.7677 8.45339 25.8816 8.52947 25.9775 8.62538C26.0734 8.72129 26.1495 8.83515 26.2014 8.96046C26.2533 9.08577 26.28 9.22008 26.28 9.35572V16.1743H25.2857C25.0125 16.1732 24.7509 16.0638 24.5581 15.8703C24.3654 15.6767 24.2571 15.4146 24.2571 15.1414V15.1414Z\",\np75f2980: \"M20.3786 15.1414V5.89714C20.3786 5.76004 20.4058 5.62432 20.4588 5.49788C20.5118 5.37144 20.5894 5.2568 20.6871 5.16067C20.7849 5.06453 20.9008 4.98881 21.0281 4.93792C21.1553 4.88704 21.2915 4.862 21.4286 4.86428H22.4186V16.1743H21.4286C21.2915 16.1766 21.1553 16.1515 21.0281 16.1006C20.9008 16.0498 20.7849 15.974 20.6871 15.8779C20.5894 15.7818 20.5118 15.6671 20.4588 15.5407C20.4058 15.4142 20.3786 15.2785 20.3786 15.1414V15.1414Z\",\npb292700: \"M35.4086 9.31285C36.1566 10.1046 36.5616 11.1597 36.5357 12.2486C36.562 13.3426 36.1572 14.4032 35.4086 15.2014C35.0701 15.5832 34.6534 15.8876 34.1867 16.094C33.7201 16.3003 33.2144 16.4037 32.7043 16.3971C32.2189 16.4239 31.7343 16.3336 31.2912 16.1337C30.8481 15.9337 30.4596 15.6302 30.1586 15.2486V19.6371H29.1686C28.8946 19.6371 28.6319 19.5283 28.4382 19.3346C28.2445 19.1409 28.1357 18.8782 28.1357 18.6043V8.31857H29.3314C29.4402 8.318 29.548 8.33901 29.6486 8.38037C29.7492 8.42174 29.8406 8.48264 29.9176 8.55957C29.9945 8.63649 30.0554 8.7279 30.0967 8.82851C30.1381 8.92912 30.1591 9.03693 30.1586 9.14571V9.24428C30.4606 8.864 30.8493 8.56165 31.2923 8.36255C31.7352 8.16346 32.2194 8.07343 32.7043 8.1C33.2156 8.09642 33.7218 8.20287 34.1884 8.41214C34.655 8.62141 35.0711 8.92859 35.4086 9.31285V9.31285ZM32.3271 14.4557C32.6145 14.465 32.9008 14.4155 33.1683 14.3101C33.4359 14.2047 33.679 14.0457 33.8828 13.8429C34.0917 13.6329 34.2554 13.3823 34.3638 13.1067C34.4721 12.831 34.5229 12.536 34.5128 12.24C34.5244 11.9463 34.4743 11.6535 34.3658 11.3804C34.2573 11.1073 34.0928 10.86 33.8828 10.6543C33.4656 10.2505 32.9077 10.0248 32.3271 10.0248C31.7465 10.0248 31.1887 10.2505 30.7714 10.6543C30.5665 10.8628 30.4064 11.1111 30.301 11.3838C30.1956 11.6565 30.1471 11.9479 30.1586 12.24C30.1495 12.5344 30.199 12.8278 30.3042 13.1029C30.4094 13.3781 30.5682 13.6296 30.7714 13.8429C30.9757 14.0456 31.2187 14.2051 31.486 14.3119C31.7533 14.4187 32.0394 14.4705 32.3271 14.4643V14.4557Z\",\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\nimport svgPathsSymbol from \"../../imports/svg-txovph4k0g\"\nimport svgPathsPositive from \"../../imports/svg-p4zgbw8x8e\"\nimport svgPathsNegative from \"../../imports/svg-agvoxj05dl\"\n\nexport interface BrandLogoProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"symbol\" | \"full\"\n mode?: \"positive\" | \"negative\"\n}\n\nexport function BrandLogo({ variant = \"full\", mode = \"positive\", className, ...props }: BrandLogoProps) {\n if (variant === \"symbol\") {\n return (\n <div className={cn(\"relative inline-block\", className)} {...props} data-name=\"Logo Símbolo\">\n <svg \n className=\"block w-full h-full\" \n fill=\"none\" \n viewBox=\"0 0 22 36\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <path d={svgPathsSymbol.p9466600} fill=\"#E62EA8\" transform=\"translate(0.37, 0.02)\" />\n <path d={svgPathsSymbol.p395de780} fill=\"#E62EA8\" transform=\"translate(11.65, 7.32)\" />\n </svg>\n </div>\n )\n }\n\n if (mode === \"positive\") {\n return (\n <div className={cn(\"relative inline-block\", className)} {...props} data-name=\"Logo\">\n <svg \n className=\"block w-full h-full\" \n fill=\"none\" \n viewBox=\"0 0 123 67\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <g clipPath=\"url(#clip0_positive)\">\n <g id=\"Group_Positive\">\n <path d={svgPathsPositive.p38a74f0} fill=\"#E52EA8\" />\n <path d={svgPathsPositive.p35662200} fill=\"#E52EA8\" />\n <path d={svgPathsPositive.p1cdcfe80} fill=\"#E52EA8\" />\n </g>\n <path d={svgPathsPositive.pf48a00} fill=\"#5B158C\" />\n <path d={svgPathsPositive.pe814d80} fill=\"#5B158C\" />\n <path d={svgPathsPositive.p3838afa0} fill=\"#5B158C\" />\n <path d={svgPathsPositive.p2d489f00} fill=\"#5B158C\" />\n <path d={svgPathsPositive.p2cb5a300} fill=\"#5B158C\" />\n <path d={svgPathsPositive.p344a5f80} fill=\"#5B158C\" />\n </g>\n <defs>\n <clipPath id=\"clip0_positive\">\n <rect width=\"122.201\" height=\"67\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </div>\n )\n }\n\n // Negative\n return (\n <div className={cn(\"relative inline-block\", className)} {...props} data-name=\"Logo Negative\">\n <svg \n className=\"block w-full h-full\" \n fill=\"none\" \n viewBox=\"0 0 44 24\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <g clipPath=\"url(#clip0_negative)\">\n <g id=\"Group_Negative\">\n <path d={svgPathsNegative.p3405fff0} fill=\"#E52EA8\" />\n <path d={svgPathsNegative.p2b03ee00} fill=\"#E52EA8\" />\n <path d={svgPathsNegative.p128e2c00} fill=\"#E52EA8\" />\n </g>\n <path d={svgPathsNegative.p12652a00} fill=\"white\" />\n <path d={svgPathsNegative.p75f2980} fill=\"white\" />\n <path d={svgPathsNegative.p36679780} fill=\"white\" />\n <path d={svgPathsNegative.p15ebc880} fill=\"white\" />\n <path d={svgPathsNegative.pb292700} fill=\"white\" />\n <path d={svgPathsNegative.p3000fb00} fill=\"white\" />\n </g>\n <defs>\n <clipPath id=\"clip0_negative\">\n <rect width=\"43.7143\" height=\"24\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { \n Home, \n Folder, \n Users, \n Calendar, \n BarChart3, \n Settings,\n LayoutGrid,\n FileText,\n Star,\n MessageSquare,\n Download,\n Sparkles,\n Zap,\n Bell,\n PanelLeftClose,\n PanelLeft,\n Plus,\n ChevronRight,\n Pin,\n type LucideIcon\n} from \"lucide-react\"\nimport { ScrollArea } from \"./scroll-area\"\nimport { Button } from \"./button\"\nimport { Badge } from \"./badge\"\nimport { BrandLogo } from \"./brand-logo\"\nimport { cn } from \"./utils\"\n\n// TypeScript Interfaces\nexport interface PrimaryNavItem {\n id: string\n label: string\n icon: LucideIcon\n}\n\nexport interface SecondaryNavItem {\n label: string\n icon: LucideIcon\n badge?: string | number\n chevron?: boolean\n highlighted?: boolean\n}\n\nexport interface AppLayoutProps {\n children: React.ReactNode\n title?: string\n theme?: \"light\" | \"dark\"\n onThemeToggle?: () => void\n primaryNavItems?: PrimaryNavItem[]\n secondaryNavItems?: SecondaryNavItem[]\n secondaryNavTitle?: string\n activePrimaryItem?: string\n onPrimaryItemClick?: (id: string) => void\n logoComponent?: React.ReactNode\n hideSecondaryNav?: boolean\n defaultPrimaryNavPinned?: boolean\n defaultSecondaryNavOpen?: boolean\n}\n\n// Default Navigation Items\nconst DEFAULT_PRIMARY_NAV_ITEMS: PrimaryNavItem[] = [\n { id: \"home\", label: \"Início\", icon: Home },\n { id: \"projects\", label: \"Projetos\", icon: Folder },\n { id: \"clients\", label: \"Clientes\", icon: Users },\n { id: \"calendar\", label: \"Calendário\", icon: Calendar },\n { id: \"reports\", label: \"Relatórios\", icon: BarChart3 },\n { id: \"settings\", label: \"Configurações\", icon: Settings }\n]\n\nconst DEFAULT_SECONDARY_NAV_ITEMS: SecondaryNavItem[] = [\n { label: \"Todos os Projetos\", icon: LayoutGrid },\n { label: \"Documentos\", icon: FileText, badge: \"3\" },\n { label: \"Favoritos\", icon: Star, chevron: true },\n { label: \"Comentários\", icon: MessageSquare, badge: \"12\", highlighted: true },\n { label: \"Downloads\", icon: Download },\n { label: \"Recentes\", icon: Sparkles, chevron: true }\n]\n\n// Main AppLayout Component\nexport function AppLayout({\n children,\n title = \"Dashboard\",\n theme = \"light\",\n onThemeToggle,\n primaryNavItems = DEFAULT_PRIMARY_NAV_ITEMS,\n secondaryNavItems = DEFAULT_SECONDARY_NAV_ITEMS,\n secondaryNavTitle = \"Menu\",\n activePrimaryItem,\n onPrimaryItemClick,\n logoComponent,\n hideSecondaryNav = false,\n defaultPrimaryNavPinned = false,\n defaultSecondaryNavOpen = true\n}: AppLayoutProps) {\n const [isPrimaryNavPinned, setIsPrimaryNavPinned] = React.useState(defaultPrimaryNavPinned)\n const [isPrimaryNavHovered, setIsPrimaryNavHovered] = React.useState(false)\n const [isSecondaryNavOpen, setIsSecondaryNavOpen] = React.useState(defaultSecondaryNavOpen)\n const [activeItem, setActiveItem] = React.useState(activePrimaryItem || primaryNavItems[0]?.id)\n\n const isPrimaryNavExpanded = isPrimaryNavPinned || isPrimaryNavHovered\n\n const handlePrimaryItemClick = (id: string) => {\n setActiveItem(id)\n if (onPrimaryItemClick) {\n onPrimaryItemClick(id)\n }\n }\n\n return (\n <div className=\"flex h-screen w-full bg-background\">\n {/* Primary Navigation */}\n <div\n className={cn(\n \"relative border-r bg-background transition-all duration-200\",\n isPrimaryNavExpanded ? \"w-56\" : \"w-16\"\n )}\n onMouseEnter={() => setIsPrimaryNavHovered(true)}\n onMouseLeave={() => setIsPrimaryNavHovered(false)}\n >\n <ScrollArea className=\"h-full\">\n <div className=\"flex h-full flex-col\">\n {/* Logo */}\n <div className=\"flex h-14 min-h-[65px] items-center border-b bg-background px-3\">\n {isPrimaryNavExpanded ? (\n <div className=\"flex min-w-0 flex-1 items-center justify-between overflow-hidden\">\n {logoComponent || (\n <BrandLogo variant=\"full\" className=\"h-8 w-auto\" />\n )}\n <button\n className=\"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded hover:bg-accent\"\n onClick={() => setIsPrimaryNavPinned(!isPrimaryNavPinned)}\n >\n <Pin className={cn(\"h-3.5 w-3.5\", isPrimaryNavPinned ? \"fill-primary text-primary\" : \"text-muted-foreground\")} />\n </button>\n </div>\n ) : (\n <div className=\"flex w-full justify-center\">\n {logoComponent || (\n <BrandLogo variant=\"symbol\" className=\"h-8 w-8\" />\n )}\n </div>\n )}\n </div>\n\n {/* Navigation Items */}\n <nav className=\"flex-1 space-y-1 p-2\">\n {primaryNavItems.map((item) => {\n const Icon = item.icon\n const isActive = activeItem === item.id\n return (\n <button\n key={item.id}\n onClick={() => handlePrimaryItemClick(item.id)}\n className={cn(\n \"flex w-full items-center gap-3 rounded px-3 py-2 text-sm transition-colors\",\n isActive\n ? \"bg-accent text-accent-foreground\"\n : \"text-muted-foreground hover:bg-accent hover:text-accent-foreground\"\n )}\n >\n <Icon className=\"h-4 w-4 shrink-0\" />\n <span\n className={cn(\n \"transition-all duration-300\",\n isPrimaryNavExpanded ? \"opacity-100\" : \"w-0 opacity-0\"\n )}\n >\n {item.label}\n </span>\n </button>\n )\n })}\n </nav>\n </div>\n </ScrollArea>\n </div>\n\n {/* Secondary Navigation */}\n {!hideSecondaryNav && isSecondaryNavOpen && (\n <div className=\"w-64 border-l bg-background\">\n <ScrollArea className=\"h-full\">\n <div className=\"flex h-full flex-col\">\n {/* Secondary Header */}\n <div className=\"flex h-14 items-center justify-between border-b px-3\">\n <h2 className=\"text-sm font-semibold\">{secondaryNavTitle}</h2>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6 p-0\">\n <Plus className=\"h-4 w-4\" />\n </Button>\n </div>\n\n {/* Secondary Navigation Items */}\n <nav className=\"flex-1 space-y-0.5 p-2\">\n {secondaryNavItems.map((item, index) => {\n const Icon = item.icon\n return (\n <button\n key={index}\n className={cn(\n \"flex w-full items-center gap-2 rounded px-3 py-2 text-sm transition-colors\",\n item.highlighted\n ? \"bg-primary/5 text-primary hover:bg-accent\"\n : \"text-muted-foreground hover:bg-accent hover:text-accent-foreground\"\n )}\n >\n <Icon className=\"h-4 w-4 shrink-0\" />\n <span className={cn(\"flex-1 text-left\", item.highlighted && \"font-medium\")}>{item.label}</span>\n {item.badge && (\n <Badge \n variant={item.highlighted ? \"default\" : \"secondary\"}\n className=\"min-w-5 px-1.5 text-xs\"\n >\n {item.badge}\n </Badge>\n )}\n {item.chevron && (\n <ChevronRight className=\"h-3 w-3\" />\n )}\n </button>\n )\n })}\n </nav>\n\n {/* Secondary Footer */}\n <div className=\"border-t p-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-primary text-primary-foreground\">\n <Zap className=\"h-4 w-4\" />\n </div>\n <div className=\"flex-1\">\n <p className=\"text-xs font-medium\">Ações rápidas</p>\n <p className=\"text-xs text-muted-foreground\">Ver todas</p>\n </div>\n </div>\n </div>\n </div>\n </ScrollArea>\n </div>\n )}\n\n {/* Main Content Area */}\n <div className=\"flex flex-1 flex-col\">\n {/* Main Header */}\n <div className=\"flex h-14 items-center justify-between border-b bg-background px-4\">\n <div className=\"flex items-center gap-3\">\n {!hideSecondaryNav && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 p-0\"\n onClick={() => setIsSecondaryNavOpen(!isSecondaryNavOpen)}\n >\n {isSecondaryNavOpen ? (\n <PanelLeftClose className=\"h-4 w-4\" />\n ) : (\n <PanelLeft className=\"h-4 w-4\" />\n )}\n </Button>\n )}\n <h1 className=\"text-base font-semibold\">{title}</h1>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8 p-0\">\n <Bell className=\"h-4 w-4\" />\n </Button>\n {onThemeToggle && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onThemeToggle}\n >\n {theme === \"light\" ? \"🌙\" : \"☀️\"}\n </Button>\n )}\n </div>\n </div>\n\n {/* Content */}\n <ScrollArea className=\"flex-1\">\n <div className=\"p-4\">\n {children}\n </div>\n </ScrollArea>\n </div>\n </div>\n )\n}\n","\"use client\";\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />;\n}\n\nexport { AspectRatio };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\n\nimport { cn } from \"./utils\";\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-10 shrink-0 overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"menos de um segundo\",\n other: \"menos de {{count}} segundos\",\n },\n\n xSeconds: {\n one: \"1 segundo\",\n other: \"{{count}} segundos\",\n },\n\n halfAMinute: \"meio minuto\",\n\n lessThanXMinutes: {\n one: \"menos de um minuto\",\n other: \"menos de {{count}} minutos\",\n },\n\n xMinutes: {\n one: \"1 minuto\",\n other: \"{{count}} minutos\",\n },\n\n aboutXHours: {\n one: \"cerca de 1 hora\",\n other: \"cerca de {{count}} horas\",\n },\n\n xHours: {\n one: \"1 hora\",\n other: \"{{count}} horas\",\n },\n\n xDays: {\n one: \"1 dia\",\n other: \"{{count}} dias\",\n },\n\n aboutXWeeks: {\n one: \"cerca de 1 semana\",\n other: \"cerca de {{count}} semanas\",\n },\n\n xWeeks: {\n one: \"1 semana\",\n other: \"{{count}} semanas\",\n },\n\n aboutXMonths: {\n one: \"cerca de 1 mês\",\n other: \"cerca de {{count}} meses\",\n },\n\n xMonths: {\n one: \"1 mês\",\n other: \"{{count}} meses\",\n },\n\n aboutXYears: {\n one: \"cerca de 1 ano\",\n other: \"cerca de {{count}} anos\",\n },\n\n xYears: {\n one: \"1 ano\",\n other: \"{{count}} anos\",\n },\n\n overXYears: {\n one: \"mais de 1 ano\",\n other: \"mais de {{count}} anos\",\n },\n\n almostXYears: {\n one: \"quase 1 ano\",\n other: \"quase {{count}} anos\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"em \" + result;\n } else {\n return \"há \" + result;\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, d 'de' MMMM 'de' y\",\n long: \"d 'de' MMMM 'de' y\",\n medium: \"d MMM y\",\n short: \"dd/MM/yyyy\",\n};\n\nconst timeFormats = {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'às' {{time}}\",\n long: \"{{date}} 'às' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: (date) => {\n const weekday = date.getDay();\n const last = weekday === 0 || weekday === 6 ? \"último\" : \"última\";\n return \"'\" + last + \"' eeee 'às' p\";\n },\n yesterday: \"'ontem às' p\",\n today: \"'hoje às' p\",\n tomorrow: \"'amanhã às' p\",\n nextWeek: \"eeee 'às' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, date, _baseDate, _options) => {\n const format = formatRelativeLocale[token];\n\n if (typeof format === \"function\") {\n return format(date);\n }\n\n return format;\n};\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"AC\", \"DC\"],\n abbreviated: [\"AC\", \"DC\"],\n wide: [\"antes de cristo\", \"depois de cristo\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"T1\", \"T2\", \"T3\", \"T4\"],\n wide: [\"1º trimestre\", \"2º trimestre\", \"3º trimestre\", \"4º trimestre\"],\n};\n\nconst monthValues = {\n narrow: [\"j\", \"f\", \"m\", \"a\", \"m\", \"j\", \"j\", \"a\", \"s\", \"o\", \"n\", \"d\"],\n abbreviated: [\n \"jan\",\n \"fev\",\n \"mar\",\n \"abr\",\n \"mai\",\n \"jun\",\n \"jul\",\n \"ago\",\n \"set\",\n \"out\",\n \"nov\",\n \"dez\",\n ],\n\n wide: [\n \"janeiro\",\n \"fevereiro\",\n \"março\",\n \"abril\",\n \"maio\",\n \"junho\",\n \"julho\",\n \"agosto\",\n \"setembro\",\n \"outubro\",\n \"novembro\",\n \"dezembro\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"],\n short: [\"dom\", \"seg\", \"ter\", \"qua\", \"qui\", \"sex\", \"sab\"],\n abbreviated: [\n \"domingo\",\n \"segunda\",\n \"terça\",\n \"quarta\",\n \"quinta\",\n \"sexta\",\n \"sábado\",\n ],\n\n wide: [\n \"domingo\",\n \"segunda-feira\",\n \"terça-feira\",\n \"quarta-feira\",\n \"quinta-feira\",\n \"sexta-feira\",\n \"sábado\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mn\",\n noon: \"md\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mn\",\n noon: \"md\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, options) => {\n const number = Number(dirtyNumber);\n\n if (options?.unit === \"week\") {\n return number + \"ª\";\n }\n return number + \"º\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)[ºªo]?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(ac|dc|a|d)/i,\n abbreviated: /^(a\\.?\\s?c\\.?|d\\.?\\s?c\\.?)/i,\n wide: /^(antes de cristo|depois de cristo)/i,\n};\nconst parseEraPatterns = {\n any: [/^ac/i, /^dc/i],\n wide: [/^antes de cristo/i, /^depois de cristo/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^T[1234]/i,\n wide: /^[1234](º)? trimestre/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmajsond]/i,\n abbreviated: /^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,\n wide: /^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^fev/i,\n /^mar/i,\n /^abr/i,\n /^mai/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^set/i,\n /^out/i,\n /^nov/i,\n /^dez/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^(dom|[23456]ª?|s[aá]b)/i,\n short: /^(dom|[23456]ª?|s[aá]b)/i,\n abbreviated: /^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,\n wide: /^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i,\n};\nconst parseDayPatterns = {\n short: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],\n narrow: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],\n any: [/^d/i, /^seg/i, /^t/i, /^qua/i, /^qui/i, /^sex/i, /^s[aá]b/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mn|md|(da) (manhã|tarde|noite))/i,\n any: /^([ap]\\.?\\s?m\\.?|meia[-\\s]noite|meio[-\\s]dia|(da) (manhã|tarde|noite))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mn|^meia[-\\s]noite/i,\n noon: /^md|^meio[-\\s]dia/i,\n morning: /manhã/i,\n afternoon: /tarde/i,\n evening: /tarde/i,\n night: /noite/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./pt-BR/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./pt-BR/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./pt-BR/_lib/formatRelative.mjs\";\nimport { localize } from \"./pt-BR/_lib/localize.mjs\";\nimport { match } from \"./pt-BR/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary Portuguese locale (Brazil).\n * @language Portuguese\n * @iso-639-2 por\n * @author Lucas Duailibe [@duailibe](https://github.com/duailibe)\n * @author Yago Carballo [@yagocarballo](https://github.com/YagoCarballo)\n */\nexport const ptBR = {\n code: \"pt-BR\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default ptBR;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { ptBR } from \"date-fns/locale\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport { buttonVariants } from \"./button\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\n/**\n * Calendar - Componente base de calendário\n *\n * Grid de dias para seleção de datas. Usado internamente pelo DatePicker\n * e DateRangePicker, mas também pode ser usado standalone.\n *\n * @example\n * // Seleção única\n * <Calendar\n * mode=\"single\"\n * selected={date}\n * onSelect={setDate}\n * />\n *\n * @example\n * // Seleção de intervalo\n * <Calendar\n * mode=\"range\"\n * selected={dateRange}\n * onSelect={setDateRange}\n * />\n */\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n locale = ptBR,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n locale={locale}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button_previous: cn(\n buttonVariants({ variant: \"outline\" }),\n \"absolute left-1 top-0 size-7 bg-background p-0 hover:bg-accent hover:text-accent-foreground rounded-md border-border m-5 z-10\"\n ),\n nav_button_next: cn(\n buttonVariants({ variant: \"outline\" }),\n \"absolute right-1 top-0 size-7 bg-background p-0 hover:bg-accent hover:text-accent-foreground rounded-md border-border m-5 z-10\"\n ),\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell: \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20 rounded-md\",\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100 rounded-md\"\n ),\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground rounded-md\",\n day_today: \"bg-accent text-accent-foreground rounded-md\",\n day_outside:\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: () => <ChevronLeft className=\"h-4 w-4\" />,\n IconRight: () => <ChevronRight className=\"h-4 w-4\" />,\n }}\n {...props}\n />\n );\n}\n\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 pt-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <h4\n data-slot=\"card-title\"\n className={cn(\"leading-none\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <p\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 [&:last-child]:pb-6\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 pb-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import React, { useState } from 'react'\n\nconst ERROR_IMG_SRC =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvcGFjaXR5PSIuMyIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIzLjciPjxyZWN0IHg9IjE2IiB5PSIxNiIgd2lkdGg9IjU2IiBoZWlnaHQ9IjU2IiByeD0iNiIvPjxwYXRoIGQ9Im0xNiA1OCAxNi0xOCAzMiAzMiIvPjxjaXJjbGUgY3g9IjUzIiBjeT0iMzUiIHI9IjciLz48L3N2Zz4KCg=='\n\nexport function ImageWithFallback(props: React.ImgHTMLAttributes<HTMLImageElement>) {\n const [didError, setDidError] = useState(false)\n\n const handleError = () => {\n setDidError(true)\n }\n\n const { src, alt, style, className, ...rest } = props\n\n return didError ? (\n <div\n className={`inline-block bg-gray-100 text-center align-middle ${className ?? ''}`}\n style={style}\n >\n <div className=\"flex items-center justify-center w-full h-full\">\n <img src={ERROR_IMG_SRC} alt=\"Error loading image\" {...rest} data-original-url={src} />\n </div>\n </div>\n ) : (\n <img src={src} alt={alt} className={className} style={style} {...rest} onError={handleError} />\n )\n}\n","import { ImageWithFallback } from \"../../figma/ImageWithFallback\";\n\ninterface PrintHeaderProps {\n /**\n * URL ou path do logo da empresa\n */\n logo?: string;\n /**\n * Nome da empresa\n */\n companyName?: string;\n /**\n * Informações de contato\n */\n contactInfo?: {\n address?: string;\n phone?: string;\n email?: string;\n website?: string;\n };\n /**\n * Tipo de documento (aparece no canto direito)\n */\n documentType?: string;\n /**\n * Número do documento\n */\n documentNumber?: string;\n /**\n * Data de emissão\n */\n issueDate?: string;\n}\n\nexport function PrintHeader({\n logo,\n companyName = \"iClips\",\n contactInfo,\n documentType,\n documentNumber,\n issueDate,\n}: PrintHeaderProps) {\n return (\n <div className=\"print-header border-b-2 border-primary pb-6 mb-8\">\n <div className=\"flex items-start justify-between\">\n {/* Logo e informações da empresa */}\n <div className=\"flex items-start gap-4\">\n {logo && (\n <div className=\"w-24 h-24 flex-shrink-0\">\n <ImageWithFallback\n src={logo}\n alt={`${companyName} Logo`}\n className=\"w-full h-full object-contain\"\n />\n </div>\n )}\n \n <div className=\"space-y-1\">\n <h2 className=\"text-xl font-semibold text-primary\">{companyName}</h2>\n \n {contactInfo && (\n <div className=\"text-xs text-gray-600 space-y-0.5\">\n {contactInfo.address && <p>{contactInfo.address}</p>}\n {contactInfo.phone && <p>Tel: {contactInfo.phone}</p>}\n {contactInfo.email && <p>Email: {contactInfo.email}</p>}\n {contactInfo.website && <p>Site: {contactInfo.website}</p>}\n </div>\n )}\n </div>\n </div>\n\n {/* Informações do documento */}\n {(documentType || documentNumber || issueDate) && (\n <div className=\"text-right space-y-1\">\n {documentType && (\n <h3 className=\"text-lg font-semibold text-gray-900\">\n {documentType}\n </h3>\n )}\n {documentNumber && (\n <p className=\"text-sm text-gray-600\">\n Nº {documentNumber}\n </p>\n )}\n {issueDate && (\n <p className=\"text-xs text-gray-500\">\n Emitido em: {issueDate}\n </p>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n","interface PrintFooterProps {\n /**\n * Número da página atual\n */\n pageNumber?: number;\n /**\n * Total de páginas\n */\n totalPages?: number;\n /**\n * Texto de rodapé customizado\n */\n footerText?: string;\n /**\n * Mostrar data de geração\n */\n showGeneratedDate?: boolean;\n}\n\nexport function PrintFooter({\n pageNumber,\n totalPages,\n footerText,\n showGeneratedDate = true,\n}: PrintFooterProps) {\n const currentDate = new Date().toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n\n return (\n <div className=\"print-footer mt-12 pt-6 border-t border-gray-200\">\n <div className=\"flex items-center justify-between text-xs text-gray-500\">\n {/* Texto de rodapé ou data */}\n <div>\n {footerText ? (\n <p>{footerText}</p>\n ) : showGeneratedDate ? (\n <p>Documento gerado em {currentDate}</p>\n ) : null}\n </div>\n\n {/* Paginação */}\n {pageNumber && totalPages && (\n <div>\n <p>\n Página {pageNumber} de {totalPages}\n </p>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { cn } from \"../../ui/utils\";\n\ninterface PrintSectionProps {\n /**\n * Título da seção\n */\n title?: string;\n /**\n * Subtítulo da seção\n */\n subtitle?: string;\n /**\n * Conteúdo da seção\n */\n children: React.ReactNode;\n /**\n * Classe CSS adicional\n */\n className?: string;\n /**\n * Evitar quebra de página\n */\n avoidBreak?: boolean;\n /**\n * Forçar quebra de página antes\n */\n pageBreak?: boolean;\n}\n\nexport function PrintSection({\n title,\n subtitle,\n children,\n className,\n avoidBreak = false,\n pageBreak = false,\n}: PrintSectionProps) {\n return (\n <div\n className={cn(\n \"print-section mb-8\",\n avoidBreak && \"avoid-break\",\n pageBreak && \"page-break\",\n className\n )}\n >\n {title && (\n <div className=\"mb-4\">\n <h2 className=\"text-lg font-semibold text-gray-900 border-b-2 border-primary pb-2\">\n {title}\n </h2>\n {subtitle && (\n <p className=\"text-sm text-gray-600 mt-1\">{subtitle}</p>\n )}\n </div>\n )}\n\n <div className=\"text-sm text-gray-700 leading-relaxed\">\n {children}\n </div>\n </div>\n );\n}\n","import { cn } from \"../../ui/utils\";\n\ninterface InfoItem {\n label: string;\n value: string | React.ReactNode;\n highlight?: boolean;\n}\n\ninterface PrintInfoGridProps {\n /**\n * Lista de informações a serem exibidas\n */\n items: InfoItem[];\n /**\n * Número de colunas\n */\n columns?: 1 | 2 | 3 | 4;\n /**\n * Classe CSS adicional\n */\n className?: string;\n}\n\nexport function PrintInfoGrid({\n items,\n columns = 2,\n className,\n}: PrintInfoGridProps) {\n const gridClass = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n }[columns];\n\n return (\n <div className={cn(\"print-info-grid\", className)}>\n <div className={cn(\"grid gap-4\", gridClass)}>\n {items.map((item, index) => (\n <div\n key={index}\n className={cn(\n \"info-item\",\n item.highlight && \"bg-gray-50 p-3 rounded border border-gray-200\"\n )}\n >\n <dt className=\"text-xs font-medium text-gray-500 uppercase tracking-wide mb-1\">\n {item.label}\n </dt>\n <dd\n className={cn(\n \"text-sm text-gray-900\",\n item.highlight && \"font-semibold\"\n )}\n >\n {item.value}\n </dd>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { cn } from \"../../ui/utils\";\n\ninterface Column {\n header: string;\n key: string;\n align?: \"left\" | \"center\" | \"right\";\n width?: string;\n render?: (value: any, row: any) => React.ReactNode;\n}\n\ninterface PrintTableProps {\n /**\n * Colunas da tabela\n */\n columns: Column[];\n /**\n * Dados da tabela\n */\n data: any[];\n /**\n * Título da tabela (opcional)\n */\n title?: string;\n /**\n * Mostrar zebra (linhas alternadas)\n */\n striped?: boolean;\n /**\n * Mostrar borda\n */\n bordered?: boolean;\n /**\n * Densidade (espaçamento)\n */\n density?: \"compact\" | \"normal\" | \"comfortable\";\n}\n\nexport function PrintTable({\n columns,\n data,\n title,\n striped = true,\n bordered = true,\n density = \"normal\",\n}: PrintTableProps) {\n const paddingClass = {\n compact: \"px-2 py-1\",\n normal: \"px-3 py-2\",\n comfortable: \"px-4 py-3\",\n }[density];\n\n return (\n <div className=\"print-table-container avoid-break\">\n {title && (\n <h3 className=\"text-base font-semibold text-gray-900 mb-3\">\n {title}\n </h3>\n )}\n\n <table\n className={cn(\n \"w-full text-sm\",\n bordered && \"border border-gray-300\"\n )}\n >\n <thead>\n <tr className=\"bg-gray-100\">\n {columns.map((column, index) => (\n <th\n key={index}\n className={cn(\n paddingClass,\n \"font-semibold text-gray-900 border-b-2 border-gray-300\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\"\n )}\n style={{ width: column.width }}\n >\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.map((row, rowIndex) => (\n <tr\n key={rowIndex}\n className={cn(\n striped && rowIndex % 2 === 0 && \"bg-gray-50\",\n \"avoid-break\"\n )}\n >\n {columns.map((column, colIndex) => {\n const value = row[column.key];\n const displayValue = column.render\n ? column.render(value, row)\n : value;\n\n return (\n <td\n key={colIndex}\n className={cn(\n paddingClass,\n \"border-b border-gray-200\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\"\n )}\n >\n {displayValue}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","interface SignatureField {\n label: string;\n name?: string;\n role?: string;\n date?: string;\n}\n\ninterface PrintSignatureProps {\n /**\n * Lista de assinaturas necessárias\n */\n signatures: SignatureField[];\n /**\n * Layout das assinaturas\n */\n layout?: \"horizontal\" | \"vertical\";\n /**\n * Mostrar linha de assinatura\n */\n showLine?: boolean;\n /**\n * Texto de instrução\n */\n instructionText?: string;\n}\n\nexport function PrintSignature({\n signatures,\n layout = \"horizontal\",\n showLine = true,\n instructionText,\n}: PrintSignatureProps) {\n return (\n <div className=\"print-signature mt-12 page-break avoid-break\">\n {instructionText && (\n <p className=\"text-sm text-gray-600 mb-6\">{instructionText}</p>\n )}\n\n <div\n className={\n layout === \"horizontal\"\n ? \"grid grid-cols-2 gap-8\"\n : \"space-y-12\"\n }\n >\n {signatures.map((signature, index) => (\n <div key={index} className=\"signature-field\">\n {/* Espaço para assinatura */}\n <div className=\"h-20 mb-2\" />\n\n {/* Linha de assinatura */}\n {showLine && (\n <div className=\"border-t-2 border-gray-900 mb-2\" />\n )}\n\n {/* Informações */}\n <div className=\"text-sm\">\n <p className=\"font-semibold text-gray-900\">{signature.label}</p>\n {signature.name && (\n <p className=\"text-gray-600\">{signature.name}</p>\n )}\n {signature.role && (\n <p className=\"text-gray-500 text-xs\">{signature.role}</p>\n )}\n {signature.date && (\n <p className=\"text-gray-500 text-xs mt-1\">\n Data: {signature.date}\n </p>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { cn } from \"../ui/utils\";\nimport { PrintHeader } from \"./shared/PrintHeader\";\nimport { PrintFooter } from \"./shared/PrintFooter\";\nimport { PrintSection } from \"./shared/PrintSection\";\nimport { PrintInfoGrid } from \"./shared/PrintInfoGrid\";\nimport { PrintTable } from \"./shared/PrintTable\";\nimport { PrintSignature } from \"./shared/PrintSignature\";\n\nexport interface DadosContrato {\n // Informações do contrato\n numeroContrato: string;\n dataEmissao: string;\n dataInicio: string;\n dataTermino: string;\n \n // Informações do cliente\n cliente: {\n nome: string;\n cnpj?: string;\n endereco?: string;\n representante?: string;\n email?: string;\n telefone?: string;\n };\n \n // Informações da agência\n agencia: {\n nome: string;\n cnpj?: string;\n endereco?: string;\n representante?: string;\n email?: string;\n telefone?: string;\n };\n \n // Valores e condições\n valorFee: number;\n totalHoras: number;\n valorHora?: number;\n condicoesPagamento: string;\n formaPagamento?: string;\n \n // Serviços incluídos\n servicos?: Array<{\n nome: string;\n descricao?: string;\n horasEstimadas?: number;\n }>;\n \n // Cláusulas contratuais\n clausulas?: Array<{\n titulo: string;\n conteudo: string;\n }>;\n \n // Observações\n observacoes?: string;\n}\n\ninterface ContractTemplateProps {\n data: DadosContrato;\n showPreview?: boolean;\n logo?: string;\n showServices?: boolean;\n}\n\nexport function ContractTemplate({\n data,\n showPreview = false,\n logo,\n showServices = true,\n}: ContractTemplateProps) {\n const formatCurrency = (value: number) => {\n return new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n }).format(value);\n };\n\n const formatDate = (dateStr: string) => {\n return new Date(dateStr).toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n };\n\n return (\n <div\n className={cn(\n \"contract-template bg-white text-black\",\n showPreview\n ? \"shadow-lg rounded-lg p-8 max-w-5xl mx-auto my-8\"\n : \"p-0\"\n )}\n style={{\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n fontSize: \"12pt\",\n lineHeight: \"1.6\",\n }}\n >\n {/* Cabeçalho */}\n <PrintHeader\n logo={logo}\n companyName={data.agencia.nome}\n contactInfo={{\n address: data.agencia.endereco,\n phone: data.agencia.telefone,\n email: data.agencia.email,\n }}\n documentType=\"Contrato de Fee Mensal\"\n documentNumber={data.numeroContrato}\n issueDate={formatDate(data.dataEmissao)}\n />\n\n {/* Informações Principais */}\n <PrintSection title=\"Informações do Contrato\">\n <PrintInfoGrid\n columns={2}\n items={[\n {\n label: \"Número do Contrato\",\n value: data.numeroContrato,\n highlight: true,\n },\n {\n label: \"Data de Emissão\",\n value: formatDate(data.dataEmissao),\n },\n {\n label: \"Vigência - Início\",\n value: formatDate(data.dataInicio),\n },\n {\n label: \"Vigência - Término\",\n value: formatDate(data.dataTermino),\n },\n {\n label: \"Valor do Fee Mensal\",\n value: formatCurrency(data.valorFee),\n highlight: true,\n },\n {\n label: \"Total de Horas\",\n value: `${data.totalHoras}h/mês`,\n },\n ]}\n />\n </PrintSection>\n\n {/* Partes Contratantes */}\n <PrintSection title=\"Partes Contratantes\" className=\"grid grid-cols-2 gap-6\">\n <div>\n <h3 className=\"font-semibold text-sm mb-3 text-primary\">\n CONTRATANTE\n </h3>\n <PrintInfoGrid\n columns={1}\n items={[\n { label: \"Razão Social\", value: data.cliente.nome },\n ...(data.cliente.cnpj\n ? [{ label: \"CNPJ\", value: data.cliente.cnpj }]\n : []),\n ...(data.cliente.endereco\n ? [{ label: \"Endereço\", value: data.cliente.endereco }]\n : []),\n ...(data.cliente.representante\n ? [\n {\n label: \"Representante Legal\",\n value: data.cliente.representante,\n },\n ]\n : []),\n ...(data.cliente.email\n ? [{ label: \"E-mail\", value: data.cliente.email }]\n : []),\n ...(data.cliente.telefone\n ? [{ label: \"Telefone\", value: data.cliente.telefone }]\n : []),\n ]}\n />\n </div>\n\n <div>\n <h3 className=\"font-semibold text-sm mb-3 text-primary\">\n CONTRATADA\n </h3>\n <PrintInfoGrid\n columns={1}\n items={[\n { label: \"Razão Social\", value: data.agencia.nome },\n ...(data.agencia.cnpj\n ? [{ label: \"CNPJ\", value: data.agencia.cnpj }]\n : []),\n ...(data.agencia.endereco\n ? [{ label: \"Endereço\", value: data.agencia.endereco }]\n : []),\n ...(data.agencia.representante\n ? [\n {\n label: \"Representante Legal\",\n value: data.agencia.representante,\n },\n ]\n : []),\n ...(data.agencia.email\n ? [{ label: \"E-mail\", value: data.agencia.email }]\n : []),\n ...(data.agencia.telefone\n ? [{ label: \"Telefone\", value: data.agencia.telefone }]\n : []),\n ]}\n />\n </div>\n </PrintSection>\n\n {/* Escopo dos Serviços */}\n {showServices && data.servicos && data.servicos.length > 0 && (\n <PrintSection title=\"Escopo dos Serviços\">\n <PrintTable\n columns={[\n { header: \"Serviço\", key: \"nome\", width: \"40%\" },\n { header: \"Descrição\", key: \"descricao\", width: \"45%\" },\n {\n header: \"Horas Est.\",\n key: \"horasEstimadas\",\n align: \"center\",\n width: \"15%\",\n render: (value) => (value ? `${value}h` : \"-\"),\n },\n ]}\n data={data.servicos}\n striped\n density=\"comfortable\"\n />\n </PrintSection>\n )}\n\n {/* Condições Comerciais */}\n <PrintSection title=\"Condições Comerciais\">\n <PrintInfoGrid\n columns={2}\n items={[\n {\n label: \"Valor do Fee Mensal\",\n value: formatCurrency(data.valorFee),\n highlight: true,\n },\n {\n label: \"Total de Horas Mensais\",\n value: `${data.totalHoras} horas`,\n },\n ...(data.valorHora\n ? [\n {\n label: \"Valor da Hora Adicional\",\n value: formatCurrency(data.valorHora),\n },\n ]\n : []),\n {\n label: \"Condições de Pagamento\",\n value: data.condicoesPagamento,\n },\n ...(data.formaPagamento\n ? [\n {\n label: \"Forma de Pagamento\",\n value: data.formaPagamento,\n },\n ]\n : []),\n ]}\n />\n </PrintSection>\n\n {/* Cláusulas Contratuais */}\n {data.clausulas && data.clausulas.length > 0 && (\n <PrintSection title=\"Cláusulas Contratuais\" pageBreak>\n <div className=\"space-y-6\">\n {data.clausulas.map((clause, index) => (\n <div key={index} className=\"clause avoid-break\">\n <h4 className=\"font-semibold text-sm mb-2\">\n Cláusula {index + 1}ª - {clause.titulo}\n </h4>\n <p className=\"text-sm text-gray-700 leading-relaxed pl-4\">\n {clause.conteudo}\n </p>\n </div>\n ))}\n </div>\n </PrintSection>\n )}\n\n {/* Observações */}\n {data.observacoes && (\n <PrintSection title=\"Observações\">\n <p className=\"text-sm text-gray-700 leading-relaxed\">{data.observacoes}</p>\n </PrintSection>\n )}\n\n {/* Assinaturas */}\n <PrintSignature\n signatures={[\n {\n label: \"CONTRATANTE\",\n name: data.cliente.nome,\n role: data.cliente.representante,\n },\n {\n label: \"CONTRATADA\",\n name: data.agencia.nome,\n role: data.agencia.representante,\n },\n ]}\n instructionText=\"As partes, estando de acordo com os termos e condições estabelecidos neste contrato, assinam o presente instrumento em duas vias de igual teor e forma.\"\n />\n\n {/* Rodapé */}\n <PrintFooter pageNumber={1} totalPages={1} />\n </div>\n );\n}\n\n/**\n * Dados de exemplo para o contrato\n * Use este objeto para testar o componente ContractTemplate\n */\nexport const dadosContratoExemplo: DadosContrato = {\n numeroContrato: 'FEE-2024-001',\n dataEmissao: '2024-01-15',\n dataInicio: '2024-02-01',\n dataTermino: '2025-01-31',\n \n cliente: {\n nome: 'Coca-Cola Brasil Ltda.',\n cnpj: '00.000.000/0001-00',\n endereco: 'Av. Paulista, 1000 - São Paulo, SP - CEP 01310-100',\n representante: 'João da Silva',\n email: 'joao.silva@cocacola.com.br',\n telefone: '(11) 3000-0000',\n },\n \n agencia: {\n nome: 'iClips Publicidade e Marketing',\n cnpj: '11.111.111/0001-11',\n endereco: 'Rua das Flores, 500 - São Paulo, SP - CEP 04567-890',\n representante: 'Maria Santos',\n email: 'contato@iclips.com.br',\n telefone: '(11) 4000-0000',\n },\n \n valorFee: 15000,\n totalHoras: 160,\n valorHora: 150,\n condicoesPagamento: 'Até o 5º dia útil do mês subsequente',\n formaPagamento: 'Transferência bancária',\n \n servicos: [\n {\n nome: 'Gestão de Mídias Sociais',\n descricao: 'Planejamento, criação de conteúdo e publicação em redes sociais',\n horasEstimadas: 60,\n },\n {\n nome: 'Criação de Campanhas',\n descricao: 'Desenvolvimento de campanhas publicitárias integradas',\n horasEstimadas: 50,\n },\n {\n nome: 'Produção de Conteúdo',\n descricao: 'Criação de textos, imagens e vídeos para diversos canais',\n horasEstimadas: 30,\n },\n {\n nome: 'Atendimento e Planejamento',\n descricao: 'Reuniões de alinhamento, relatórios e planejamento estratégico',\n horasEstimadas: 20,\n },\n ],\n \n clausulas: [\n {\n titulo: 'Do Objeto',\n conteudo:\n 'O presente contrato tem por objeto a prestação de serviços de publicidade e marketing pela CONTRATADA à CONTRATANTE, compreendendo as atividades descritas no escopo dos serviços, mediante o pagamento do fee mensal estabelecido.',\n },\n {\n titulo: 'Do Valor e Forma de Pagamento',\n conteudo:\n 'Pelos serviços prestados, a CONTRATANTE pagará à CONTRATADA o valor mensal de R$ 15.000,00 (quinze mil reais), que deverá ser pago até o 5º dia útil do mês subsequente à prestação dos serviços, mediante transferência bancária para a conta indicada pela CONTRATADA.',\n },\n {\n titulo: 'Das Horas de Trabalho',\n conteudo:\n 'O fee mensal inclui até 160 (cento e sessenta) horas de trabalho. Horas excedentes serão cobradas separadamente ao valor de R$ 150,00 (cento e cinquenta reais) por hora, mediante aprovação prévia da CONTRATANTE.',\n },\n {\n titulo: 'Da Vigência',\n conteudo:\n 'O presente contrato terá vigência de 12 (doze) meses, iniciando-se em 01 de fevereiro de 2024 e encerrando-se em 31 de janeiro de 2025, podendo ser renovado mediante acordo entre as partes.',\n },\n {\n titulo: 'Da Rescisão',\n conteudo:\n 'Qualquer das partes poderá rescindir o presente contrato mediante comunicação por escrito com antecedência mínima de 30 (trinta) dias, sem prejuízo das obrigações já assumidas até a data da rescisão.',\n },\n {\n titulo: 'Da Confidencialidade',\n conteudo:\n 'As partes se comprometem a manter sigilo sobre todas as informações confidenciais a que tiverem acesso em decorrência deste contrato, não podendo divulgá-las a terceiros sem prévia autorização por escrito da outra parte.',\n },\n {\n titulo: 'Da Propriedade Intelectual',\n conteudo:\n 'Todos os materiais criados pela CONTRATADA no âmbito deste contrato serão de propriedade da CONTRATANTE após o pagamento integral dos valores devidos, sendo permitido à CONTRATADA utilizar tais materiais em seu portfólio.',\n },\n {\n titulo: 'Do Foro',\n conteudo:\n 'As partes elegem o foro da Comarca de São Paulo, Estado de São Paulo, para dirimir quaisquer dúvidas ou questões oriundas do presente contrato, com renúncia expressa a qualquer outro, por mais privilegiado que seja.',\n },\n ],\n \n observacoes:\n 'Este contrato substitui e cancela todos os acordos anteriores, sejam verbais ou escritos, entre as partes. Qualquer alteração deverá ser feita por escrito e assinada por ambas as partes.',\n};\n","import { RefObject } from 'react';\n\n/**\n * Opções para o hook de impressão de contratos\n */\nexport interface UsePrintContractOptions {\n /** Callback chamado antes de iniciar a impressão */\n onPrintStart?: () => void;\n /** Callback chamado após impressão bem-sucedida */\n onPrintSuccess?: () => void;\n /** Callback chamado em caso de erro */\n onPrintError?: (error: Error) => void;\n /** Callback chamado antes de iniciar download do PDF */\n onDownloadStart?: () => void;\n /** Callback chamado após download bem-sucedido */\n onDownloadSuccess?: () => void;\n /** Callback chamado em caso de erro no download */\n onDownloadError?: (error: Error) => void;\n}\n\n/**\n * Hook para gerenciar impressão e download de contratos\n * \n * @example\n * ```tsx\n * const printRef = useRef<HTMLDivElement>(null);\n * const { printContract, downloadPDF } = usePrintContract(printRef, 'FEE-2024-001', {\n * onPrintSuccess: () => toast.success('Impresso!'),\n * onDownloadSuccess: () => toast.success('PDF gerado!'),\n * });\n * ```\n */\nexport function usePrintContract(\n contentRef: RefObject<HTMLElement | null>,\n contractNumber?: string,\n options: UsePrintContractOptions = {}\n) {\n const {\n onPrintStart,\n onPrintSuccess,\n onPrintError,\n onDownloadStart,\n onDownloadSuccess,\n onDownloadError,\n } = options;\n\n /**\n * Imprime o contrato abrindo em nova janela\n */\n const printContract = () => {\n try {\n const content = contentRef.current;\n if (!content) {\n throw new Error('Ref do conteúdo não está disponível');\n }\n\n onPrintStart?.();\n\n const printWindow = window.open('', '_blank');\n if (!printWindow) {\n throw new Error('Não foi possível abrir janela de impressão');\n }\n\n const title = contractNumber \n ? `Contrato-${contractNumber}` \n : 'Contrato';\n\n printWindow.document.write(`\n <!DOCTYPE html>\n <html>\n <head>\n <title>${title}</title>\n <meta charset=\"utf-8\">\n <style>\n @page {\n size: A4;\n margin: 10mm;\n }\n \n body {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 12pt;\n line-height: 1.6;\n color: #000;\n }\n \n .container {\n padding: 10mm;\n }\n \n /* Evitar quebras de página inadequadas */\n .avoid-break {\n page-break-inside: avoid !important;\n }\n \n /* Forçar quebra de página */\n .page-break {\n page-break-before: always !important;\n }\n \n /* Ocultar elementos com classe no-print */\n .no-print {\n display: none !important;\n }\n \n /* Garantir que cores sejam preservadas */\n * {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n }\n </style>\n </head>\n <body>\n <div class=\"container\">\n ${content.innerHTML}\n </div>\n </body>\n </html>\n `);\n\n printWindow.document.close();\n \n printWindow.onload = () => {\n setTimeout(() => {\n printWindow.print();\n printWindow.close();\n onPrintSuccess?.();\n }, 250);\n };\n } catch (error) {\n onPrintError?.(error as Error);\n console.error('Erro ao imprimir contrato:', error);\n }\n };\n\n /**\n * Gera PDF do contrato\n * \n * Nota: Esta é uma implementação simulada. Para geração real de PDF,\n * integre com bibliotecas como jsPDF, html2pdf.js, ou envie para API backend.\n * \n * @example Integração com html2pdf.js\n * ```tsx\n * import html2pdf from 'html2pdf.js';\n * \n * const downloadPDF = () => {\n * const element = contentRef.current;\n * const opt = {\n * margin: 10,\n * filename: `contrato-${contractNumber}.pdf`,\n * image: { type: 'jpeg', quality: 0.98 },\n * html2canvas: { scale: 2 },\n * jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }\n * };\n * html2pdf().from(element).set(opt).save();\n * };\n * ```\n */\n const downloadPDF = () => {\n try {\n onDownloadStart?.();\n \n // Implementação simulada\n // Aqui você integraria com jsPDF, html2pdf.js ou API backend\n setTimeout(() => {\n console.log('PDF gerado (simulado):', {\n contractNumber,\n timestamp: new Date().toISOString(),\n });\n onDownloadSuccess?.();\n }, 1500);\n \n // Exemplo de mensagem para o desenvolvedor\n console.info(\n 'usePrintContract: downloadPDF é uma implementação simulada. ' +\n 'Para gerar PDFs reais, integre com html2pdf.js ou jsPDF. ' +\n 'Veja a documentação do hook para exemplos.'\n );\n } catch (error) {\n onDownloadError?.(error as Error);\n console.error('Erro ao gerar PDF:', error);\n }\n };\n\n return {\n /** Imprime o contrato em nova janela */\n printContract,\n /** Gera e baixa PDF do contrato (implementação simulada) */\n downloadPDF,\n };\n}\n","import * as React from 'react';\nimport { Printer, Download, Eye } from 'lucide-react';\nimport { Button } from './button';\nimport { Card, CardContent, CardHeader, CardTitle } from './card';\nimport { ContractTemplate, DadosContrato } from '../print-templates/ContractTemplate';\nimport { usePrintContract } from './use-print-contract';\nimport { cn } from './utils';\n\nexport interface ContractPrintProps {\n /** Dados do contrato */\n data: DadosContrato;\n /** URL ou caminho do logo da empresa */\n logo?: string;\n /** Mostrar barra de ações (imprimir/download) */\n showActions?: boolean;\n /** Mostrar informações resumidas do contrato */\n showSummary?: boolean;\n /** Mostrar seção de serviços */\n showServices?: boolean;\n /** Mostrar informações sobre o template */\n showInfo?: boolean;\n /** Classe CSS adicional */\n className?: string;\n /** Callbacks de impressão */\n onPrintStart?: () => void;\n onPrintSuccess?: () => void;\n onPrintError?: (error: Error) => void;\n /** Callbacks de download */\n onDownloadStart?: () => void;\n onDownloadSuccess?: () => void;\n onDownloadError?: (error: Error) => void;\n}\n\n/**\n * Componente wrapper completo para exibir e imprimir contratos\n * \n * Inclui:\n * - Preview do contrato\n * - Botões de ação (Imprimir/Download PDF)\n * - Informações resumidas\n * - Todas as funcionalidades prontas\n * \n * @example\n * ```tsx\n * import { ContractPrint, dadosContratoExemplo } from '@iclips/design-system';\n * \n * function MinhaPage() {\n * return (\n * <ContractPrint \n * data={dadosContratoExemplo}\n * logo=\"/logo.png\"\n * showActions\n * showSummary\n * />\n * );\n * }\n * ```\n */\nexport function ContractPrint({\n data,\n logo,\n showActions = true,\n showSummary = true,\n showServices = true,\n showInfo = false,\n className,\n onPrintStart,\n onPrintSuccess,\n onPrintError,\n onDownloadStart,\n onDownloadSuccess,\n onDownloadError,\n}: ContractPrintProps) {\n const printRef = React.useRef<HTMLDivElement>(null);\n \n const { printContract, downloadPDF } = usePrintContract(\n printRef,\n data.numeroContrato,\n {\n onPrintStart,\n onPrintSuccess,\n onPrintError,\n onDownloadStart,\n onDownloadSuccess,\n onDownloadError,\n }\n );\n\n const formatCurrency = (value: number) => {\n return new Intl.NumberFormat('pt-BR', {\n style: 'currency',\n currency: 'BRL',\n }).format(value);\n };\n\n return (\n <div className={cn('space-y-6', className)}>\n {/* Barra de Ações */}\n {showActions && (\n <Card className=\"no-print\">\n <CardHeader>\n <CardTitle className=\"flex items-center justify-between\">\n <span>Ações do Documento</span>\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={downloadPDF}\n className=\"gap-2\"\n >\n <Download className=\"h-4 w-4\" />\n Download PDF\n </Button>\n <Button\n variant=\"default\"\n size=\"sm\"\n onClick={printContract}\n className=\"gap-2\"\n >\n <Printer className=\"h-4 w-4\" />\n Imprimir\n </Button>\n </div>\n </CardTitle>\n </CardHeader>\n \n {showSummary && (\n <CardContent>\n <div className=\"grid grid-cols-3 gap-4 text-sm\">\n <div>\n <p className=\"text-muted-foreground mb-1\">Nº do Contrato</p>\n <p className=\"font-semibold\">{data.numeroContrato}</p>\n </div>\n <div>\n <p className=\"text-muted-foreground mb-1\">Cliente</p>\n <p className=\"font-semibold\">{data.cliente.nome}</p>\n </div>\n <div>\n <p className=\"text-muted-foreground mb-1\">Valor do Fee</p>\n <p className=\"font-semibold\">\n {formatCurrency(data.valorFee)}\n </p>\n </div>\n </div>\n </CardContent>\n )}\n </Card>\n )}\n\n {/* Preview do Contrato */}\n <div className=\"bg-white rounded-lg shadow-sm p-8\">\n <div ref={printRef}>\n <ContractTemplate\n data={data}\n showPreview={true}\n logo={logo}\n showServices={showServices}\n />\n </div>\n </div>\n\n {/* Informações Adicionais */}\n {showInfo && (\n <Card className=\"no-print\">\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Eye className=\"h-5 w-5\" />\n Sobre este Template\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2 text-sm text-muted-foreground\">\n <p>\n ✅ <strong>Design System:</strong> Utiliza a paleta de cores e\n tipografia do iClips\n </p>\n <p>\n ✅ <strong>Impressão Otimizada:</strong> Layout preparado para\n impressão em A4\n </p>\n <p>\n ✅ <strong>Componentes Reutilizáveis:</strong> PrintHeader,\n PrintFooter, PrintTable, PrintSignature\n </p>\n <p>\n ✅ <strong>Quebras de Página:</strong> Configuradas\n automaticamente para evitar cortes\n </p>\n <p>\n ✅ <strong>Profissional:</strong> Layout clean e adequado para\n documentos legais\n </p>\n </div>\n </CardContent>\n </Card>\n )}\n </div>\n );\n}\n\n/**\n * Componente simplificado apenas com o preview do contrato\n * Útil quando você quer construir sua própria UI de ações\n * \n * @example\n * ```tsx\n * import { ContractPrintPreview, dadosContratoExemplo } from '@iclips/design-system';\n * \n * function MinhaPage() {\n * const printRef = useRef<HTMLDivElement>(null);\n * \n * return (\n * <div>\n * <MeusPropriosBotoes printRef={printRef} />\n * <ContractPrintPreview \n * ref={printRef}\n * data={dadosContratoExemplo}\n * />\n * </div>\n * );\n * }\n * ```\n */\nexport const ContractPrintPreview = React.forwardRef<\n HTMLDivElement,\n {\n data: DadosContrato;\n logo?: string;\n showServices?: boolean;\n className?: string;\n }\n>(({ data, logo, showServices = true, className }, ref) => {\n return (\n <div className={cn('bg-white rounded-lg shadow-sm p-8', className)} ref={ref}>\n <ContractTemplate\n data={data}\n showPreview={true}\n logo={logo}\n showServices={showServices}\n />\n </div>\n );\n});\n\nContractPrintPreview.displayName = 'ContractPrintPreview';\n","\"use client\";\n\nimport * as React from \"react\";\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"./utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\");\n }\n\n return context;\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n}) {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nfunction ChartTooltipContent({\n active,\n payload = [],\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n payload?: any[];\n label?: string;\n }) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item: any, index: number) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\",\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n hideIcon?: boolean;\n nameKey?: string;\n payload?: any[];\n verticalAlign?: \"top\" | \"bottom\";\n }) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload.map((item: any) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\",\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <Check className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"./utils\";\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nconst PopoverTrigger = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Trigger>\n>((props, ref) => {\n return <PopoverPrimitive.Trigger ref={ref} data-slot=\"popover-trigger\" {...props} />;\n});\nPopoverTrigger.displayName = PopoverPrimitive.Trigger.displayName;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n});\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nconst PopoverAnchor = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Anchor>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Anchor>\n>((props, ref) => {\n return <PopoverPrimitive.Anchor ref={ref} data-slot=\"popover-anchor\" {...props} />;\n});\nPopoverAnchor.displayName = PopoverPrimitive.Anchor.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\n\nimport { cn } from \"./utils\";\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { HexColorPicker } from \"react-colorful\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Label } from \"./label\";\nimport { cn } from \"./utils\";\n\ninterface ColorPickerProps {\n value?: string;\n onChange?: (color: string) => void;\n label?: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport function ColorPicker({\n value = \"#7F26BF\",\n onChange,\n label,\n className,\n disabled = false,\n}: ColorPickerProps) {\n const [color, setColor] = useState(value);\n const [open, setOpen] = useState(false);\n\n React.useEffect(() => {\n setColor(value);\n }, [value]);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n onChange?.(newColor);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let inputValue = e.target.value;\n \n // Remove # if exists\n inputValue = inputValue.replace(\"#\", \"\");\n \n // Only allow valid hex characters\n inputValue = inputValue.replace(/[^0-9A-Fa-f]/g, \"\");\n \n // Limit to 6 characters\n if (inputValue.length > 6) {\n inputValue = inputValue.slice(0, 6);\n }\n \n const newColor = \"#\" + inputValue;\n setColor(newColor);\n \n // Only call onChange if we have a complete hex color\n if (inputValue.length === 6) {\n onChange?.(newColor);\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && <Label>{label}</Label>}\n \n <div className=\"flex gap-2\">\n {/* Color Preview Button */}\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"w-12 h-10 p-0 border-2\"\n style={{ backgroundColor: color }}\n disabled={disabled}\n aria-label=\"Selecionar cor\"\n >\n <span className=\"sr-only\">Selecionar cor</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-64 p-3\" align=\"start\">\n <div className=\"space-y-3\">\n <HexColorPicker \n color={color} \n onChange={handleColorChange}\n style={{ width: \"100%\" }}\n />\n \n <div className=\"space-y-2\">\n <Label className=\"text-xs\">Código Hexadecimal</Label>\n <div className=\"flex gap-2\">\n <div className=\"relative flex-1\">\n <span className=\"absolute left-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground\">\n #\n </span>\n <Input\n value={color.replace(\"#\", \"\").toUpperCase()}\n onChange={handleInputChange}\n className=\"pl-7 font-mono text-sm\"\n placeholder=\"7F26BF\"\n maxLength={6}\n />\n </div>\n <div \n className=\"w-10 h-10 rounded border-2\"\n style={{ backgroundColor: color }}\n />\n </div>\n </div>\n\n {/* Preset Colors */}\n <div className=\"space-y-2\">\n <Label className=\"text-xs\">Cores Rápidas</Label>\n <div className=\"grid grid-cols-8 gap-1\">\n {[\n \"#7F26BF\", \"#5B158C\", \"#420F66\", // Purple\n \"#0086E6\", \"#0053A6\", \"#003066\", // Blue\n \"#24B347\", \"#007F2A\", \"#004D19\", // Green\n \"#FAB325\", \"#E6960B\", \"#CC7C04\", // Yellow\n \"#F26924\", \"#E64D0B\", \"#BF3000\", // Orange\n \"#F22435\", \"#CC0A1A\", \"#99000D\", // Red\n \"#000000\", \"#697280\", \"#C5CDD9\", \"#FFFFFF\", // Grays\n ].map((presetColor) => (\n <button\n key={presetColor}\n type=\"button\"\n className={cn(\n \"w-6 h-6 rounded border transition-all hover:scale-110\",\n color.toLowerCase() === presetColor.toLowerCase()\n ? \"border-2 border-primary ring-2 ring-primary/20\"\n : \"border-border\"\n )}\n style={{ backgroundColor: presetColor }}\n onClick={() => handleColorChange(presetColor)}\n title={presetColor}\n />\n ))}\n </div>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Text Input */}\n <div className=\"relative flex-1\">\n <span className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\n #\n </span>\n <Input\n value={color.replace(\"#\", \"\").toUpperCase()}\n onChange={handleInputChange}\n className=\"pl-8 font-mono\"\n placeholder=\"7F26BF\"\n disabled={disabled}\n maxLength={6}\n />\n </div>\n </div>\n </div>\n );\n}\n\n// Simplified version without label for inline use\nexport function ColorPickerInline({\n value = \"#7F26BF\",\n onChange,\n className,\n disabled = false,\n}: Omit<ColorPickerProps, \"label\">) {\n return (\n <ColorPicker\n value={value}\n onChange={onChange}\n className={className}\n disabled={disabled}\n />\n );\n}\n","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n );\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n );\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n ChevronUpIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Clock } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport { Input } from \"./input\";\nimport { Label } from \"./label\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./select\";\n\nexport interface TimePickerProps {\n /**\n * Valor atual no formato \"HH:mm\"\n */\n value?: string;\n /**\n * Callback quando o horário muda\n */\n onChange?: (time: string) => void;\n /**\n * Formato de exibição (12h com AM/PM ou 24h)\n * @default \"24h\"\n */\n format?: \"12h\" | \"24h\";\n /**\n * Incremento de minutos no seletor\n * @default 5\n */\n minuteStep?: 1 | 5 | 10 | 15 | 30;\n /**\n * Horário mínimo permitido (formato \"HH:mm\")\n */\n minTime?: string;\n /**\n * Horário máximo permitido (formato \"HH:mm\")\n */\n maxTime?: string;\n /**\n * Desabilita o componente\n */\n disabled?: boolean;\n /**\n * Placeholder\n * @default \"HH:MM\"\n */\n placeholder?: string;\n /**\n * Classes CSS adicionais\n */\n className?: string;\n /**\n * Mostra o ícone de relógio\n * @default true\n */\n showIcon?: boolean;\n /**\n * Variante de exibição\n * @default \"input\"\n */\n variant?: \"input\" | \"select\" | \"inline\";\n}\n\n// Gera array de horas\nconst generateHours = (format: \"12h\" | \"24h\") => {\n const hours = [];\n const max = format === \"24h\" ? 24 : 12;\n const start = format === \"24h\" ? 0 : 1;\n for (let i = start; i < max + start; i++) {\n hours.push(i.toString().padStart(2, \"0\"));\n }\n return hours;\n};\n\n// Gera array de minutos baseado no step\nconst generateMinutes = (step: number) => {\n const minutes = [];\n for (let i = 0; i < 60; i += step) {\n minutes.push(i.toString().padStart(2, \"0\"));\n }\n return minutes;\n};\n\n// Converte hora de 24h para 12h\nconst to12HourFormat = (hour: number): { hour: number; period: \"AM\" | \"PM\" } => {\n const period = hour >= 12 ? \"PM\" : \"AM\";\n const hour12 = hour % 12 || 12;\n return { hour: hour12, period };\n};\n\n// Converte hora de 12h para 24h\nconst to24HourFormat = (hour: number, period: \"AM\" | \"PM\"): number => {\n if (period === \"AM\") {\n return hour === 12 ? 0 : hour;\n }\n return hour === 12 ? 12 : hour + 12;\n};\n\n// Valida se o horário está dentro do range\nconst isTimeInRange = (\n time: string,\n minTime?: string,\n maxTime?: string\n): boolean => {\n if (!minTime && !maxTime) return true;\n\n const [h, m] = time.split(\":\").map(Number);\n const timeMinutes = h * 60 + m;\n\n if (minTime) {\n const [minH, minM] = minTime.split(\":\").map(Number);\n if (timeMinutes < minH * 60 + minM) return false;\n }\n\n if (maxTime) {\n const [maxH, maxM] = maxTime.split(\":\").map(Number);\n if (timeMinutes > maxH * 60 + maxM) return false;\n }\n\n return true;\n};\n\n/**\n * TimePicker - Componente para seleção de horário\n *\n * @example\n * // Input simples\n * <TimePicker\n * value={time}\n * onChange={setTime}\n * placeholder=\"Horário\"\n * />\n *\n * @example\n * // Com step de 15 minutos\n * <TimePicker\n * value={time}\n * onChange={setTime}\n * minuteStep={15}\n * />\n *\n * @example\n * // Formato 12h\n * <TimePicker\n * value={time}\n * onChange={setTime}\n * format=\"12h\"\n * />\n */\nfunction TimePicker({\n value,\n onChange,\n format = \"24h\",\n minuteStep = 5,\n minTime,\n maxTime,\n disabled = false,\n placeholder = \"HH:MM\",\n className,\n showIcon = true,\n variant = \"input\",\n}: TimePickerProps) {\n // Parse do valor atual\n const [hour, minute] = React.useMemo(() => {\n if (!value) return [\"\", \"\"];\n const [h, m] = value.split(\":\");\n return [h || \"\", m || \"\"];\n }, [value]);\n\n const [period, setPeriod] = React.useState<\"AM\" | \"PM\">(() => {\n if (!hour) return \"AM\";\n return parseInt(hour) >= 12 ? \"PM\" : \"AM\";\n });\n\n // Atualiza o valor\n const updateTime = (newHour: string, newMinute: string, newPeriod?: \"AM\" | \"PM\") => {\n if (!newHour || !newMinute) return;\n\n let h = parseInt(newHour);\n const m = parseInt(newMinute);\n\n // Converte para 24h se necessário\n if (format === \"12h\" && newPeriod) {\n h = to24HourFormat(h, newPeriod);\n }\n\n const timeStr = `${h.toString().padStart(2, \"0\")}:${m.toString().padStart(2, \"0\")}`;\n\n if (isTimeInRange(timeStr, minTime, maxTime)) {\n onChange?.(timeStr);\n }\n };\n\n // Handler para input manual\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n \n // Permite apenas números e \":\"\n const cleaned = inputValue.replace(/[^\\d:]/g, \"\");\n \n // Auto-formata conforme digita\n if (cleaned.length === 2 && !cleaned.includes(\":\")) {\n const formatted = cleaned + \":\";\n onChange?.(formatted);\n return;\n }\n \n // Valida formato final\n if (cleaned.match(/^\\d{2}:\\d{2}$/)) {\n const [h, m] = cleaned.split(\":\").map(Number);\n if (h >= 0 && h <= 23 && m >= 0 && m <= 59) {\n if (isTimeInRange(cleaned, minTime, maxTime)) {\n onChange?.(cleaned);\n }\n }\n } else {\n onChange?.(cleaned);\n }\n };\n\n // Variant: Input simples\n if (variant === \"input\") {\n return (\n <div className={cn(\"relative\", className)}>\n {showIcon && (\n <Clock className=\"absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground pointer-events-none\" />\n )}\n <Input\n type=\"text\"\n value={value || \"\"}\n onChange={handleInputChange}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(showIcon && \"pl-9\")}\n maxLength={5}\n />\n </div>\n );\n }\n\n // Variant: Select dropdowns\n if (variant === \"select\") {\n const hours = generateHours(format);\n const minutes = generateMinutes(minuteStep);\n\n const displayHour = format === \"12h\" && hour \n ? to12HourFormat(parseInt(hour)).hour.toString().padStart(2, \"0\")\n : hour;\n\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {showIcon && <Clock className=\"size-4 text-muted-foreground\" />}\n \n {/* Hora */}\n <Select\n value={displayHour}\n onValueChange={(h) => {\n const effectivePeriod = format === \"12h\" ? period : undefined;\n updateTime(h, minute || \"00\", effectivePeriod);\n }}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[70px]\">\n <SelectValue placeholder=\"HH\" />\n </SelectTrigger>\n <SelectContent>\n {hours.map((h) => (\n <SelectItem key={h} value={h}>\n {h}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <span className=\"text-muted-foreground font-medium\">:</span>\n\n {/* Minuto */}\n <Select\n value={minute}\n onValueChange={(m) => {\n const effectivePeriod = format === \"12h\" ? period : undefined;\n updateTime(hour || \"00\", m, effectivePeriod);\n }}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[70px]\">\n <SelectValue placeholder=\"MM\" />\n </SelectTrigger>\n <SelectContent>\n {minutes.map((m) => (\n <SelectItem key={m} value={m}>\n {m}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* AM/PM */}\n {format === \"12h\" && (\n <Select\n value={period}\n onValueChange={(p: \"AM\" | \"PM\") => {\n setPeriod(p);\n if (hour && minute) {\n updateTime(hour, minute, p);\n }\n }}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[70px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"AM\">AM</SelectItem>\n <SelectItem value=\"PM\">PM</SelectItem>\n </SelectContent>\n </Select>\n )}\n </div>\n );\n }\n\n // Variant: Inline (sem border, para uso dentro de outros componentes)\n if (variant === \"inline\") {\n const hours = generateHours(format);\n const minutes = generateMinutes(minuteStep);\n\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {showIcon && <Clock className=\"size-4 text-muted-foreground\" />}\n <Label className=\"text-sm text-muted-foreground\">Horário:</Label>\n \n {/* Hora */}\n <Select\n value={hour}\n onValueChange={(h) => updateTime(h, minute || \"00\", format === \"12h\" ? period : undefined)}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[65px] h-8 text-sm\">\n <SelectValue placeholder=\"HH\" />\n </SelectTrigger>\n <SelectContent>\n {hours.map((h) => (\n <SelectItem key={h} value={h}>\n {h}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <span className=\"text-muted-foreground\">:</span>\n\n {/* Minuto */}\n <Select\n value={minute}\n onValueChange={(m) => updateTime(hour || \"00\", m, format === \"12h\" ? period : undefined)}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[65px] h-8 text-sm\">\n <SelectValue placeholder=\"MM\" />\n </SelectTrigger>\n <SelectContent>\n {minutes.map((m) => (\n <SelectItem key={m} value={m}>\n {m}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {format === \"12h\" && (\n <Select\n value={period}\n onValueChange={(p: \"AM\" | \"PM\") => {\n setPeriod(p);\n if (hour && minute) {\n updateTime(hour, minute, p);\n }\n }}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[65px] h-8 text-sm\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"AM\">AM</SelectItem>\n <SelectItem value=\"PM\">PM</SelectItem>\n </SelectContent>\n </Select>\n )}\n </div>\n );\n }\n\n return null;\n}\n\nTimePicker.displayName = \"TimePicker\";\n\nexport { TimePicker };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format, type Locale } from \"date-fns\";\nimport { ptBR } from \"date-fns/locale\";\nimport { CalendarIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport { TimePicker } from \"./time-picker\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nexport interface DatePickerProps {\n /**\n * Data selecionada\n */\n value?: Date;\n /**\n * Callback quando a data muda\n */\n onChange?: (date: Date | undefined) => void;\n /**\n * Placeholder do campo\n * @default \"Selecione uma data\"\n */\n placeholder?: string;\n /**\n * Desabilita o componente\n */\n disabled?: boolean;\n /**\n * Data mínima permitida\n */\n minDate?: Date;\n /**\n * Data máxima permitida\n */\n maxDate?: Date;\n /**\n * Formato de exibição da data\n * @default \"dd/MM/yyyy\" ou \"dd/MM/yyyy HH:mm\" se showTime\n */\n dateFormat?: string;\n /**\n * Locale para formatação\n * @default ptBR\n */\n locale?: Locale;\n /**\n * Classes CSS adicionais para o trigger\n */\n className?: string;\n /**\n * Estado de erro\n */\n error?: boolean;\n /**\n * Mostra seletor de hora\n * @default false\n */\n showTime?: boolean;\n /**\n * Formato de hora (12h ou 24h)\n * @default \"24h\"\n */\n timeFormat?: \"12h\" | \"24h\";\n /**\n * Incremento de minutos\n * @default 5\n */\n minuteStep?: 1 | 5 | 10 | 15 | 30;\n /**\n * Horário padrão quando showTime=true e uma data é selecionada\n * @default \"09:00\"\n */\n defaultTime?: string;\n /**\n * ID do campo para acessibilidade\n */\n id?: string;\n /**\n * Nome do campo para formulários\n */\n name?: string;\n}\n\n/**\n * DatePicker - Campo de seleção de data com hora opcional\n *\n * @example\n * // Apenas data\n * <DatePicker\n * value={date}\n * onChange={setDate}\n * placeholder=\"Data de nascimento\"\n * />\n *\n * @example\n * // Data e hora\n * <DatePicker\n * value={appointmentDate}\n * onChange={setAppointmentDate}\n * placeholder=\"Data e hora da reunião\"\n * showTime\n * minuteStep={15}\n * />\n *\n * @example\n * // Com limites\n * <DatePicker\n * value={date}\n * onChange={setDate}\n * minDate={new Date()}\n * maxDate={addMonths(new Date(), 3)}\n * />\n */\nfunction DatePicker({\n value,\n onChange,\n placeholder = \"Selecione uma data\",\n disabled = false,\n minDate,\n maxDate,\n dateFormat,\n locale = ptBR,\n className,\n error = false,\n showTime = false,\n timeFormat = \"24h\",\n minuteStep = 5,\n defaultTime = \"09:00\",\n id,\n name,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false);\n\n // Formato padrão baseado em showTime\n const displayFormat = dateFormat || (showTime ? \"dd/MM/yyyy HH:mm\" : \"dd/MM/yyyy\");\n\n // Extrai hora/minuto do valor atual\n const currentTime = React.useMemo(() => {\n if (!value) return defaultTime;\n const hours = value.getHours().toString().padStart(2, \"0\");\n const minutes = value.getMinutes().toString().padStart(2, \"0\");\n return `${hours}:${minutes}`;\n }, [value, defaultTime]);\n\n // Handler para seleção de data\n const handleDateSelect = (date: Date | undefined) => {\n if (!date) {\n onChange?.(undefined);\n return;\n }\n\n if (showTime) {\n // Preserva o horário atual ou usa o padrão\n const [hours, minutes] = currentTime.split(\":\").map(Number);\n date.setHours(hours, minutes, 0, 0);\n } else {\n // Sem hora, zera o horário\n date.setHours(0, 0, 0, 0);\n }\n\n onChange?.(date);\n\n // Fecha o popover se não tiver seleção de hora\n if (!showTime) {\n setOpen(false);\n }\n };\n\n // Handler para mudança de hora\n const handleTimeChange = (time: string) => {\n if (!value) {\n // Se não tem data, cria uma nova com a data de hoje\n const today = new Date();\n const [hours, minutes] = time.split(\":\").map(Number);\n today.setHours(hours, minutes, 0, 0);\n onChange?.(today);\n } else {\n // Atualiza apenas o horário\n const newDate = new Date(value);\n const [hours, minutes] = time.split(\":\").map(Number);\n newDate.setHours(hours, minutes, 0, 0);\n onChange?.(newDate);\n }\n };\n\n // Formata o valor para exibição\n const displayValue = React.useMemo(() => {\n if (!value) return \"\";\n return format(value, displayFormat, { locale });\n }, [value, displayFormat, locale]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n name={name}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !value && \"text-muted-foreground\",\n error && \"border-destructive focus-visible:ring-destructive/20\",\n className\n )}\n >\n <CalendarIcon className=\"mr-2 size-4\" />\n {displayValue || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={handleDateSelect}\n disabled={(date) => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return false;\n }}\n locale={locale}\n initialFocus\n />\n \n {showTime && (\n <div className=\"border-t p-3\">\n <TimePicker\n value={currentTime}\n onChange={handleTimeChange}\n format={timeFormat}\n minuteStep={minuteStep}\n variant=\"inline\"\n showIcon\n />\n </div>\n )}\n\n {showTime && (\n <div className=\"border-t p-3 flex justify-end\">\n <Button\n size=\"sm\"\n onClick={() => setOpen(false)}\n >\n Confirmar\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format, subDays, startOfMonth, endOfMonth, subMonths, type Locale } from \"date-fns\";\nimport { ptBR } from \"date-fns/locale\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { DateRange } from \"react-day-picker\";\n\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport { TimePicker } from \"./time-picker\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nexport interface DateRangePreset {\n label: string;\n value: DateRange;\n}\n\nexport interface DateRangePickerProps {\n /**\n * Intervalo de datas selecionado\n */\n value?: DateRange;\n /**\n * Callback quando o intervalo muda\n */\n onChange?: (range: DateRange | undefined) => void;\n /**\n * Placeholder do campo\n * @default \"Selecione um período\"\n */\n placeholder?: string;\n /**\n * Desabilita o componente\n */\n disabled?: boolean;\n /**\n * Data mínima permitida\n */\n minDate?: Date;\n /**\n * Data máxima permitida\n */\n maxDate?: Date;\n /**\n * Formato de exibição da data\n * @default \"dd/MM/yyyy\"\n */\n dateFormat?: string;\n /**\n * Locale para formatação\n * @default ptBR\n */\n locale?: Locale;\n /**\n * Classes CSS adicionais para o trigger\n */\n className?: string;\n /**\n * Estado de erro\n */\n error?: boolean;\n /**\n * Número de meses a exibir\n * @default 2\n */\n numberOfMonths?: 1 | 2;\n /**\n * Mostra seletor de hora\n * @default false\n */\n showTime?: boolean;\n /**\n * Formato de hora (12h ou 24h)\n * @default \"24h\"\n */\n timeFormat?: \"12h\" | \"24h\";\n /**\n * Incremento de minutos\n * @default 15\n */\n minuteStep?: 1 | 5 | 10 | 15 | 30;\n /**\n * Presets de intervalos rápidos\n */\n presets?: DateRangePreset[];\n /**\n * Mostra presets padrão (Hoje, Últimos 7 dias, etc.)\n * @default true\n */\n showDefaultPresets?: boolean;\n /**\n * ID do campo para acessibilidade\n */\n id?: string;\n /**\n * Nome do campo para formulários\n */\n name?: string;\n}\n\n// Presets padrão\nconst getDefaultPresets = (): DateRangePreset[] => {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n return [\n {\n label: \"Hoje\",\n value: { from: today, to: today },\n },\n {\n label: \"Últimos 7 dias\",\n value: { from: subDays(today, 6), to: today },\n },\n {\n label: \"Últimos 30 dias\",\n value: { from: subDays(today, 29), to: today },\n },\n {\n label: \"Este mês\",\n value: { from: startOfMonth(today), to: today },\n },\n {\n label: \"Mês passado\",\n value: {\n from: startOfMonth(subMonths(today, 1)),\n to: endOfMonth(subMonths(today, 1)),\n },\n },\n ];\n};\n\n/**\n * DateRangePicker - Campo de seleção de intervalo de datas com hora opcional\n *\n * @example\n * // Básico\n * <DateRangePicker\n * value={dateRange}\n * onChange={setDateRange}\n * placeholder=\"Período do relatório\"\n * />\n *\n * @example\n * // Com hora\n * <DateRangePicker\n * value={booking}\n * onChange={setBooking}\n * placeholder=\"Reserva da sala\"\n * showTime\n * minuteStep={30}\n * />\n *\n * @example\n * // Com presets customizados\n * <DateRangePicker\n * value={period}\n * onChange={setPeriod}\n * presets={[\n * { label: \"Q1\", value: { from: q1Start, to: q1End } },\n * { label: \"Q2\", value: { from: q2Start, to: q2End } },\n * ]}\n * />\n */\nfunction DateRangePicker({\n value,\n onChange,\n placeholder = \"Selecione um período\",\n disabled = false,\n minDate,\n maxDate,\n dateFormat = \"dd/MM/yyyy\",\n locale = ptBR,\n className,\n error = false,\n numberOfMonths = 2,\n showTime = false,\n timeFormat = \"24h\",\n minuteStep = 15,\n presets,\n showDefaultPresets = true,\n id,\n name,\n}: DateRangePickerProps) {\n const [open, setOpen] = React.useState(false);\n\n // Formato com hora se necessário\n const displayFormat = showTime ? `${dateFormat} HH:mm` : dateFormat;\n\n // Combina presets padrão com customizados\n const allPresets = React.useMemo(() => {\n const defaults = showDefaultPresets ? getDefaultPresets() : [];\n return [...defaults, ...(presets || [])];\n }, [presets, showDefaultPresets]);\n\n // Extrai hora do valor atual\n const startTime = React.useMemo(() => {\n if (!value?.from) return \"00:00\";\n const h = value.from.getHours().toString().padStart(2, \"0\");\n const m = value.from.getMinutes().toString().padStart(2, \"0\");\n return `${h}:${m}`;\n }, [value?.from]);\n\n const endTime = React.useMemo(() => {\n if (!value?.to) return \"23:59\";\n const h = value.to.getHours().toString().padStart(2, \"0\");\n const m = value.to.getMinutes().toString().padStart(2, \"0\");\n return `${h}:${m}`;\n }, [value?.to]);\n\n // Handler para seleção de data\n const handleDateSelect = (range: DateRange | undefined) => {\n if (!range) {\n onChange?.(undefined);\n return;\n }\n\n // Se showTime, preserva os horários existentes\n if (showTime) {\n if (range.from) {\n const [h, m] = startTime.split(\":\").map(Number);\n range.from.setHours(h, m, 0, 0);\n }\n if (range.to) {\n const [h, m] = endTime.split(\":\").map(Number);\n range.to.setHours(h, m, 0, 0);\n }\n } else {\n // Sem hora, usa início e fim do dia\n if (range.from) range.from.setHours(0, 0, 0, 0);\n if (range.to) range.to.setHours(23, 59, 59, 999);\n }\n\n onChange?.(range);\n };\n\n // Handler para mudança de hora início\n const handleStartTimeChange = (time: string) => {\n if (!value?.from) return;\n\n const newFrom = new Date(value.from);\n const [h, m] = time.split(\":\").map(Number);\n newFrom.setHours(h, m, 0, 0);\n\n onChange?.({ ...value, from: newFrom });\n };\n\n // Handler para mudança de hora fim\n const handleEndTimeChange = (time: string) => {\n if (!value?.to) return;\n\n const newTo = new Date(value.to);\n const [h, m] = time.split(\":\").map(Number);\n newTo.setHours(h, m, 0, 0);\n\n onChange?.({ ...value, to: newTo });\n };\n\n // Handler para presets\n const handlePresetSelect = (preset: DateRangePreset) => {\n const newRange = {\n from: new Date(preset.value.from!),\n to: new Date(preset.value.to!),\n };\n\n if (showTime) {\n const [sh, sm] = startTime.split(\":\").map(Number);\n const [eh, em] = endTime.split(\":\").map(Number);\n newRange.from.setHours(sh, sm, 0, 0);\n newRange.to.setHours(eh, em, 0, 0);\n }\n\n onChange?.(newRange);\n };\n\n // Formata o valor para exibição\n const displayValue = React.useMemo(() => {\n if (!value?.from) return \"\";\n\n const fromStr = format(value.from, displayFormat, { locale });\n\n if (!value.to) return fromStr;\n\n const toStr = format(value.to, displayFormat, { locale });\n return `${fromStr} → ${toStr}`;\n }, [value, displayFormat, locale]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n name={name}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !value && \"text-muted-foreground\",\n error && \"border-destructive focus-visible:ring-destructive/20\",\n className\n )}\n >\n <CalendarIcon className=\"mr-2 size-4\" />\n {displayValue || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"flex\">\n {/* Presets sidebar */}\n {allPresets.length > 0 && (\n <div className=\"border-r p-3 space-y-1 min-w-[140px]\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">\n Atalhos\n </p>\n {allPresets.map((preset) => (\n <Button\n key={preset.label}\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start text-sm h-8\"\n onClick={() => handlePresetSelect(preset)}\n >\n {preset.label}\n </Button>\n ))}\n </div>\n )}\n\n {/* Calendário */}\n <div>\n <Calendar\n mode=\"range\"\n selected={value}\n onSelect={handleDateSelect}\n numberOfMonths={numberOfMonths}\n disabled={(date) => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return false;\n }}\n locale={locale}\n initialFocus\n />\n\n {/* Time pickers */}\n {showTime && value?.from && value?.to && (\n <div className=\"border-t p-3 flex gap-6\">\n <div className=\"flex-1\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">\n Hora início\n </p>\n <TimePicker\n value={startTime}\n onChange={handleStartTimeChange}\n format={timeFormat}\n minuteStep={minuteStep}\n variant=\"select\"\n showIcon={false}\n />\n </div>\n <div className=\"flex-1\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">\n Hora fim\n </p>\n <TimePicker\n value={endTime}\n onChange={handleEndTimeChange}\n format={timeFormat}\n minuteStep={minuteStep}\n variant=\"select\"\n showIcon={false}\n />\n </div>\n </div>\n )}\n\n {/* Footer */}\n <div className=\"border-t p-3 flex justify-end gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n onChange?.(undefined);\n }}\n >\n Limpar\n </Button>\n <Button size=\"sm\" onClick={() => setOpen(false)}>\n Confirmar\n </Button>\n </div>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\nDateRangePicker.displayName = \"DateRangePicker\";\n\nexport { DateRangePicker };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\n\nimport { cn } from \"./utils\";\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"./card\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"./avatar\";\nimport { Badge } from \"./badge\";\nimport { Button } from \"./button\";\nimport { Progress } from \"./progress\";\nimport { cn } from \"./utils\";\nimport {\n Calendar,\n MessageSquare,\n Paperclip,\n CheckSquare,\n MoreVertical,\n AlertCircle,\n} from \"lucide-react\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"./dropdown-menu\";\n\nexport interface KanbanCardTag {\n id: string;\n label: string;\n color?: string;\n}\n\nexport interface KanbanCardAssignee {\n id: string;\n name: string;\n avatar?: string;\n initials?: string;\n}\n\nexport interface KanbanCardProps {\n id: string;\n title: string;\n description?: string;\n coverImage?: string;\n thumbnailImage?: string;\n tags?: KanbanCardTag[];\n assignees?: KanbanCardAssignee[];\n priority?: \"low\" | \"medium\" | \"high\" | \"urgent\";\n dueDate?: Date;\n comments?: number;\n attachments?: number;\n checklist?: {\n completed: number;\n total: number;\n };\n progress?: number;\n status?: string;\n variant?: \"default\" | \"compact\" | \"detailed\";\n isDragging?: boolean;\n onClick?: () => void;\n onEdit?: () => void;\n onDelete?: () => void;\n onDuplicate?: () => void;\n className?: string;\n}\n\nconst priorityConfig = {\n low: {\n color: \"bg-blue-500\",\n label: \"Baixa\",\n textColor: \"text-blue-700\",\n bgColor: \"bg-blue-50 dark:bg-blue-950/20\",\n },\n medium: {\n color: \"bg-yellow-500\",\n label: \"Média\",\n textColor: \"text-yellow-700\",\n bgColor: \"bg-yellow-50 dark:bg-yellow-950/20\",\n },\n high: {\n color: \"bg-orange-500\",\n label: \"Alta\",\n textColor: \"text-orange-700\",\n bgColor: \"bg-orange-50 dark:bg-orange-950/20\",\n },\n urgent: {\n color: \"bg-red-500\",\n label: \"Urgente\",\n textColor: \"text-red-700\",\n bgColor: \"bg-red-50 dark:bg-red-950/20\",\n },\n};\n\nexport const KanbanCard = React.forwardRef<HTMLDivElement, KanbanCardProps>(\n (\n {\n title,\n description,\n coverImage,\n thumbnailImage,\n tags = [],\n assignees = [],\n priority,\n dueDate,\n comments,\n attachments,\n checklist,\n progress,\n status,\n variant = \"default\",\n isDragging = false,\n onClick,\n onEdit,\n onDelete,\n onDuplicate,\n className,\n },\n ref\n ) => {\n const isOverdue = dueDate && new Date(dueDate) < new Date();\n const priorityStyle = priority ? priorityConfig[priority] : null;\n\n const formatDate = (date: Date) => {\n const day = date.getDate().toString().padStart(2, \"0\");\n const month = (date.getMonth() + 1).toString().padStart(2, \"0\");\n return `${day}/${month}`;\n };\n\n const handleCardClick = (e: React.MouseEvent) => {\n // Don't trigger onClick if clicking on buttons or dropdown\n if (\n (e.target as HTMLElement).closest(\"button\") ||\n (e.target as HTMLElement).closest(\"[role='menuitem']\")\n ) {\n return;\n }\n onClick?.();\n };\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"group cursor-grab active:cursor-grabbing transition-all duration-200\",\n \"hover:shadow-lg hover:scale-[1.02]\",\n isDragging && \"opacity-50 rotate-2 scale-105 shadow-2xl cursor-grabbing\",\n priority && \"border-l-4\",\n priority === \"low\" && \"border-l-blue-500\",\n priority === \"medium\" && \"border-l-yellow-500\",\n priority === \"high\" && \"border-l-orange-500\",\n priority === \"urgent\" && \"border-l-red-500\",\n variant === \"compact\" && \"hover:scale-[1.01]\",\n className\n )}\n onClick={handleCardClick}\n >\n {/* Cover Image */}\n {coverImage && variant !== \"compact\" && (\n <div className=\"relative w-full h-40 overflow-hidden rounded-t-lg\">\n <img\n src={coverImage}\n alt={title}\n className=\"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n {priority && (\n <div className=\"absolute top-2 right-2\">\n <Badge\n variant=\"secondary\"\n className={cn(\"shadow-sm\", priorityStyle?.bgColor)}\n >\n <div\n className={cn(\"w-2 h-2 rounded-full mr-1\", priorityStyle?.color)}\n />\n {priorityStyle?.label}\n </Badge>\n </div>\n )}\n </div>\n )}\n\n <CardHeader className={cn(variant === \"compact\" ? \"p-3 pb-2\" : \"p-4 pb-3\")}>\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex-1 min-w-0\">\n {/* Thumbnail + Title */}\n <div className=\"flex items-start gap-2\">\n {thumbnailImage && !coverImage && (\n <img\n src={thumbnailImage}\n alt={title}\n className=\"w-10 h-10 rounded object-cover flex-shrink-0\"\n />\n )}\n <div className=\"flex-1 min-w-0\">\n <CardTitle\n className={cn(\n \"line-clamp-2\",\n variant === \"compact\" ? \"text-sm\" : \"text-base\"\n )}\n >\n {title}\n </CardTitle>\n {status && variant === \"detailed\" && (\n <Badge variant=\"outline\" className=\"mt-1 text-xs\">\n {status}\n </Badge>\n )}\n </div>\n </div>\n\n {/* Description */}\n {description && variant !== \"compact\" && (\n <CardDescription className=\"mt-2 line-clamp-2 text-xs\">\n {description}\n </CardDescription>\n )}\n </div>\n\n {/* Actions Menu */}\n {(onEdit || onDelete || onDuplicate) && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0\"\n >\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {onEdit && (\n <DropdownMenuItem onClick={onEdit}>\n Editar\n </DropdownMenuItem>\n )}\n {onDuplicate && (\n <DropdownMenuItem onClick={onDuplicate}>\n Duplicar\n </DropdownMenuItem>\n )}\n {onDelete && (\n <DropdownMenuItem\n onClick={onDelete}\n className=\"text-destructive\"\n >\n Excluir\n </DropdownMenuItem>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n\n {/* Tags */}\n {tags.length > 0 && (\n <div className=\"flex flex-wrap gap-1 mt-2\">\n {tags.slice(0, variant === \"compact\" ? 2 : 3).map((tag) => (\n <Badge\n key={tag.id}\n variant=\"secondary\"\n className=\"text-xs\"\n style={\n tag.color\n ? {\n backgroundColor: tag.color + \"20\",\n color: tag.color,\n borderColor: tag.color + \"40\",\n }\n : undefined\n }\n >\n {tag.label}\n </Badge>\n ))}\n {tags.length > (variant === \"compact\" ? 2 : 3) && (\n <Badge variant=\"secondary\" className=\"text-xs\">\n +{tags.length - (variant === \"compact\" ? 2 : 3)}\n </Badge>\n )}\n </div>\n )}\n\n {/* Priority (without cover image) */}\n {priority && !coverImage && variant === \"detailed\" && (\n <Badge\n variant=\"secondary\"\n className={cn(\"mt-2 w-fit text-xs\", priorityStyle?.bgColor)}\n >\n <div\n className={cn(\"w-2 h-2 rounded-full mr-1\", priorityStyle?.color)}\n />\n {priorityStyle?.label}\n </Badge>\n )}\n </CardHeader>\n\n {/* Progress Bar */}\n {progress !== undefined && variant !== \"compact\" && (\n <CardContent className=\"px-4 pb-3 pt-0\">\n <div className=\"space-y-1\">\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>Progresso</span>\n <span>{progress}%</span>\n </div>\n <Progress value={progress} className=\"h-1.5\" />\n </div>\n </CardContent>\n )}\n\n <CardFooter\n className={cn(\n \"flex items-center justify-between gap-2\",\n variant === \"compact\" ? \"px-3 pb-3 pt-1\" : \"px-4 pb-4 pt-2\"\n )}\n >\n {/* Metadata */}\n <div className=\"flex items-center gap-3 text-xs text-muted-foreground flex-wrap\">\n {/* Due Date */}\n {dueDate && (\n <div\n className={cn(\n \"flex items-center gap-1\",\n isOverdue && \"text-destructive font-medium\"\n )}\n >\n {isOverdue && <AlertCircle className=\"h-3 w-3\" />}\n <Calendar className=\"h-3 w-3\" />\n <span>{formatDate(dueDate)}</span>\n </div>\n )}\n\n {/* Checklist */}\n {checklist && (\n <div className=\"flex items-center gap-1\">\n <CheckSquare className=\"h-3 w-3\" />\n <span>\n {checklist.completed}/{checklist.total}\n </span>\n </div>\n )}\n\n {/* Comments */}\n {comments !== undefined && comments > 0 && (\n <div className=\"flex items-center gap-1\">\n <MessageSquare className=\"h-3 w-3\" />\n <span>{comments}</span>\n </div>\n )}\n\n {/* Attachments */}\n {attachments !== undefined && attachments > 0 && (\n <div className=\"flex items-center gap-1\">\n <Paperclip className=\"h-3 w-3\" />\n <span>{attachments}</span>\n </div>\n )}\n </div>\n\n {/* Assignees */}\n {assignees.length > 0 && (\n <div className=\"flex -space-x-2\">\n {assignees.slice(0, 3).map((assignee) => (\n <Avatar key={assignee.id} className=\"h-6 w-6 border-2 border-background\">\n {assignee.avatar && <AvatarImage src={assignee.avatar} alt={assignee.name} />}\n <AvatarFallback className=\"text-xs\">\n {assignee.initials || assignee.name.slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n ))}\n {assignees.length > 3 && (\n <div className=\"h-6 w-6 rounded-full border-2 border-background bg-muted flex items-center justify-center text-xs\">\n +{assignees.length - 3}\n </div>\n )}\n </div>\n )}\n </CardFooter>\n </Card>\n );\n }\n);\n\nKanbanCard.displayName = \"KanbanCard\";\n\nexport default KanbanCard;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <DialogPrimitive.Overlay\n ref={ref}\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n});\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nfunction DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\">\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\";\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\nimport { cn } from \"./utils\";\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nconst DrawerTrigger = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Trigger>\n>(({ ...props }, ref) => {\n return <DrawerPrimitive.Trigger ref={ref} data-slot=\"drawer-trigger\" {...props} />;\n});\nDrawerTrigger.displayName = \"DrawerTrigger\";\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nconst DrawerClose = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Close>\n>(({ ...props }, ref) => {\n return <DrawerPrimitive.Close ref={ref} data-slot=\"drawer-close\" {...props} />;\n});\nDrawerClose.displayName = \"DrawerClose\";\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <DrawerPrimitive.Overlay\n ref={ref}\n data-slot=\"drawer-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n});\nDrawerOverlay.displayName = \"DrawerOverlay\";\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n data-slot=\"drawer-content\"\n className={cn(\n \"group/drawer-content bg-background fixed z-50 flex h-auto flex-col\",\n \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b\",\n \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className,\n )}\n {...props}\n >\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n});\nDrawerContent.displayName = \"DrawerContent\";\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\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => {\n return (\n <DrawerPrimitive.Title\n ref={ref}\n data-slot=\"drawer-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n});\nDrawerTitle.displayName = \"DrawerTitle\";\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => {\n return (\n <DrawerPrimitive.Description\n ref={ref}\n data-slot=\"drawer-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n});\nDrawerDescription.displayName = \"DrawerDescription\";\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\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\";\n\nimport { cn } from \"./utils\";\nimport { Label } from \"./label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"./utils\";\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string;\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm bg-input-background transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />;\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />;\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />;\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n );\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </MenubarPortal>\n );\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n );\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />;\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n};\n","import * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className,\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\",\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\",\n \"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n \"absolute top-full left-0 isolate z-50 flex justify-center\",\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n className,\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n","import * as React from \"react\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport { Button, buttonVariants } from \"./button\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 px-2.5 sm:pl-2.5\", className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"hidden sm:block\">Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 px-2.5 sm:pr-2.5\", className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\n\nimport { cn } from \"./utils\";\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"peer h-5 w-5 shrink-0 rounded-full border border-gray-300 bg-white shadow-sm transition-all hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex items-center justify-center\"\n >\n <div className=\"h-2 w-2 rounded-full bg-white\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { GripVerticalIcon } from \"lucide-react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"./utils\";\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-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=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"./utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator-root\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <SheetPrimitive.Overlay\n ref={ref}\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n});\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};","import * 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 { cn } from \"./utils\";\n\ninterface SkeletonProps extends React.ComponentProps<\"div\"> {\n /** Animation variant: pulse (default) or shimmer (premium) */\n variant?: \"pulse\" | \"shimmer\";\n}\n\nfunction Skeleton({ className, variant = \"pulse\", ...props }: SkeletonProps) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\n \"rounded-md\",\n variant === \"shimmer\"\n ? \"skeleton-shimmer\"\n : \"bg-accent animate-pulse\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\nexport type { SkeletonProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"./utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { VariantProps, cva } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { useIsMobile } from \"./use-mobile\";\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Separator } from \"./separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\";\nimport { Skeleton } from \"./skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"./utils\";\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-4 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\",\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","\"use client\";\n\nimport { useTheme } from \"next-themes\";\nimport { Toaster as Sonner, ToasterProps } from \"sonner\";\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"./utils\";\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface TableProps extends React.ComponentProps<\"table\"> {}\nexport interface TableHeaderProps extends React.ComponentProps<\"thead\"> {}\nexport interface TableBodyProps extends React.ComponentProps<\"tbody\"> {}\nexport interface TableFooterProps extends React.ComponentProps<\"tfoot\"> {}\nexport interface TableRowProps extends React.ComponentProps<\"tr\"> {}\nexport interface TableHeadProps extends React.ComponentProps<\"th\"> {}\nexport interface TableCellProps extends React.ComponentProps<\"td\"> {}\nexport interface TableCaptionProps extends React.ComponentProps<\"caption\"> {}\n\n// ============================================================================\n// COMPONENTS\n// ============================================================================\n\nconst Table = React.forwardRef<HTMLTableElement, TableProps>(\n ({ className, ...props }, ref) => {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n ref={ref}\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n );\n }\n);\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ className, ...props }, ref) => {\n return (\n <thead\n ref={ref}\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n );\n }\n);\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ className, ...props }, ref) => {\n return (\n <tbody\n ref={ref}\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n }\n);\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<HTMLTableSectionElement, TableFooterProps>(\n ({ className, ...props }, ref) => {\n return (\n <tfoot\n ref={ref}\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n }\n);\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n TableRowProps\n>(({ className, ...props }, ref) => {\n return (\n <tr\n ref={ref}\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className,\n )}\n {...props}\n />\n );\n});\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, ...props }, ref) => {\n return (\n <th\n ref={ref}\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium\",\n \"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n }\n);\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, ...props }, ref) => {\n return (\n <td\n ref={ref}\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle\",\n \"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n }\n);\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<HTMLTableCaptionElement, TableCaptionProps>(\n ({ className, ...props }, ref) => {\n return (\n <caption\n ref={ref}\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n }\n);\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};","\"use client\";\n\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./select\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/**\n * Labels for internationalization\n */\nexport interface TablePaginationLabels {\n /** \"Anterior\" */\n previous?: string;\n /** \"Próxima\" */\n next?: string;\n /** \"Primeira\" */\n first?: string;\n /** \"Última\" */\n last?: string;\n /** \"Mostrando\" */\n showing?: string;\n /** \"de\" */\n of?: string;\n /** \"resultados\" */\n results?: string;\n /** \"Itens por página\" */\n itemsPerPage?: string;\n /** \"Página\" */\n page?: string;\n}\n\n/**\n * Props for the TablePagination component\n * \n * @example\n * ```tsx\n * // With useTablePagination hook\n * const pagination = useTablePagination(data, { pageSize: 10 });\n * \n * <TablePagination\n * currentPage={pagination.currentPage}\n * totalPages={pagination.totalPages}\n * pageSize={pagination.pageSize}\n * totalItems={pagination.totalItems}\n * onPageChange={pagination.goToPage}\n * onPageSizeChange={pagination.setPageSize}\n * />\n * ```\n */\nexport interface TablePaginationProps {\n /** Current page number (1-indexed) */\n currentPage: number;\n /** Total number of pages */\n totalPages: number;\n /** Current page size */\n pageSize: number;\n /** Total number of items */\n totalItems: number;\n /** Callback when page changes */\n onPageChange: (page: number) => void;\n /** Callback when page size changes */\n onPageSizeChange?: (size: number) => void;\n /** Available page size options */\n pageSizeOptions?: number[];\n /** Maximum number of visible page buttons */\n maxVisiblePages?: number;\n /** Show \"Showing X of Y\" info */\n showInfo?: boolean;\n /** Show page number buttons */\n showPageNumbers?: boolean;\n /** Show page size selector */\n showPageSizeSelector?: boolean;\n /** Show first/last page buttons */\n showFirstLastButtons?: boolean;\n /** Custom labels for i18n */\n labels?: TablePaginationLabels;\n /** Additional className */\n className?: string;\n}\n\n// ============================================================================\n// DEFAULT VALUES\n// ============================================================================\n\nconst defaultLabels: Required<TablePaginationLabels> = {\n previous: \"Anterior\",\n next: \"Próxima\",\n first: \"Primeira\",\n last: \"Última\",\n showing: \"Mostrando\",\n of: \"de\",\n results: \"resultados\",\n itemsPerPage: \"Itens por página\",\n page: \"Página\",\n};\n\nconst defaultPageSizeOptions = [10, 20, 30, 50, 100];\n\n// ============================================================================\n// HELPER FUNCTION\n// ============================================================================\n\n/**\n * Generate array of page numbers with ellipsis\n */\nfunction getPageNumbers(\n currentPage: number,\n totalPages: number,\n maxVisible: number = 5\n): (number | \"ellipsis\")[] {\n if (totalPages <= maxVisible) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: (number | \"ellipsis\")[] = [];\n const halfVisible = Math.floor(maxVisible / 2);\n\n // Always show first page\n pages.push(1);\n\n // Calculate middle range\n let start = Math.max(2, currentPage - halfVisible);\n let end = Math.min(totalPages - 1, currentPage + halfVisible);\n\n // Adjust if near start or end\n if (currentPage <= halfVisible + 1) {\n end = maxVisible - 1;\n } else if (currentPage >= totalPages - halfVisible) {\n start = totalPages - maxVisible + 2;\n }\n\n // Add ellipsis after first page if needed\n if (start > 2) {\n pages.push(\"ellipsis\");\n }\n\n // Add page numbers\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Add ellipsis before last page if needed\n if (end < totalPages - 1) {\n pages.push(\"ellipsis\");\n }\n\n // Always show last page\n if (totalPages > 1) {\n pages.push(totalPages);\n }\n\n return pages;\n}\n\n// ============================================================================\n// MAIN COMPONENT\n// ============================================================================\n\n/**\n * TablePagination Component\n * \n * A complete, ready-to-use pagination component for tables and data grids.\n * Integrates seamlessly with the `useTablePagination` hook.\n * \n * @example\n * ```tsx\n * import { useTablePagination, TablePagination, Table, TableBody, ... } from \"@iclips/ui\";\n * \n * function MyTable({ data }) {\n * const pagination = useTablePagination(data, { pageSize: 10 });\n * \n * return (\n * <>\n * <Table>\n * <TableBody>\n * {pagination.paginatedData.map(item => (\n * <TableRow key={item.id}>...</TableRow>\n * ))}\n * </TableBody>\n * </Table>\n * \n * <TablePagination\n * currentPage={pagination.currentPage}\n * totalPages={pagination.totalPages}\n * pageSize={pagination.pageSize}\n * totalItems={pagination.totalItems}\n * onPageChange={pagination.goToPage}\n * onPageSizeChange={pagination.setPageSize}\n * />\n * </>\n * );\n * }\n * ```\n * \n * @example\n * ```tsx\n * // Minimal usage (without page size selector)\n * <TablePagination\n * currentPage={1}\n * totalPages={10}\n * pageSize={20}\n * totalItems={200}\n * onPageChange={(page) => setCurrentPage(page)}\n * showPageSizeSelector={false}\n * />\n * ```\n */\nexport function TablePagination({\n currentPage,\n totalPages,\n pageSize,\n totalItems,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = defaultPageSizeOptions,\n maxVisiblePages = 5,\n showInfo = true,\n showPageNumbers = true,\n showPageSizeSelector = true,\n showFirstLastButtons = true,\n labels: customLabels,\n className,\n}: TablePaginationProps) {\n const labels = { ...defaultLabels, ...customLabels };\n const pages = getPageNumbers(currentPage, totalPages, maxVisiblePages);\n\n const startItem = (currentPage - 1) * pageSize + 1;\n const endItem = Math.min(currentPage * pageSize, totalItems);\n\n const hasPreviousPage = currentPage > 1;\n const hasNextPage = currentPage < totalPages;\n\n // Don't render if no pages\n if (totalPages === 0) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\",\n className\n )}\n role=\"navigation\"\n aria-label=\"Paginação da tabela\"\n >\n {/* Left side: Info text */}\n {showInfo && (\n <p className=\"text-sm text-muted-foreground order-2 sm:order-1\">\n {labels.showing}{\" \"}\n <span className=\"font-medium text-foreground\">{startItem}</span>\n {\" - \"}\n <span className=\"font-medium text-foreground\">{endItem}</span>\n {\" \"}{labels.of}{\" \"}\n <span className=\"font-medium text-foreground\">{totalItems}</span>\n {\" \"}{labels.results}\n </p>\n )}\n\n {/* Right side: Controls */}\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-4 order-1 sm:order-2\">\n {/* Page size selector */}\n {showPageSizeSelector && onPageSizeChange && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n {labels.itemsPerPage}\n </span>\n <Select\n value={String(pageSize)}\n onValueChange={(value) => onPageSizeChange(Number(value))}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue placeholder={pageSize} />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((option) => (\n <SelectItem key={option} value={String(option)}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n {/* Page info for small screens */}\n <span className=\"text-sm text-muted-foreground sm:hidden\">\n {labels.page} {currentPage} {labels.of} {totalPages}\n </span>\n\n {/* Navigation buttons */}\n <div className=\"flex items-center gap-1\">\n {/* First page button */}\n {showFirstLastButtons && (\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => onPageChange(1)}\n disabled={!hasPreviousPage}\n aria-label={labels.first}\n >\n <ChevronsLeft className=\"h-4 w-4\" />\n </Button>\n )}\n\n {/* Previous button */}\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={!hasPreviousPage}\n aria-label={labels.previous}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n\n {/* Page numbers */}\n {showPageNumbers && (\n <div className=\"hidden sm:flex items-center gap-1\">\n {pages.map((page, index) =>\n page === \"ellipsis\" ? (\n <span\n key={`ellipsis-${index}`}\n className=\"flex items-center justify-center w-8 h-8 text-muted-foreground\"\n aria-hidden\n >\n ...\n </span>\n ) : (\n <Button\n key={page}\n variant={currentPage === page ? \"default\" : \"outline\"}\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => onPageChange(page)}\n aria-label={`${labels.page} ${page}`}\n aria-current={currentPage === page ? \"page\" : undefined}\n >\n {page}\n </Button>\n )\n )}\n </div>\n )}\n\n {/* Next button */}\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={!hasNextPage}\n aria-label={labels.next}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n\n {/* Last page button */}\n {showFirstLastButtons && (\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => onPageChange(totalPages)}\n disabled={!hasNextPage}\n aria-label={labels.last}\n >\n <ChevronsRight className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nTablePagination.displayName = \"TablePagination\";\n\n// ============================================================================\n// EXPORTS\n// ============================================================================\n\nexport { getPageNumbers };\n","/**\n * Utility types for DataTable implementations\n * \n * These types provide standard interfaces for common DataTable patterns\n * like sorting, pagination, column definitions, and selection.\n */\n\n// ============================================================================\n// SORT TYPES\n// ============================================================================\n\n/**\n * Direction of sorting\n */\nexport type SortDirection = \"asc\" | \"desc\" | null;\n\n/**\n * Sort configuration for a table\n * \n * @example\n * ```tsx\n * const [sortConfig, setSortConfig] = useState<SortConfig<User>>({\n * column: \"name\",\n * direction: \"asc\"\n * });\n * ```\n */\nexport interface SortConfig<T> {\n column: keyof T | null;\n direction: SortDirection;\n}\n\n// ============================================================================\n// COLUMN TYPES\n// ============================================================================\n\n/**\n * Column definition for a DataTable\n * \n * @example\n * ```tsx\n * const columns: ColumnDef<User>[] = [\n * {\n * key: \"name\",\n * header: \"Name\",\n * sortable: true,\n * width: \"200px\"\n * },\n * {\n * key: \"email\",\n * header: \"Email\",\n * render: (value, row) => <a href={`mailto:${value}`}>{value}</a>\n * }\n * ];\n * ```\n */\nexport interface ColumnDef<T extends Record<string, any>> {\n /** Key of the data property to display */\n key: keyof T;\n\n /** Header label or React node */\n header: string | React.ReactNode;\n\n /** Whether this column is sortable */\n sortable?: boolean;\n\n /** Column width (CSS value) */\n width?: string | number;\n\n /** Text alignment */\n align?: \"left\" | \"center\" | \"right\";\n\n /** Custom render function for the cell content */\n render?: (value: T[keyof T], row: T, index: number) => React.ReactNode;\n\n /** Additional className for the cell */\n className?: string;\n\n /** Additional className for the header */\n headerClassName?: string;\n}\n\n// ============================================================================\n// PAGINATION TYPES\n// ============================================================================\n\n/**\n * Pagination configuration\n * \n * @example\n * ```tsx\n * const [pagination, setPagination] = useState<PaginationConfig>({\n * currentPage: 1,\n * pageSize: 10,\n * totalItems: 100\n * });\n * ```\n */\nexport interface PaginationConfig {\n /** Current page number (1-indexed) */\n currentPage: number;\n\n /** Number of items per page */\n pageSize: number;\n\n /** Total number of items */\n totalItems: number;\n\n /** Callback when page changes */\n onPageChange?: (page: number) => void;\n\n /** Callback when page size changes */\n onPageSizeChange?: (size: number) => void;\n}\n\n/**\n * Helper to calculate pagination metadata\n */\nexport interface PaginationMetadata {\n totalPages: number;\n startIndex: number;\n endIndex: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n}\n\n// ============================================================================\n// SELECTION TYPES\n// ============================================================================\n\n/**\n * Selection state for table rows\n * \n * @example\n * ```tsx\n * const [selection, setSelection] = useState<SelectionState>({\n * selectedIds: new Set([\"1\", \"2\"]),\n * isAllSelected: false\n * });\n * ```\n */\nexport interface SelectionState {\n /** Set of selected row IDs */\n selectedIds: Set<string | number>;\n\n /** Whether all rows are selected */\n isAllSelected: boolean;\n}\n\n// ============================================================================\n// TABLE STATE TYPES\n// ============================================================================\n\n/**\n * Complete table state with all common features\n * \n * @example\n * ```tsx\n * const [tableState, setTableState] = useState<TableState<User>>({\n * data: users,\n * sort: { column: \"name\", direction: \"asc\" },\n * pagination: { currentPage: 1, pageSize: 10, totalItems: 100 },\n * selection: { selectedIds: new Set(), isAllSelected: false }\n * });\n * ```\n */\nexport interface TableState<T extends Record<string, any>> {\n /** Table data */\n data: T[];\n\n /** Sort configuration */\n sort?: SortConfig<T>;\n\n /** Pagination configuration */\n pagination?: PaginationConfig;\n\n /** Selection state */\n selection?: SelectionState;\n\n /** Loading state */\n isLoading?: boolean;\n\n /** Error state */\n error?: string | null;\n}\n\n// ============================================================================\n// FILTER TYPES\n// ============================================================================\n\n/**\n * Filter operator types\n */\nexport type FilterOperator =\n | \"equals\"\n | \"contains\"\n | \"startsWith\"\n | \"endsWith\"\n | \"greaterThan\"\n | \"lessThan\"\n | \"between\"\n | \"in\";\n\n/**\n * Filter configuration for a column\n * \n * @example\n * ```tsx\n * const filters: FilterConfig<User>[] = [\n * {\n * column: \"status\",\n * operator: \"in\",\n * value: [\"active\", \"pending\"]\n * },\n * {\n * column: \"age\",\n * operator: \"greaterThan\",\n * value: 18\n * }\n * ];\n * ```\n */\nexport interface FilterConfig<T> {\n column: keyof T;\n operator: FilterOperator;\n value: any;\n}\n\n// ============================================================================\n// DRAG & DROP TYPES\n// ============================================================================\n\n/**\n * Configuration for draggable rows\n */\nexport interface DragDropConfig {\n /** Whether drag and drop is enabled */\n enabled: boolean;\n\n /** Callback when a row is dropped */\n onDrop?: (dragIndex: number, dropIndex: number) => void;\n\n /** Custom drag handle component */\n dragHandle?: React.ReactNode;\n}\n\n// ============================================================================\n// ROW EXPANSION TYPES\n// ============================================================================\n\n/**\n * Configuration for expandable rows\n * \n * @example\n * ```tsx\n * const expandConfig: RowExpansionConfig<User> = {\n * enabled: true,\n * expandedRows: new Set([\"1\", \"3\"]),\n * renderExpandedContent: (row) => (\n * <div>Details for {row.name}</div>\n * )\n * };\n * ```\n */\nexport interface RowExpansionConfig<T extends Record<string, any>> {\n /** Whether row expansion is enabled */\n enabled: boolean;\n\n /** Set of expanded row IDs */\n expandedRows?: Set<string | number>;\n\n /** Callback when row expansion changes */\n onExpansionChange?: (rowId: string | number, isExpanded: boolean) => void;\n\n /** Custom content to render when row is expanded */\n renderExpandedContent?: (row: T, index: number) => React.ReactNode;\n}\n\n// ============================================================================\n// UTILITY FUNCTIONS TYPES\n// ============================================================================\n\n/**\n * Sort function type\n */\nexport type SortFunction<T extends Record<string, any>> = (a: T, b: T, config: SortConfig<T>) => number;\n\n/**\n * Filter function type\n */\nexport type FilterFunction<T extends Record<string, any>> = (row: T, filters: FilterConfig<T>[]) => boolean;\n\n/**\n * Helper function to calculate pagination metadata\n */\nexport function calculatePaginationMetadata(\n config: PaginationConfig\n): PaginationMetadata {\n const { currentPage, pageSize, totalItems } = config;\n const totalPages = Math.ceil(totalItems / pageSize);\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = Math.min(startIndex + pageSize, totalItems);\n\n return {\n totalPages,\n startIndex,\n endIndex,\n hasNextPage: currentPage < totalPages,\n hasPreviousPage: currentPage > 1,\n };\n}","import { useState, useMemo } from \"react\";\nimport { PaginationConfig, PaginationMetadata, calculatePaginationMetadata } from \"../components/ui/table-types\";\n\ninterface UseTablePaginationProps {\n /** Array of items to be paginated */\n data: any[];\n /** Initial page size */\n initialPageSize?: number;\n /** Whether to reset to first page when data changes */\n resetOnDataChange?: boolean;\n}\n\ninterface UseTablePaginationReturn {\n /** Current page number (1-indexed) */\n currentPage: number;\n /** Current page size */\n pageSize: number;\n /** Total number of items in the data array */\n totalItems: number;\n /** Total number of pages */\n totalPages: number;\n /** The subset of data for the current page */\n paginatedData: any[];\n /** Go to specific page */\n goToPage: (page: number) => void;\n /** Go to next page if available */\n nextPage: () => void;\n /** Go to previous page if available */\n prevPage: () => void;\n /** Change page size and reset to first page */\n setPageSize: (size: number) => void;\n /** Computed metadata usually needed for TablePagination component */\n paginationConfig: PaginationConfig;\n /** Full metadata including hasNext/hasPrev */\n metadata: PaginationMetadata;\n}\n\n/**\n * Hook to manage pagination state and logic for tables.\n * \n * @example\n * ```tsx\n * const { paginatedData, paginationConfig, goToPage, setPageSize } = useTablePagination({\n * data: allUsers,\n * initialPageSize: 10\n * });\n * \n * return (\n * <>\n * <Table data={paginatedData} />\n * <TablePagination \n * {...paginationConfig} \n * onPageChange={goToPage}\n * onPageSizeChange={setPageSize}\n * />\n * </>\n * )\n * ```\n */\nexport function useTablePagination({\n data,\n initialPageSize = 10,\n resetOnDataChange = true\n}: UseTablePaginationProps): UseTablePaginationReturn {\n const [currentPage, setCurrentPage] = useState(1);\n const [pageSize, setPageSize] = useState(initialPageSize);\n\n // Reset to first page when data length changes drastically, if desired\n useMemo(() => {\n if (resetOnDataChange) {\n setCurrentPage(1);\n }\n }, [data.length, resetOnDataChange]);\n\n const totalItems = data.length;\n const totalPages = Math.ceil(totalItems / pageSize);\n\n // Ensure current page is valid\n const safeCurrentPage = Math.min(Math.max(1, currentPage), Math.max(1, totalPages));\n\n // Calculate slice indices\n const startIndex = (safeCurrentPage - 1) * pageSize;\n const endIndex = Math.min(startIndex + pageSize, totalItems);\n\n // Get current page data\n const paginatedData = useMemo(() => {\n return data.slice(startIndex, endIndex);\n }, [data, startIndex, endIndex]);\n\n const goToPage = (page: number) => {\n const targetPage = Math.max(1, Math.min(page, totalPages));\n setCurrentPage(targetPage);\n };\n\n const nextPage = () => {\n if (currentPage < totalPages) {\n setCurrentPage(p => p + 1);\n }\n };\n\n const prevPage = () => {\n if (currentPage > 1) {\n setCurrentPage(p => p - 1);\n }\n };\n\n const handleSetPageSize = (newSize: number) => {\n setPageSize(newSize);\n setCurrentPage(1); // Usually best UX to reset to page 1 on size change\n };\n\n const paginationConfig: PaginationConfig = {\n currentPage: safeCurrentPage,\n pageSize,\n totalItems,\n onPageChange: goToPage,\n onPageSizeChange: handleSetPageSize\n };\n\n const metadata = calculatePaginationMetadata(paginationConfig);\n\n return {\n currentPage: safeCurrentPage,\n pageSize,\n totalItems,\n totalPages,\n paginatedData,\n goToPage,\n nextPage,\n prevPage,\n setPageSize: handleSetPageSize,\n paginationConfig,\n metadata\n };\n}\n","import { useState, useMemo } from \"react\";\nimport {\n SortConfig,\n SortDirection,\n FilterConfig,\n FilterOperator,\n TableState\n} from \"../components/ui/table-types\";\nimport { useTablePagination } from \"./use-table-pagination\";\n\ninterface UseDataTableProps<T> {\n data: T[];\n initialSort?: SortConfig<T>;\n initialPageSize?: number;\n enablePagination?: boolean;\n}\n\ninterface UseDataTableReturn<T> {\n /** The processed data to be displayed (filtered, sorted, and optionally paginated) */\n data: T[];\n /** State helpers */\n state: {\n sort: SortConfig<T>;\n filters: FilterConfig<T>[];\n pagination: ReturnType<typeof useTablePagination>[\"paginationConfig\"];\n };\n /** Handlers */\n handlers: {\n /** Toggle sort for a column. Cycles through: asc -> desc -> null (or reset) */\n onSort: (column: keyof T) => void;\n /** Apply a filter */\n setFilter: (column: keyof T, value: any, operator?: FilterOperator) => void;\n /** Remove a filter */\n removeFilter: (column: keyof T) => void;\n /** Clear all filters */\n clearFilters: () => void;\n };\n /** Helper to get aria-sort attribute for a column */\n getSortDirection: (column: keyof T) => SortDirection;\n}\n\n/**\n * Composite hook that manages Sorting, Filtering and Pagination for a Data Table.\n */\nexport function useDataTable<T>({\n data,\n initialSort = { column: null, direction: null },\n initialPageSize = 10,\n enablePagination = true\n}: UseDataTableProps<T>): UseDataTableReturn<T> {\n\n // --- Sorting State ---\n const [sortConfig, setSortConfig] = useState<SortConfig<T>>(initialSort);\n\n // --- Filtering State ---\n const [filters, setFilters] = useState<FilterConfig<T>[]>([]);\n\n // --- 1. Filtering Logic ---\n const filteredData = useMemo(() => {\n if (filters.length === 0) return data;\n\n return data.filter(item => {\n return filters.every(filter => {\n const itemValue = item[filter.column];\n\n switch (filter.operator) {\n case \"equals\": return itemValue == filter.value;\n case \"contains\":\n return String(itemValue).toLowerCase().includes(String(filter.value).toLowerCase());\n case \"startsWith\":\n return String(itemValue).toLowerCase().startsWith(String(filter.value).toLowerCase());\n case \"greaterThan\": return itemValue > filter.value;\n case \"lessThan\": return itemValue < filter.value;\n default: return true;\n }\n });\n });\n }, [data, filters]);\n\n // --- 2. Sorting Logic ---\n const sortedData = useMemo(() => {\n if (!sortConfig.column || !sortConfig.direction) return filteredData;\n\n return [...filteredData].sort((a, b) => {\n const aValue = a[sortConfig.column!];\n const bValue = b[sortConfig.column!];\n\n if (aValue < bValue) return sortConfig.direction === \"asc\" ? -1 : 1;\n if (aValue > bValue) return sortConfig.direction === \"asc\" ? 1 : -1;\n return 0;\n });\n }, [filteredData, sortConfig]);\n\n // --- 3. Pagination Logic ---\n // We pass the SORTED data to pagination, so we paginate the final result\n const pagination = useTablePagination({\n data: sortedData,\n initialPageSize,\n resetOnDataChange: true // Reset to page 1 if filters change\n });\n\n // --- Handlers ---\n const handleSort = (column: keyof T) => {\n setSortConfig(current => {\n if (current.column === column) {\n // Cycle: asc -> desc -> null\n if (current.direction === \"asc\") return { column, direction: \"desc\" };\n if (current.direction === \"desc\") return { column: null, direction: null };\n }\n return { column, direction: \"asc\" };\n });\n };\n\n const setFilter = (column: keyof T, value: any, operator: FilterOperator = \"contains\") => {\n setFilters(prev => {\n const existing = prev.filter(f => f.column !== column);\n if (value === \"\" || value === null || value === undefined) {\n return existing;\n }\n return [...existing, { column, operator, value }];\n });\n };\n\n const removeFilter = (column: keyof T) => {\n setFilters(prev => prev.filter(f => f.column !== column));\n };\n\n const getSortDirection = (column: keyof T): SortDirection => {\n return sortConfig.column === column ? sortConfig.direction : null;\n };\n\n return {\n data: enablePagination ? pagination.paginatedData : sortedData,\n state: {\n sort: sortConfig,\n filters,\n pagination: pagination.paginationConfig\n },\n handlers: {\n onSort: handleSort,\n setFilter,\n removeFilter,\n clearFilters: () => setFilters([])\n },\n getSortDirection\n };\n}\n","import { X } from \"lucide-react\";\nimport { cn } from \"./utils\";\nimport { Badge } from \"./badge\";\n\nexport interface FilterChipProps {\n label: string;\n value?: string;\n onRemove?: () => void;\n className?: string;\n}\n\nexport function FilterChip({ label, value, onRemove, className }: FilterChipProps) {\n return (\n <Badge\n variant=\"secondary\"\n className={cn(\n \"gap-1 pr-1 pl-2 h-7\",\n onRemove && \"pr-1\",\n className\n )}\n >\n <span className=\"text-sm\">\n {label}\n {value && (\n <>\n : <span className=\"font-semibold\">{value}</span>\n </>\n )}\n </span>\n {onRemove && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"ml-1 rounded-sm hover:bg-muted p-0.5 transition-colors\"\n aria-label={`Remove ${label} filter`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </Badge>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\nimport { Filter, X } from \"lucide-react\";\nimport { FilterChip } from \"./filter-chip\";\n\nexport interface ActiveFilter {\n id: string;\n label: string;\n value?: string;\n onRemove?: () => void;\n}\n\nexport interface FilterBarProps {\n activeFilters?: ActiveFilter[];\n onClearAll?: () => void;\n onOpenFilters?: () => void;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function FilterBar({\n activeFilters = [],\n onClearAll,\n onOpenFilters,\n className,\n children,\n}: FilterBarProps) {\n const hasFilters = activeFilters.length > 0;\n\n return (\n <div className={cn(\"flex items-center gap-2 flex-wrap\", className)}>\n {/* Filter Button */}\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onOpenFilters}\n className=\"gap-2\"\n >\n <Filter className=\"h-4 w-4\" />\n Filters\n {hasFilters && (\n <span className=\"ml-1 rounded-full bg-primary text-primary-foreground w-5 h-5 text-xs flex items-center justify-center\">\n {activeFilters.length}\n </span>\n )}\n </Button>\n\n {/* Active Filters */}\n {hasFilters && (\n <>\n <div className=\"h-4 w-px bg-border\" />\n {activeFilters.map((filter) => (\n <FilterChip\n key={filter.id}\n label={filter.label}\n value={filter.value}\n onRemove={filter.onRemove}\n />\n ))}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClearAll}\n className=\"gap-1 h-7 px-2\"\n >\n <X className=\"h-3 w-3\" />\n Clear all\n </Button>\n </>\n )}\n\n {/* Additional Content */}\n {children}\n </div>\n );\n}","import { cn } from \"./utils\";\nimport { Button } from \"./button\";\nimport { Plus, X } from \"lucide-react\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { Badge } from \"./badge\";\nimport { Input } from \"./input\";\nimport { Checkbox } from \"./checkbox\";\nimport { Label } from \"./label\";\n\nexport interface FilterCondition {\n id: string;\n field: string;\n operator: string;\n value: string | string[]; // Support multi-select\n}\n\nexport interface FilterField {\n value: string;\n label: string;\n type?: \"text\" | \"number\" | \"select\" | \"date\";\n options?: { value: string; label: string }[]; // For select fields\n multiSelect?: boolean; // Enable multi-select for this field\n}\n\nexport interface FilterBuilderProps {\n conditions: FilterCondition[];\n onConditionsChange: (conditions: FilterCondition[]) => void;\n fields: FilterField[];\n className?: string;\n}\n\n// Operator definitions with multi-select support\nconst OPERATORS = [\n { value: \"is\", label: \"é\", multiSelect: false },\n { value: \"is_not\", label: \"não é\", multiSelect: false },\n { value: \"is_any_of\", label: \"é qualquer um de\", multiSelect: true },\n { value: \"is_none_of\", label: \"não é nenhum de\", multiSelect: true },\n { value: \"contains\", label: \"contém\", multiSelect: false },\n { value: \"does_not_contain\", label: \"não contém\", multiSelect: false },\n { value: \"greater_than\", label: \"maior que\", multiSelect: false },\n { value: \"less_than\", label: \"menor que\", multiSelect: false },\n { value: \"is_empty\", label: \"está vazio\", multiSelect: false },\n { value: \"is_not_empty\", label: \"não está vazio\", multiSelect: false },\n];\n\nexport function FilterBuilder({\n conditions,\n onConditionsChange,\n fields,\n className,\n}: FilterBuilderProps) {\n const addCondition = () => {\n const newCondition: FilterCondition = {\n id: Math.random().toString(36).substr(2, 9),\n field: fields[0]?.value || \"\",\n operator: \"is\",\n value: \"\",\n };\n onConditionsChange([...conditions, newCondition]);\n };\n\n const removeCondition = (id: string) => {\n onConditionsChange(conditions.filter((c) => c.id !== id));\n };\n\n const updateCondition = (id: string, updates: Partial<FilterCondition>) => {\n onConditionsChange(\n conditions.map((c) => (c.id === id ? { ...c, ...updates } : c))\n );\n };\n\n return (\n <div className={cn(\"space-y-3\", className)}>\n {/* Conditions */}\n {conditions.length === 0 ? (\n <div className=\"text-center py-8 text-muted-foreground text-sm\">\n Nenhuma condição de filtro. Clique em \"Adicionar condição\" para começar.\n </div>\n ) : (\n conditions.map((condition, index) => (\n <ConditionRow\n key={condition.id}\n condition={condition}\n fields={fields}\n index={index}\n onUpdate={(updates) => updateCondition(condition.id, updates)}\n onRemove={() => removeCondition(condition.id)}\n />\n ))\n )}\n\n {/* Add Condition Button */}\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={addCondition}\n className=\"gap-2\"\n >\n <Plus className=\"h-4 w-4\" />\n Adicionar condição\n </Button>\n </div>\n );\n}\n\ninterface ConditionRowProps {\n condition: FilterCondition;\n fields: FilterField[];\n index: number;\n onUpdate: (updates: Partial<FilterCondition>) => void;\n onRemove: () => void;\n}\n\nfunction ConditionRow({\n condition,\n fields,\n index,\n onUpdate,\n onRemove,\n}: ConditionRowProps) {\n const selectedField = fields.find((f) => f.value === condition.field);\n const selectedOperator = OPERATORS.find((op) => op.value === condition.operator);\n \n // Multi-select enabled if field has multiSelect: true OR operator requires it\n const isMultiSelect = selectedField?.multiSelect || selectedOperator?.multiSelect || false;\n const needsValue = ![\"is_empty\", \"is_not_empty\"].includes(condition.operator);\n\n // Convert value to array for multi-select\n const valueAsArray = Array.isArray(condition.value)\n ? condition.value\n : condition.value\n ? [condition.value]\n : [];\n\n const toggleValue = (val: string) => {\n if (!isMultiSelect) {\n onUpdate({ value: val });\n return;\n }\n\n const currentValues = Array.isArray(condition.value) ? condition.value : [];\n const newValues = currentValues.includes(val)\n ? currentValues.filter((v) => v !== val)\n : [...currentValues, val];\n onUpdate({ value: newValues });\n };\n\n const removeValue = (val: string) => {\n if (!isMultiSelect) return;\n const currentValues = Array.isArray(condition.value) ? condition.value : [];\n onUpdate({ value: currentValues.filter((v) => v !== val) });\n };\n\n return (\n <div className=\"flex items-start gap-2 group\">\n {/* Index */}\n <div className=\"flex items-center h-9 px-2 text-sm text-muted-foreground\">\n {index === 0 ? \"Onde\" : \"E\"}\n </div>\n\n {/* Condition Display */}\n <div className=\"flex-1 flex items-center gap-2 flex-wrap p-2 border rounded-lg bg-background\">\n {/* Field Selector */}\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 font-normal hover:bg-muted\"\n >\n {selectedField?.label || \"Selecionar campo\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-2\" align=\"start\">\n <div className=\"space-y-1\">\n {fields.map((field) => (\n <Button\n key={field.value}\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"w-full justify-start\",\n condition.field === field.value && \"bg-muted\"\n )}\n onClick={() => \n onUpdate({ \n field: field.value, \n value: field.multiSelect ? [] : \"\" \n })\n }\n >\n {field.label}\n </Button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Operator Selector */}\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 font-normal hover:bg-muted text-muted-foreground\"\n >\n {selectedOperator?.label || \"is\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-2\" align=\"start\">\n <div className=\"space-y-1\">\n {OPERATORS.map((op) => (\n <Button\n key={op.value}\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"w-full justify-start\",\n condition.operator === op.value && \"bg-muted\"\n )}\n onClick={() =>\n onUpdate({\n operator: op.value,\n value: op.multiSelect ? [] : \"\",\n })\n }\n >\n {op.label}\n </Button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Value Selector/Input */}\n {needsValue && (\n <>\n {selectedField?.options ? (\n // Select field with options\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 font-normal hover:bg-muted\"\n >\n {isMultiSelect && valueAsArray.length > 0 ? (\n <span className=\"flex items-center gap-1\">\n {valueAsArray.length} selecionado{valueAsArray.length > 1 ? 's' : ''}\n </span>\n ) : !isMultiSelect && condition.value ? (\n selectedField.options.find(\n (opt) => opt.value === condition.value\n )?.label || \"Selecionar valor\"\n ) : (\n \"Selecionar valor\"\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[240px] p-3\" align=\"start\">\n <div className=\"space-y-2\">\n <Label className=\"text-xs text-muted-foreground\">\n {isMultiSelect ? \"Selecionar valores\" : \"Selecionar valor\"}\n </Label>\n <div className=\"space-y-2 max-h-[200px] overflow-y-auto\">\n {selectedField.options.map((option) => {\n const isSelected = isMultiSelect\n ? valueAsArray.includes(option.value)\n : condition.value === option.value;\n\n return (\n <div\n key={option.value}\n className=\"flex items-center space-x-2\"\n >\n {isMultiSelect ? (\n <>\n <Checkbox\n id={`${condition.id}-${option.value}`}\n checked={isSelected}\n onCheckedChange={() =>\n toggleValue(option.value)\n }\n />\n <label\n htmlFor={`${condition.id}-${option.value}`}\n className=\"text-sm cursor-pointer flex-1\"\n >\n {option.label}\n </label>\n </>\n ) : (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"w-full justify-start\",\n isSelected && \"bg-muted\"\n )}\n onClick={() => onUpdate({ value: option.value })}\n >\n {option.label}\n </Button>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n ) : (\n // Text/Number input\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 font-normal hover:bg-muted max-w-[200px] truncate\"\n >\n {condition.value || \"Inserir valor\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[240px] p-3\" align=\"start\">\n <div className=\"space-y-2\">\n <Label className=\"text-xs text-muted-foreground\">\n Inserir valor\n </Label>\n <Input\n type={selectedField?.type === \"number\" ? \"number\" : \"text\"}\n value={\n Array.isArray(condition.value) ? \"\" : condition.value\n }\n onChange={(e) => onUpdate({ value: e.target.value })}\n placeholder=\"Digite o valor...\"\n autoFocus\n />\n </div>\n </PopoverContent>\n </Popover>\n )}\n\n {/* Multi-select chips */}\n {isMultiSelect && valueAsArray.length > 0 && (\n <div className=\"flex items-center gap-1 flex-wrap\">\n {valueAsArray.map((val) => {\n const optionLabel =\n selectedField?.options?.find((opt) => opt.value === val)\n ?.label || val;\n return (\n <Badge\n key={val}\n variant=\"secondary\"\n className=\"gap-1 h-6 text-xs\"\n >\n {optionLabel}\n <button\n type=\"button\"\n onClick={() => removeValue(val)}\n className=\"ml-1 rounded-sm hover:bg-muted p-0.5 transition-colors\"\n aria-label={`Remover ${optionLabel}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n );\n })}\n </div>\n )}\n </>\n )}\n </div>\n\n {/* Remove Button */}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={onRemove}\n className=\"h-9 w-9 p-0 opacity-0 group-hover:opacity-100 transition-opacity\"\n aria-label=\"Remover condição\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n );\n}","import React, { useState } from \"react\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./table\";\nimport { TablePagination } from \"./table-pagination\";\nimport { Input } from \"./input\";\nimport { Button } from \"./button\";\nimport { ArrowUpDown, Search, Filter as FilterIcon } from \"lucide-react\";\nimport { useDataTable } from \"../../hooks/use-data-table\";\nimport { ColumnDef, FilterOperator } from \"./table-types\";\nimport { cn } from \"./utils\";\nimport { FilterBar, ActiveFilter } from \"./filter-bar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { FilterBuilder, FilterCondition, FilterField } from \"./filter-builder\";\n\ninterface DataTableProps<T extends Record<string, any>> {\n data: T[];\n columns: ColumnDef<T>[];\n \n // Search configuration\n searchPlaceholder?: string;\n searchableColumns?: (keyof T)[]; // Columns that can be searched\n enableSearch?: boolean;\n \n // Filter configuration\n filterFields?: FilterField[]; // Advanced filter fields\n enableFilters?: boolean;\n \n // Pagination\n pageSizeOptions?: number[];\n initialPageSize?: number;\n \n // Additional toolbar content\n toolbarActions?: React.ReactNode;\n \n className?: string;\n}\n\nexport function DataTable<T extends Record<string, any>>({\n data,\n columns,\n searchPlaceholder = \"Buscar...\",\n searchableColumns,\n enableSearch = true,\n filterFields = [],\n enableFilters = false,\n pageSizeOptions = [5, 10, 20, 50],\n initialPageSize = 10,\n toolbarActions,\n className,\n}: DataTableProps<T>) {\n const {\n data: processedData,\n state,\n handlers,\n getSortDirection,\n } = useDataTable({\n data,\n initialPageSize,\n initialSort: { column: null, direction: null },\n });\n\n // Search state - separate from filters\n const [searchQuery, setSearchQuery] = useState(\"\");\n \n // Advanced filter state\n const [filterDialogOpen, setFilterDialogOpen] = useState(false);\n const [advancedFilters, setAdvancedFilters] = useState<FilterCondition[]>([]);\n\n // Auto-detect searchable column\n const defaultSearchColumn = searchableColumns \n ? searchableColumns[0]\n : (columns.find(c => c.key === \"nome\" || c.key === \"name\" || c.key === \"title\" || c.key === \"titulo\")?.key || columns[0]?.key);\n\n // Handle search - applies to the first searchable column\n const handleSearchChange = (value: string) => {\n setSearchQuery(value);\n handlers.setFilter(defaultSearchColumn, value, \"contains\");\n };\n\n // Convert advanced filters to active filter chips\n const activeFilterChips: ActiveFilter[] = advancedFilters.map((filter) => {\n const field = filterFields.find(f => f.value === filter.field);\n const operatorLabel = filter.operator === \"is\" ? \"\" : ` ${filter.operator}`;\n const valueLabel = Array.isArray(filter.value) \n ? filter.value.join(\", \")\n : filter.value;\n \n return {\n id: filter.id,\n label: field?.label || filter.field,\n value: `${operatorLabel} ${valueLabel}`.trim(),\n onRemove: () => {\n const updated = advancedFilters.filter(f => f.id !== filter.id);\n setAdvancedFilters(updated);\n applyAdvancedFilters(updated);\n }\n };\n });\n\n // Apply advanced filters to the table state\n const applyAdvancedFilters = (filters: FilterCondition[]) => {\n // Clear existing advanced filters (keep search)\n handlers.clearFilters();\n if (searchQuery) {\n handlers.setFilter(defaultSearchColumn, searchQuery, \"contains\");\n }\n \n // Apply new advanced filters\n filters.forEach(filter => {\n const operator = mapFilterOperator(filter.operator);\n handlers.setFilter(filter.field as keyof T, filter.value, operator);\n });\n };\n\n // Map FilterBuilder operators to table FilterOperator\n const mapFilterOperator = (operator: string): FilterOperator => {\n switch (operator) {\n case \"is\": return \"equals\";\n case \"contains\": return \"contains\";\n case \"starts_with\": return \"startsWith\";\n case \"greater_than\": return \"greaterThan\";\n case \"less_than\": return \"lessThan\";\n default: return \"contains\";\n }\n };\n\n const handleApplyFilters = () => {\n applyAdvancedFilters(advancedFilters);\n setFilterDialogOpen(false);\n };\n\n const handleClearAllFilters = () => {\n setAdvancedFilters([]);\n handlers.clearFilters();\n if (searchQuery) {\n handlers.setFilter(defaultSearchColumn, searchQuery, \"contains\");\n }\n };\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n {/* Toolbar */}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2 flex-1\">\n {/* Search */}\n {enableSearch && (\n <div className=\"relative max-w-sm flex-1\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none\" />\n <Input\n placeholder={searchPlaceholder}\n value={searchQuery}\n onChange={(event) => handleSearchChange(event.target.value)}\n className=\"pl-9\"\n />\n </div>\n )}\n \n {/* Advanced Filters */}\n {enableFilters && filterFields.length > 0 && (\n <Popover open={filterDialogOpen} onOpenChange={setFilterDialogOpen}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"gap-2\">\n <FilterIcon className=\"h-4 w-4\" />\n Filtros\n {advancedFilters.length > 0 && (\n <span className=\"ml-1 rounded-full bg-primary text-primary-foreground w-5 h-5 text-xs flex items-center justify-center\">\n {advancedFilters.length}\n </span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[700px] p-0\" align=\"start\" sideOffset={8}>\n <div className=\"p-6 border-b\">\n <h3 className=\"font-semibold\">Filtros Avançados</h3>\n <p className=\"text-sm text-muted-foreground mt-1\">\n Adicione condições de filtro para refinar os resultados.\n </p>\n </div>\n \n <div className=\"p-6\">\n <FilterBuilder\n conditions={advancedFilters}\n onConditionsChange={setAdvancedFilters}\n fields={filterFields}\n />\n </div>\n\n <div className=\"flex items-center justify-end gap-2 p-4 border-t bg-muted/50\">\n <Button \n variant=\"outline\" \n size=\"sm\"\n onClick={() => setFilterDialogOpen(false)}\n >\n Cancelar\n </Button>\n <Button \n size=\"sm\"\n onClick={handleApplyFilters}\n >\n Aplicar Filtros\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n )}\n </div>\n\n {/* Custom Actions */}\n {toolbarActions && (\n <div className=\"flex items-center gap-2\">\n {toolbarActions}\n </div>\n )}\n </div>\n\n {/* Active Filter Chips */}\n {advancedFilters.length > 0 && (\n <FilterBar\n activeFilters={activeFilterChips}\n onClearAll={handleClearAllFilters}\n />\n )}\n\n {/* Table */}\n <div className=\"rounded-md border\">\n <Table>\n <TableHeader>\n <TableRow>\n {columns.map((column) => (\n <TableHead\n key={String(column.key)}\n className={cn(\n column.headerClassName,\n column.sortable && \"cursor-pointer select-none hover:bg-muted/50 transition-colors\"\n )}\n style={{ width: column.width }}\n onClick={() => column.sortable && handlers.onSort(column.key)}\n aria-sort={column.sortable ? (getSortDirection(column.key) === \"asc\" ? \"ascending\" : getSortDirection(column.key) === \"desc\" ? \"descending\" : \"none\") : undefined}\n >\n <div className={cn(\"flex items-center gap-2\", column.align ? `justify-${column.align}` : \"justify-start\")}>\n {column.header}\n {column.sortable && (\n <ArrowUpDown className={cn(\"h-4 w-4\", getSortDirection(column.key) ? \"opacity-100\" : \"opacity-40\")} />\n )}\n </div>\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {processedData.length > 0 ? (\n processedData.map((row, rowIndex) => (\n <TableRow key={rowIndex}>\n {columns.map((column) => (\n <TableCell\n key={String(column.key)}\n className={cn(column.className, column.align ? `text-${column.align}` : \"text-left\")}\n >\n {column.render\n ? column.render(row[column.key], row, rowIndex)\n : (row[column.key] as React.ReactNode)}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n Nenhum resultado encontrado.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination */}\n <TablePagination\n currentPage={state.pagination.currentPage}\n totalPages={Math.ceil(state.pagination.totalItems / state.pagination.pageSize)}\n pageSize={state.pagination.pageSize}\n totalItems={state.pagination.totalItems}\n onPageChange={state.pagination.onPageChange || (() => {})}\n onPageSizeChange={state.pagination.onPageSizeChange}\n pageSizeOptions={pageSizeOptions}\n />\n </div>\n );\n}\n","import { useState } from \"react\";\nimport { DataTable } from \"./data-table\";\nimport { ColumnDef } from \"./table-types\";\nimport { FilterField } from \"./filter-builder\";\nimport { Badge } from \"./badge\";\nimport { Button } from \"./button\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"./dropdown-menu\";\nimport { MoreVertical, Plus, Download } from \"lucide-react\";\nimport { Card } from \"./card\";\n\n// Example data types\ninterface Campaign {\n id: string;\n name: string;\n client: string;\n status: 'active' | 'paused' | 'completed' | 'draft';\n budget: number;\n spent: number;\n startDate: string;\n endDate: string;\n}\n\n// Sample data\nconst sampleCampaigns: Campaign[] = [\n {\n id: '1',\n name: 'Campanha de Natal 2025',\n client: 'Coca-Cola',\n status: 'active',\n budget: 50000,\n spent: 32000,\n startDate: '2025-12-01',\n endDate: '2025-12-25',\n },\n {\n id: '2',\n name: 'Black Friday Especial',\n client: 'Nike',\n status: 'completed',\n budget: 80000,\n spent: 78500,\n startDate: '2025-11-15',\n endDate: '2025-11-30',\n },\n {\n id: '3',\n name: 'Lançamento Produto X',\n client: 'Apple',\n status: 'active',\n budget: 120000,\n spent: 45000,\n startDate: '2025-12-05',\n endDate: '2026-01-15',\n },\n {\n id: '4',\n name: 'Campanha Verão',\n client: 'Havaianas',\n status: 'paused',\n budget: 35000,\n spent: 18000,\n startDate: '2025-11-20',\n endDate: '2026-02-28',\n },\n {\n id: '5',\n name: 'Awareness Brand',\n client: 'Google',\n status: 'draft',\n budget: 95000,\n spent: 0,\n startDate: '2026-01-01',\n endDate: '2026-03-31',\n },\n {\n id: '6',\n name: 'Retargeting Q4',\n client: 'Amazon',\n status: 'active',\n budget: 65000,\n spent: 42000,\n startDate: '2025-10-01',\n endDate: '2025-12-31',\n },\n {\n id: '7',\n name: 'Social Media Boost',\n client: 'Nike',\n status: 'active',\n budget: 28000,\n spent: 15000,\n startDate: '2025-11-01',\n endDate: '2025-12-31',\n },\n {\n id: '8',\n name: 'Email Campaign',\n client: 'Coca-Cola',\n status: 'completed',\n budget: 12000,\n spent: 11500,\n startDate: '2025-10-15',\n endDate: '2025-11-15',\n },\n];\n\n/**\n * Example component demonstrating the enhanced DataTable with Search + Filters\n */\nexport function DataTableExample() {\n const [campaigns] = useState<Campaign[]>(sampleCampaigns);\n\n // Column definitions\n const columns: ColumnDef<Campaign>[] = [\n {\n key: 'name',\n header: 'Campanha',\n sortable: true,\n width: '25%',\n className: 'font-medium',\n },\n {\n key: 'client',\n header: 'Cliente',\n sortable: true,\n },\n {\n key: 'status',\n header: 'Status',\n sortable: true,\n render: (value) => {\n const variants: Record<Campaign['status'], any> = {\n active: 'default',\n paused: 'secondary',\n completed: 'outline',\n draft: 'secondary',\n };\n const labels: Record<Campaign['status'], string> = {\n active: 'Ativa',\n paused: 'Pausada',\n completed: 'Concluída',\n draft: 'Rascunho',\n };\n return (\n <Badge variant={variants[value as Campaign['status']]}>\n {labels[value as Campaign['status']]}\n </Badge>\n );\n },\n },\n {\n key: 'budget',\n header: 'Orçamento',\n align: 'right',\n sortable: true,\n render: (value) => `R$ ${(value as number).toLocaleString('pt-BR')}`,\n },\n {\n key: 'spent',\n header: 'Gasto',\n align: 'right',\n sortable: true,\n render: (value, row) => {\n const spent = value as number;\n const budget = row.budget;\n const percentage = (spent / budget) * 100;\n const color = percentage > 90 ? 'text-red-600' : percentage > 70 ? 'text-orange-600' : 'text-green-600';\n \n return (\n <div className=\"text-right\">\n <div className={color}>R$ {spent.toLocaleString('pt-BR')}</div>\n <div className=\"text-xs text-muted-foreground\">\n {percentage.toFixed(0)}%\n </div>\n </div>\n );\n },\n },\n {\n key: 'startDate',\n header: 'Início',\n sortable: true,\n render: (value) => new Date(value as string).toLocaleDateString('pt-BR'),\n },\n {\n key: 'id',\n header: 'Ações',\n align: 'right',\n width: '80px',\n render: (id, row) => (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"sm\">\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => console.log('View', row)}>\n Ver detalhes\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => console.log('Edit', row)}>\n Editar\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => console.log('Duplicate', row)}>\n Duplicar\n </DropdownMenuItem>\n <DropdownMenuItem \n onClick={() => console.log('Delete', id)}\n className=\"text-destructive\"\n >\n Excluir\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n ),\n },\n ];\n\n // Filter field definitions\n const filterFields: FilterField[] = [\n {\n value: 'status',\n label: 'Status',\n type: 'select',\n options: [\n { value: 'active', label: 'Ativa' },\n { value: 'paused', label: 'Pausada' },\n { value: 'completed', label: 'Concluída' },\n { value: 'draft', label: 'Rascunho' },\n ],\n multiSelect: true, // Allow selecting multiple statuses\n },\n {\n value: 'client',\n label: 'Cliente',\n type: 'select',\n options: [\n { value: 'Coca-Cola', label: 'Coca-Cola' },\n { value: 'Nike', label: 'Nike' },\n { value: 'Apple', label: 'Apple' },\n { value: 'Havaianas', label: 'Havaianas' },\n { value: 'Google', label: 'Google' },\n { value: 'Amazon', label: 'Amazon' },\n ],\n },\n {\n value: 'budget',\n label: 'Orçamento',\n type: 'number',\n },\n {\n value: 'startDate',\n label: 'Data de Início',\n type: 'date',\n },\n ];\n\n const handleExport = () => {\n console.log('Exporting campaigns...', campaigns);\n // Implementation for export functionality\n };\n\n const handleCreateNew = () => {\n console.log('Creating new campaign...');\n // Implementation for create functionality\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n {/* Page Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold tracking-tight\">Campanhas</h1>\n <p className=\"text-muted-foreground mt-2\">\n Gerencie suas campanhas de publicidade e acompanhe o desempenho\n </p>\n </div>\n <Button onClick={handleCreateNew}>\n <Plus className=\"h-4 w-4 mr-2\" />\n Nova Campanha\n </Button>\n </div>\n\n {/* Stats Cards */}\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4\">\n <Card className=\"p-4\">\n <div className=\"text-sm text-muted-foreground\">Total de Campanhas</div>\n <div className=\"text-2xl font-bold mt-1\">{campaigns.length}</div>\n </Card>\n <Card className=\"p-4\">\n <div className=\"text-sm text-muted-foreground\">Campanhas Ativas</div>\n <div className=\"text-2xl font-bold mt-1 text-green-600\">\n {campaigns.filter(c => c.status === 'active').length}\n </div>\n </Card>\n <Card className=\"p-4\">\n <div className=\"text-sm text-muted-foreground\">Orçamento Total</div>\n <div className=\"text-2xl font-bold mt-1\">\n R$ {campaigns.reduce((sum, c) => sum + c.budget, 0).toLocaleString('pt-BR')}\n </div>\n </Card>\n <Card className=\"p-4\">\n <div className=\"text-sm text-muted-foreground\">Total Gasto</div>\n <div className=\"text-2xl font-bold mt-1\">\n R$ {campaigns.reduce((sum, c) => sum + c.spent, 0).toLocaleString('pt-BR')}\n </div>\n </Card>\n </div>\n\n {/* Enhanced DataTable */}\n <Card className=\"p-6\">\n <DataTable\n data={campaigns}\n columns={columns}\n searchPlaceholder=\"Buscar por campanha ou cliente...\"\n searchableColumns={['name', 'client']}\n enableSearch={true}\n enableFilters={true}\n filterFields={filterFields}\n initialPageSize={10}\n pageSizeOptions={[5, 10, 20, 50]}\n toolbarActions={\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={handleExport}>\n <Download className=\"h-4 w-4 mr-2\" />\n Exportar\n </Button>\n </>\n }\n />\n </Card>\n\n {/* Usage Note */}\n <Card className=\"p-4 bg-blue-50 dark:bg-blue-950/20 border-blue-200 dark:border-blue-900\">\n <div className=\"text-sm\">\n <strong>💡 Dica:</strong> Use o campo de busca para encontrar campanhas rapidamente. \n Use os filtros avançados para combinar múltiplas condições (ex: \"Status = Ativa\" E \"Cliente = Nike\").\n </div>\n </Card>\n </div>\n );\n}\n","import { cn } from \"./utils\";\nimport { Button } from \"./button\";\nimport { Star, Trash2, Download } from \"lucide-react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\";\n\nexport interface SavedFilter {\n id: string;\n name: string;\n description?: string;\n isFavorite?: boolean;\n filterCount?: number;\n}\n\nexport interface SavedFiltersProps {\n filters?: SavedFilter[];\n onSelectFilter?: (filterId: string) => void;\n onToggleFavorite?: (filterId: string) => void;\n onDeleteFilter?: (filterId: string) => void;\n className?: string;\n}\n\nexport function SavedFilters({\n filters = [],\n onSelectFilter,\n onToggleFavorite,\n onDeleteFilter,\n className,\n}: SavedFiltersProps) {\n const favoriteFilters = filters.filter((f) => f.isFavorite);\n const otherFilters = filters.filter((f) => !f.isFavorite);\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className={cn(\"gap-2\", className)}>\n <Download className=\"h-4 w-4\" />\n Saved Filters\n {filters.length > 0 && (\n <span className=\"text-xs text-muted-foreground\">\n ({filters.length})\n </span>\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-[280px]\">\n {filters.length === 0 ? (\n <div className=\"px-2 py-6 text-center text-sm text-muted-foreground\">\n No saved filters yet\n </div>\n ) : (\n <>\n {favoriteFilters.length > 0 && (\n <>\n <div className=\"px-2 py-1.5 text-xs font-semibold text-muted-foreground\">\n Favorites\n </div>\n {favoriteFilters.map((filter) => (\n <FilterMenuItem\n key={filter.id}\n filter={filter}\n onSelect={onSelectFilter}\n onToggleFavorite={onToggleFavorite}\n onDelete={onDeleteFilter}\n />\n ))}\n {otherFilters.length > 0 && <DropdownMenuSeparator />}\n </>\n )}\n\n {otherFilters.length > 0 && (\n <>\n {favoriteFilters.length > 0 && (\n <div className=\"px-2 py-1.5 text-xs font-semibold text-muted-foreground\">\n All Filters\n </div>\n )}\n {otherFilters.map((filter) => (\n <FilterMenuItem\n key={filter.id}\n filter={filter}\n onSelect={onSelectFilter}\n onToggleFavorite={onToggleFavorite}\n onDelete={onDeleteFilter}\n />\n ))}\n </>\n )}\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\ninterface FilterMenuItemProps {\n filter: SavedFilter;\n onSelect?: (filterId: string) => void;\n onToggleFavorite?: (filterId: string) => void;\n onDelete?: (filterId: string) => void;\n}\n\nfunction FilterMenuItem({\n filter,\n onSelect,\n onToggleFavorite,\n onDelete,\n}: FilterMenuItemProps) {\n return (\n <div className=\"flex items-center gap-1 px-2 py-1.5 hover:bg-muted rounded-sm group\">\n {/* Favorite Toggle */}\n <button\n onClick={(e) => {\n e.stopPropagation();\n onToggleFavorite?.(filter.id);\n }}\n className=\"p-1 hover:bg-accent rounded-sm\"\n >\n <Star\n className={cn(\n \"h-3.5 w-3.5\",\n filter.isFavorite\n ? \"fill-yellow-500 text-yellow-500\"\n : \"text-muted-foreground\"\n )}\n />\n </button>\n\n {/* Filter Name & Description */}\n <button\n onClick={() => onSelect?.(filter.id)}\n className=\"flex-1 text-left px-2\"\n >\n <div className=\"text-sm\">{filter.name}</div>\n {filter.description && (\n <div className=\"text-xs text-muted-foreground\">\n {filter.description}\n </div>\n )}\n {filter.filterCount !== undefined && (\n <div className=\"text-xs text-muted-foreground mt-0.5\">\n {filter.filterCount} {filter.filterCount === 1 ? \"filter\" : \"filters\"}\n </div>\n )}\n </button>\n\n {/* Delete Button */}\n <button\n onClick={(e) => {\n e.stopPropagation();\n onDelete?.(filter.id);\n }}\n className=\"p-1 hover:bg-accent rounded-sm opacity-0 group-hover:opacity-100 transition-opacity\"\n >\n <Trash2 className=\"h-3.5 w-3.5 text-destructive\" />\n </button>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"./utils\";\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-xl p-[3px] flex\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-card dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-xl border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"./utils\";\n\ninterface UnderlineTabsContextValue {\n value: string;\n onValueChange: (value: string) => void;\n}\n\nconst UnderlineTabsContext = React.createContext<UnderlineTabsContextValue | undefined>(undefined);\n\nfunction useUnderlineTabs() {\n const context = React.useContext(UnderlineTabsContext);\n if (!context) {\n throw new Error(\"UnderlineTabs components must be used within UnderlineTabs\");\n }\n return context;\n}\n\ninterface UnderlineTabsProps {\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function UnderlineTabs({\n defaultValue,\n value: controlledValue,\n onValueChange,\n children,\n className,\n}: UnderlineTabsProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue || \"\");\n \n const value = controlledValue !== undefined ? controlledValue : internalValue;\n \n const handleValueChange = (newValue: string) => {\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n onValueChange?.(newValue);\n };\n\n return (\n <UnderlineTabsContext.Provider value={{ value, onValueChange: handleValueChange }}>\n <div className={cn(\"w-full\", className)} role=\"tablist\">\n {children}\n </div>\n </UnderlineTabsContext.Provider>\n );\n}\n\ninterface UnderlineTabsListProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function UnderlineTabsList({ children, className }: UnderlineTabsListProps) {\n return (\n <div className={cn(\"border-b border-border bg-background\", className)}>\n <div className=\"flex\">{children}</div>\n </div>\n );\n}\n\ninterface UnderlineTabsTriggerProps {\n value: string;\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n}\n\nexport function UnderlineTabsTrigger({\n value: triggerValue,\n children,\n className,\n disabled = false,\n}: UnderlineTabsTriggerProps) {\n const { value, onValueChange } = useUnderlineTabs();\n const isActive = value === triggerValue;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-disabled={disabled}\n disabled={disabled}\n onClick={() => !disabled && onValueChange(triggerValue)}\n className={cn(\n \"px-4 h-12 text-sm font-medium border-b-2 transition-colors relative\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n isActive\n ? \"border-primary text-primary\"\n : \"border-transparent text-muted-foreground hover:text-foreground hover:border-border\",\n className\n )}\n >\n {children}\n </button>\n );\n}\n\ninterface UnderlineTabsContentProps {\n value: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function UnderlineTabsContent({\n value: contentValue,\n children,\n className,\n}: UnderlineTabsContentProps) {\n const { value } = useUnderlineTabs();\n \n if (value !== contentValue) {\n return null;\n }\n\n return (\n <div\n role=\"tabpanel\"\n aria-labelledby={contentValue}\n className={cn(\"mt-4\", className)}\n >\n {children}\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"resize-none border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-input-background px-3 py-2 text-base transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\nimport { toggleVariants } from \"./toggle\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n className,\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l\",\n className,\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n","/**\n * Illustration System - iClips Design System\n * \n * Reusable SVG illustrations for empty states and onboarding.\n * These follow the iClips brand colors (Purple #7F26BF as primary).\n */\n\nimport { cn } from \"./utils\";\n\ninterface IllustrationProps {\n className?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n /** Primary color - defaults to purple-500 */\n primaryColor?: string;\n /** Secondary color - defaults to purple-100 */\n secondaryColor?: string;\n}\n\nconst sizeClasses = {\n sm: \"w-24 h-24\",\n md: \"w-32 h-32\",\n lg: \"w-48 h-48\",\n};\n\n/**\n * Empty Inbox Illustration\n * Use for: No messages, no notifications, cleared inbox\n */\nexport function EmptyInboxIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--purple-500)\",\n secondaryColor = \"var(--purple-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Inbox box */}\n <rect x=\"30\" y=\"45\" width=\"60\" height=\"40\" rx=\"4\" fill={primaryColor} opacity=\"0.2\" />\n <rect x=\"30\" y=\"45\" width=\"60\" height=\"15\" rx=\"4\" fill={primaryColor} />\n\n {/* Inbox opening */}\n <path d=\"M35 60 L60 75 L85 60\" stroke={primaryColor} strokeWidth=\"3\" fill=\"none\" />\n\n {/* Sparkles */}\n <circle cx=\"25\" cy=\"35\" r=\"3\" fill={primaryColor} opacity=\"0.6\" />\n <circle cx=\"95\" cy=\"40\" r=\"2\" fill={primaryColor} opacity=\"0.4\" />\n <circle cx=\"100\" cy=\"70\" r=\"2.5\" fill={primaryColor} opacity=\"0.5\" />\n </svg>\n );\n}\n\n/**\n * Empty Search Illustration \n * Use for: No results found, empty search\n */\nexport function EmptySearchIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--purple-500)\",\n secondaryColor = \"var(--purple-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Magnifying glass */}\n <circle cx=\"52\" cy=\"52\" r=\"22\" stroke={primaryColor} strokeWidth=\"4\" fill=\"none\" />\n <line x1=\"68\" y1=\"68\" x2=\"88\" y2=\"88\" stroke={primaryColor} strokeWidth=\"4\" strokeLinecap=\"round\" />\n\n {/* X mark (no results) */}\n <line x1=\"45\" y1=\"45\" x2=\"59\" y2=\"59\" stroke={primaryColor} strokeWidth=\"3\" strokeLinecap=\"round\" opacity=\"0.6\" />\n <line x1=\"59\" y1=\"45\" x2=\"45\" y2=\"59\" stroke={primaryColor} strokeWidth=\"3\" strokeLinecap=\"round\" opacity=\"0.6\" />\n </svg>\n );\n}\n\n/**\n * Empty Projects Illustration\n * Use for: No projects, no campaigns, empty folder\n */\nexport function EmptyProjectsIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--purple-500)\",\n secondaryColor = \"var(--purple-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Folder back */}\n <path d=\"M25 40 L25 85 L95 85 L95 45 L55 45 L50 40 Z\" fill={primaryColor} opacity=\"0.3\" />\n\n {/* Folder front */}\n <path d=\"M25 50 L25 85 L95 85 L95 50 Z\" fill={primaryColor} opacity=\"0.6\" />\n\n {/* Plus sign */}\n <line x1=\"60\" y1=\"60\" x2=\"60\" y2=\"76\" stroke=\"white\" strokeWidth=\"3\" strokeLinecap=\"round\" />\n <line x1=\"52\" y1=\"68\" x2=\"68\" y2=\"68\" stroke=\"white\" strokeWidth=\"3\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\n/**\n * Empty Calendar Illustration\n * Use for: No events, no deadlines, clear schedule\n */\nexport function EmptyCalendarIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--purple-500)\",\n secondaryColor = \"var(--purple-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Calendar body */}\n <rect x=\"28\" y=\"35\" width=\"64\" height=\"55\" rx=\"4\" fill={primaryColor} opacity=\"0.2\" />\n <rect x=\"28\" y=\"35\" width=\"64\" height=\"15\" rx=\"4\" fill={primaryColor} />\n\n {/* Calendar rings */}\n <rect x=\"40\" y=\"30\" width=\"4\" height=\"12\" rx=\"2\" fill={primaryColor} />\n <rect x=\"76\" y=\"30\" width=\"4\" height=\"12\" rx=\"2\" fill={primaryColor} />\n\n {/* Calendar grid (simplified) */}\n <circle cx=\"45\" cy=\"62\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n <circle cx=\"60\" cy=\"62\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n <circle cx=\"75\" cy=\"62\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n <circle cx=\"45\" cy=\"77\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n <circle cx=\"60\" cy=\"77\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n <circle cx=\"75\" cy=\"77\" r=\"3\" fill={primaryColor} opacity=\"0.3\" />\n </svg>\n );\n}\n\n/**\n * Error State Illustration\n * Use for: Error loading, something went wrong\n */\nexport function ErrorStateIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--red-500)\",\n secondaryColor = \"var(--red-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Alert triangle */}\n <path d=\"M60 30 L90 80 L30 80 Z\" fill={primaryColor} opacity=\"0.2\" stroke={primaryColor} strokeWidth=\"3\" />\n\n {/* Exclamation mark */}\n <line x1=\"60\" y1=\"48\" x2=\"60\" y2=\"62\" stroke={primaryColor} strokeWidth=\"4\" strokeLinecap=\"round\" />\n <circle cx=\"60\" cy=\"70\" r=\"2.5\" fill={primaryColor} />\n </svg>\n );\n}\n\n/**\n * Success State Illustration\n * Use for: Action completed, all done\n */\nexport function SuccessStateIllustration({\n className,\n size = \"md\",\n primaryColor = \"var(--green-500)\",\n secondaryColor = \"var(--green-100)\",\n}: IllustrationProps) {\n return (\n <svg\n className={cn(sizeClasses[size], className)}\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Background circle */}\n <circle cx=\"60\" cy=\"60\" r=\"55\" fill={secondaryColor} opacity=\"0.5\" />\n\n {/* Success circle */}\n <circle cx=\"60\" cy=\"60\" r=\"30\" fill={primaryColor} opacity=\"0.2\" stroke={primaryColor} strokeWidth=\"3\" />\n\n {/* Checkmark */}\n <path d=\"M45 60 L55 70 L75 50\" stroke={primaryColor} strokeWidth=\"4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" fill=\"none\" />\n </svg>\n );\n}\n\n// Export all illustrations\nexport const Illustrations = {\n EmptyInbox: EmptyInboxIllustration,\n EmptySearch: EmptySearchIllustration,\n EmptyProjects: EmptyProjectsIllustration,\n EmptyCalendar: EmptyCalendarIllustration,\n ErrorState: ErrorStateIllustration,\n SuccessState: SuccessStateIllustration,\n};\n\nexport type { IllustrationProps };\n","import { cn } from \"../ui/utils\";\nimport { PrintHeader } from \"./shared/PrintHeader\";\nimport { PrintFooter } from \"./shared/PrintFooter\";\nimport { PrintSection } from \"./shared/PrintSection\";\nimport { PrintInfoGrid } from \"./shared/PrintInfoGrid\";\nimport { PrintTable } from \"./shared/PrintTable\";\nimport { PrintSignature } from \"./shared/PrintSignature\";\n\nexport interface ProposalData {\n // Informações da proposta\n proposalNumber: string;\n issueDate: string;\n validUntil: string;\n \n // Informações do cliente\n client: {\n name: string;\n contact?: string;\n email?: string;\n phone?: string;\n };\n \n // Informações da agência\n agency: {\n name: string;\n representative?: string;\n email?: string;\n phone?: string;\n };\n \n // Título e descrição do projeto\n projectTitle: string;\n projectDescription?: string;\n \n // Objetivos\n objectives?: string[];\n \n // Serviços/Itens da proposta\n items: Array<{\n name: string;\n description?: string;\n quantity?: number;\n unitPrice?: number;\n totalPrice: number;\n }>;\n \n // Valores\n subtotal: number;\n discount?: number;\n total: number;\n \n // Condições\n paymentConditions?: string;\n deliveryTime?: string;\n \n // Observações\n notes?: string;\n}\n\ninterface ProposalTemplateProps {\n data: ProposalData;\n showPreview?: boolean;\n logo?: string;\n}\n\nexport function ProposalTemplate({\n data,\n showPreview = false,\n logo,\n}: ProposalTemplateProps) {\n const formatCurrency = (value: number) => {\n return new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n }).format(value);\n };\n\n const formatDate = (dateStr: string) => {\n return new Date(dateStr).toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n };\n\n return (\n <div\n className={cn(\n \"proposal-template bg-white text-black\",\n showPreview\n ? \"shadow-lg rounded-lg p-8 max-w-5xl mx-auto my-8\"\n : \"p-0\"\n )}\n style={{\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n fontSize: \"12pt\",\n lineHeight: \"1.6\",\n }}\n >\n {/* Cabeçalho */}\n <PrintHeader\n logo={logo}\n companyName={data.agency.name}\n contactInfo={{\n email: data.agency.email,\n phone: data.agency.phone,\n }}\n documentType=\"Proposta Comercial\"\n documentNumber={data.proposalNumber}\n issueDate={formatDate(data.issueDate)}\n />\n\n {/* Informações Principais */}\n <PrintSection>\n <PrintInfoGrid\n columns={2}\n items={[\n {\n label: \"Nº da Proposta\",\n value: data.proposalNumber,\n highlight: true,\n },\n {\n label: \"Validade\",\n value: formatDate(data.validUntil),\n },\n {\n label: \"Cliente\",\n value: data.client.name,\n highlight: true,\n },\n ...(data.client.contact\n ? [{ label: \"Contato\", value: data.client.contact }]\n : []),\n ]}\n />\n </PrintSection>\n\n {/* Projeto */}\n <PrintSection title=\"Projeto\">\n <h3 className=\"text-base font-semibold text-primary mb-3\">\n {data.projectTitle}\n </h3>\n {data.projectDescription && (\n <p className=\"text-sm text-gray-700 leading-relaxed\">\n {data.projectDescription}\n </p>\n )}\n </PrintSection>\n\n {/* Objetivos */}\n {data.objectives && data.objectives.length > 0 && (\n <PrintSection title=\"Objetivos\">\n <ul className=\"list-disc list-inside space-y-2\">\n {data.objectives.map((objective, index) => (\n <li key={index} className=\"text-sm text-gray-700\">\n {objective}\n </li>\n ))}\n </ul>\n </PrintSection>\n )}\n\n {/* Serviços/Itens */}\n <PrintSection title=\"Escopo e Investimento\">\n <PrintTable\n columns={[\n { header: \"Item\", key: \"name\", width: \"35%\" },\n { header: \"Descrição\", key: \"description\", width: \"30%\" },\n {\n header: \"Qtd.\",\n key: \"quantity\",\n align: \"center\",\n width: \"10%\",\n render: (value) => value || \"-\",\n },\n {\n header: \"Valor Unit.\",\n key: \"unitPrice\",\n align: \"right\",\n width: \"12.5%\",\n render: (value) => (value ? formatCurrency(value) : \"-\"),\n },\n {\n header: \"Valor Total\",\n key: \"totalPrice\",\n align: \"right\",\n width: \"12.5%\",\n render: (value) => formatCurrency(value),\n },\n ]}\n data={data.items}\n striped\n density=\"comfortable\"\n />\n\n {/* Totais */}\n <div className=\"mt-6 flex justify-end\">\n <div className=\"w-80 space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-gray-600\">Subtotal:</span>\n <span className=\"font-semibold\">\n {formatCurrency(data.subtotal)}\n </span>\n </div>\n \n {data.discount && data.discount > 0 && (\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-gray-600\">Desconto:</span>\n <span className=\"font-semibold text-green-600\">\n - {formatCurrency(data.discount)}\n </span>\n </div>\n )}\n \n <div className=\"border-t-2 border-primary pt-2 flex justify-between\">\n <span className=\"font-semibold text-base\">Total:</span>\n <span className=\"font-semibold text-lg text-primary\">\n {formatCurrency(data.total)}\n </span>\n </div>\n </div>\n </div>\n </PrintSection>\n\n {/* Condições Comerciais */}\n {(data.paymentConditions || data.deliveryTime) && (\n <PrintSection title=\"Condições Comerciais\">\n <PrintInfoGrid\n columns={1}\n items={[\n ...(data.paymentConditions\n ? [\n {\n label: \"Forma de Pagamento\",\n value: data.paymentConditions,\n },\n ]\n : []),\n ...(data.deliveryTime\n ? [{ label: \"Prazo de Entrega\", value: data.deliveryTime }]\n : []),\n ]}\n />\n </PrintSection>\n )}\n\n {/* Observações */}\n {data.notes && (\n <PrintSection title=\"Observações\">\n <p className=\"text-sm text-gray-700 leading-relaxed\">{data.notes}</p>\n </PrintSection>\n )}\n\n {/* Aprovação */}\n <PrintSignature\n signatures={[\n {\n label: \"APROVAÇÃO DO CLIENTE\",\n name: data.client.name,\n role: data.client.contact,\n },\n ]}\n layout=\"vertical\"\n instructionText=\"Para aprovar esta proposta, assine abaixo e retorne para o e-mail indicado no cabeçalho.\"\n />\n\n {/* Rodapé */}\n <PrintFooter\n pageNumber={1}\n totalPages={1}\n footerText={`Proposta válida até ${formatDate(data.validUntil)}`}\n />\n </div>\n );\n}\n"],"names":["cn","inputs","twMerge","clsx","Accordion","props","AccordionPrimitive","AccordionItem","className","jsx","AccordionTrigger","children","jsxs","ChevronDownIcon","AccordionContent","buttonVariants","cva","Button","React","variant","size","asChild","ref","Comp","Slot","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","alertVariants","Alert","AlertTitle","AlertDescription","ScrollArea","ScrollAreaPrimitive","ScrollBar","orientation","badgeVariants","Badge","svgPathsSymbol","svgPathsPositive","svgPathsNegative","BrandLogo","mode","DEFAULT_PRIMARY_NAV_ITEMS","Home","Folder","Users","Calendar","BarChart3","Settings","DEFAULT_SECONDARY_NAV_ITEMS","LayoutGrid","FileText","Star","MessageSquare","Download","Sparkles","AppLayout","title","theme","onThemeToggle","primaryNavItems","secondaryNavItems","secondaryNavTitle","activePrimaryItem","onPrimaryItemClick","logoComponent","hideSecondaryNav","defaultPrimaryNavPinned","defaultSecondaryNavOpen","isPrimaryNavPinned","setIsPrimaryNavPinned","isPrimaryNavHovered","setIsPrimaryNavHovered","isSecondaryNavOpen","setIsSecondaryNavOpen","activeItem","setActiveItem","_a","isPrimaryNavExpanded","handlePrimaryItemClick","id","Pin","item","Icon","isActive","Plus","index","ChevronRight","Zap","PanelLeftClose","PanelLeft","Bell","AspectRatio","AspectRatioPrimitive","Avatar","AvatarPrimitive","AvatarImage","AvatarFallback","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis","MoreHorizontal","buildFormatLongFn","args","options","width","buildLocalizeFn","value","context","valuesArray","defaultWidth","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","key","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","formatDistanceLocale","formatDistance","token","count","result","tokenValue","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","date","weekday","formatRelative","_baseDate","_options","format","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","localize","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","ptBR","classNames","showOutsideDays","locale","DayPicker","ChevronLeft","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","ERROR_IMG_SRC","ImageWithFallback","didError","setDidError","useState","handleError","src","alt","style","PrintHeader","logo","companyName","contactInfo","documentType","documentNumber","issueDate","PrintFooter","pageNumber","totalPages","footerText","showGeneratedDate","currentDate","PrintSection","subtitle","avoidBreak","pageBreak","PrintInfoGrid","items","columns","gridClass","PrintTable","data","striped","bordered","density","paddingClass","column","row","rowIndex","colIndex","displayValue","PrintSignature","signatures","layout","showLine","instructionText","signature","ContractTemplate","showPreview","showServices","formatCurrency","formatDate","dateStr","clause","dadosContratoExemplo","usePrintContract","contentRef","contractNumber","onPrintStart","onPrintSuccess","onPrintError","onDownloadStart","onDownloadSuccess","onDownloadError","content","printWindow","error","ContractPrint","showActions","showSummary","showInfo","printRef","printContract","downloadPDF","Printer","Eye","ContractPrintPreview","CarouselContext","useCarousel","Carousel","opts","setApi","plugins","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","CarouselContent","CarouselItem","CarouselPrevious","ArrowLeft","CarouselNext","ArrowRight","THEMES","ChartContext","useChart","ChartContainer","config","uniqueId","chartId","ChartStyle","RechartsPrimitive","colorConfig","prefix","itemConfig","color","ChartTooltip","ChartTooltipContent","active","payload","indicator","hideLabel","hideIndicator","label","labelFormatter","labelClassName","formatter","nameKey","labelKey","tooltipLabel","getPayloadConfigFromPayload","nestLabel","indicatorColor","Fragment","ChartLegend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey","Checkbox","CheckboxPrimitive","Check","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","align","sideOffset","PopoverAnchor","Input","type","Label","LabelPrimitive","ColorPicker","onChange","disabled","setColor","open","setOpen","handleColorChange","newColor","handleInputChange","e","inputValue","HexColorPicker","presetColor","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectLabel","SelectItem","CheckIcon","SelectSeparator","ChevronUpIcon","generateHours","hours","max","start","i","generateMinutes","step","minutes","to12HourFormat","hour","period","to24HourFormat","isTimeInRange","time","minTime","maxTime","h","m","timeMinutes","minH","minM","maxH","maxM","TimePicker","minuteStep","placeholder","showIcon","minute","setPeriod","updateTime","newHour","newMinute","newPeriod","timeStr","cleaned","formatted","Clock","displayHour","p","DatePicker","minDate","maxDate","dateFormat","showTime","timeFormat","defaultTime","name","displayFormat","currentTime","handleDateSelect","handleTimeChange","newDate","today","CalendarIcon","getDefaultPresets","subDays","startOfMonth","subMonths","endOfMonth","DateRangePicker","numberOfMonths","presets","showDefaultPresets","allPresets","startTime","endTime","range","handleStartTimeChange","newFrom","handleEndTimeChange","newTo","handlePresetSelect","preset","newRange","sh","sm","eh","em","fromStr","toStr","Progress","ProgressPrimitive","DropdownMenu","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuCheckboxItem","checked","DropdownMenuRadioGroup","DropdownMenuRadioItem","CircleIcon","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","ChevronRightIcon","DropdownMenuSubContent","priorityConfig","KanbanCard","description","coverImage","thumbnailImage","tags","assignees","priority","dueDate","comments","attachments","checklist","progress","status","isDragging","onClick","onEdit","onDelete","onDuplicate","isOverdue","priorityStyle","day","month","handleCardClick","MoreVertical","tag","AlertCircle","CheckSquare","Paperclip","assignee","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DialogContent","XIcon","DialogHeader","DialogFooter","DialogTitle","DialogDescription","Command","CommandPrimitive","CommandDialog","CommandInput","SearchIcon","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut","ContextMenu","ContextMenuPrimitive","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","ContextMenuSubTrigger","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","ContextMenuCheckboxItem","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut","Drawer","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","DrawerContent","DrawerHeader","DrawerFooter","DrawerTitle","DrawerDescription","Form","FormProvider","FormFieldContext","FormField","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","useFormContext","formState","useFormState","fieldState","FormItem","FormLabel","formItemId","FormControl","formDescriptionId","formMessageId","FormDescription","FormMessage","body","HoverCard","HoverCardPrimitive","HoverCardTrigger","HoverCardContent","InputOTP","containerClassName","OTPInput","InputOTPGroup","InputOTPSlot","inputOTPContext","OTPInputContext","char","hasFakeCaret","InputOTPSeparator","MinusIcon","Menubar","MenubarPrimitive","MenubarMenu","MenubarGroup","MenubarPortal","MenubarRadioGroup","MenubarTrigger","MenubarContent","alignOffset","MenubarItem","MenubarCheckboxItem","MenubarRadioItem","MenubarLabel","MenubarSeparator","MenubarShortcut","MenubarSub","MenubarSubTrigger","MenubarSubContent","NavigationMenu","viewport","NavigationMenuPrimitive","NavigationMenuViewport","NavigationMenuList","NavigationMenuItem","navigationMenuTriggerStyle","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","Pagination","PaginationContent","PaginationItem","PaginationLink","PaginationPrevious","ChevronLeftIcon","PaginationNext","PaginationEllipsis","MoreHorizontalIcon","RadioGroup","RadioGroupPrimitive","RadioGroupItem","ResizablePanelGroup","ResizablePrimitive","ResizablePanel","ResizableHandle","withHandle","GripVerticalIcon","Separator","decorative","SeparatorPrimitive","Sheet","SheetPrimitive","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","SheetContent","side","SheetHeader","SheetFooter","SheetTitle","SheetDescription","MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","mql","Skeleton","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","SidebarProvider","defaultOpen","openProp","setOpenProp","openMobile","setOpenMobile","_open","_setOpen","openState","toggleSidebar","state","contextValue","Sidebar","collapsible","SidebarTrigger","PanelLeftIcon","SidebarRail","SidebarInset","SidebarHeader","SidebarFooter","SidebarSeparator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SidebarMenuButton","tooltip","button","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","Slider","defaultValue","min","_values","SliderPrimitive","_","Toaster","useTheme","Sonner","Switch","SwitchPrimitive","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","defaultLabels","defaultPageSizeOptions","getPageNumbers","currentPage","maxVisible","pages","halfVisible","end","TablePagination","pageSize","totalItems","onPageChange","onPageSizeChange","pageSizeOptions","maxVisiblePages","showPageNumbers","showPageSizeSelector","showFirstLastButtons","customLabels","labels","startItem","endItem","hasPreviousPage","hasNextPage","option","ChevronsLeft","page","ChevronsRight","calculatePaginationMetadata","startIndex","endIndex","useTablePagination","initialPageSize","resetOnDataChange","setCurrentPage","setPageSize","useMemo","safeCurrentPage","paginatedData","goToPage","targetPage","nextPage","prevPage","handleSetPageSize","newSize","paginationConfig","metadata","useDataTable","initialSort","enablePagination","sortConfig","setSortConfig","filters","setFilters","filteredData","filter","itemValue","sortedData","a","b","aValue","bValue","pagination","handleSort","current","setFilter","operator","prev","existing","f","removeFilter","getSortDirection","FilterChip","onRemove","X","FilterBar","activeFilters","onClearAll","onOpenFilters","hasFilters","Filter","OPERATORS","FilterBuilder","conditions","onConditionsChange","fields","addCondition","newCondition","removeCondition","c","updateCondition","updates","condition","ConditionRow","onUpdate","selectedField","selectedOperator","op","isMultiSelect","needsValue","valueAsArray","toggleValue","val","currentValues","newValues","v","removeValue","field","opt","isSelected","optionLabel","_b","DataTable","searchPlaceholder","searchableColumns","enableSearch","filterFields","enableFilters","toolbarActions","processedData","handlers","searchQuery","setSearchQuery","filterDialogOpen","setFilterDialogOpen","advancedFilters","setAdvancedFilters","defaultSearchColumn","handleSearchChange","activeFilterChips","operatorLabel","valueLabel","updated","applyAdvancedFilters","mapFilterOperator","handleApplyFilters","handleClearAllFilters","Search","FilterIcon","ArrowUpDown","sampleCampaigns","DataTableExample","campaigns","variants","spent","budget","percentage","handleExport","handleCreateNew","sum","SavedFilters","onSelectFilter","onToggleFavorite","onDeleteFilter","favoriteFilters","otherFilters","FilterMenuItem","Trash2","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","UnderlineTabsContext","useUnderlineTabs","UnderlineTabs","controlledValue","onValueChange","internalValue","setInternalValue","handleValueChange","newValue","UnderlineTabsList","UnderlineTabsTrigger","triggerValue","UnderlineTabsContent","contentValue","Textarea","toggleVariants","Toggle","TogglePrimitive","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","sizeClasses","EmptyInboxIllustration","primaryColor","secondaryColor","EmptySearchIllustration","EmptyProjectsIllustration","EmptyCalendarIllustration","ErrorStateIllustration","SuccessStateIllustration","Illustrations","ProposalTemplate","objective"],"mappings":"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","x_google_ignoreList":[15,16,17,18,19,20,21,22,23,24]}